Android MediaPlayer中的RTSP(一):RTSP简介
背景: 我在最近的项目中遇到了使用Android的MediaPlayer来进行RTSP播放的场景。但对于RTSP这种流媒体协议,其实Android原生的播放器支持得不是很好,所以有许多需要修改的地方。 本文主要简单介绍RTSP协议及其在MediaPlayer中的层级,后续会记录下在项目中遇到的具体情况及对应的修改。 RTSP播放器架构 播放器的架构很清晰, apk–>MediaPlayer->media_server–>厂商自己的Player(和NuPalyer/StagefrightPlayer一个层级)–>FFmpeg 如下图。 因为走Android MediaPlayer的流程,拉流的部分是使用FFmpeg实现的,所以FFmpeg是最核心的部分,主要的修改,也即是针对FFmpeg里RTSP部分的修改,以适配项目的特殊性。 ##RTSP协议简介## ###1、简介### RTSP属于应用层协议,被用于控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色,对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据。 因为RTSP的作用相当于流媒体服务器的远程控制,所以客户端需要和服务器进行命令交互,以到达建立/释放连接及远程控制的目的。命令连接基于TCP,一般使用554端口。而数据传输可以选择TCP或UDP来传送,这个需要看服务端的支持情况及客户端的选择。