Mircacast协议介绍---------应用层rtsp协议
前面说到 Miracast协议框架,以及重点讲了发现的过程,物理层链接链接的过程,IP分配的过程,如果获取对端IP等等。下面我们来讲讲,拿到对端ip之后,如果建立应用层的链接,如果和传输数据,解码播放。
1,先说说rtsp协议,rtsp协议是实时的流媒体传输协议,用作视频的点播、直播拉流推流,开源的支持rtsp框架有live555,ffmpeg,vlc等等。技术上rtsp协议分为控制协议和视频传输协议两部分。
1.1,rtsp是基于tcp的,类似http一样,以可见的报文的方式传输信息,像http一样,rtsp定义了很多方法,比如option、description、setup、play、 terndown 等等。但是要知道miracast 的rtsp协议是经过修改的。详细的请看mircast的开发者白皮书。
1.2,rtp数据流传输协议,像其他视频流传输协议一样,rtsp数据流也是采用了rtp协议,支持rtp标准的协议头,封包。rtp一般使用udp协议,也可以采用tcp协议,端口是rtsp协议在setup的方法中指定的。
1.3,rtcp协议,是rtp一个姊妹协议,对rtp协议补充,比如视频质量控制,流量控制,丢包重传,这个协议在mircast里面是可选的,有的手机需要支持rtcp,有的不需要。他的端口一般是rtp端口的加1.。
2,建立了rtsp协议,就可以拿到对端的视频流,经过测试miracast视频一般是mpeg2-ts封包,ts封包可以包含音频和视频,音频一般是aac编码,视频是264编码,也可以只有音频或者只有视频。如果直接使用rtp封包,需要使用两路rtp数据链接,一路传音频,一路传视频。下面的 附件是网上摘抄的关于ts封包的说明。
3,拿到到ts数据流,知道了封包格式和特点,就可以解包了,解包后获得h264视频流和aac音频流,然后分别解码播放。
附件ts 说明:
Ts层: ts包大小固定为188字节,ts层分为三个部分:ts header、adaptation field、payload。ts header固定4个字节;adaptation field可能存在也可能不存在,主要作用是给不足188字节的数据做填充;payload是pes数据。
ts header
sync_byte 8b 同步字节,固定为0x47