《RTSP协议转换RTMP直播协议.docx》由会员分享,可在线阅读,更多相关《RTSP协议转换RTMP直播协议.docx(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、R T S P 协 议转换 R T M P 直播协议RTSP协议也是广泛使用的直播/点播流媒体协议,最近实现了一个RTSP协议转换 RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP直播数据,实时 转换为RTMP直播协议,推送到FMS、Red5 wowza server等RTMP服务器,以实现flash 观看RTSP直播源的需求。程序同时也具备从FLV文件获取输入数据并转换RTMP直播。 实现的思路分享如下。要点分析首先,程序的主要目的,是从多路RTSP输入源中提取AAC编码的音频和H.264编码 视频数据,并生成RTMP数据包,然后组装RTMP推送协议,并发往RTMP服务器
2、。在发 送的过程中,要求可以从RTSP数据源切换到具有相同h.264和aac编码的FLV文件中, 并不影响RTMP直播。因此,本程序的关键点有以下部分:1.RTSP直播流的读取3 .FLV文件数据的提取及与RTSP直接的切换和衔接4 .RTMP数据包封装5 .RTMP推送协议有了关键点,就可以一项一项的去分析。设计思路根据上面分析的要点,首先要选择RTSP直播协议的读取。我们不需要从零做起,网 络上有很多和RTSP相关的开源项目可以使用或借鉴,我选择了 Live555oLive555是一个跨平台的流媒体解决方案,主要支持RTSP协议,好像也支持SIP (这 个也是我马上研究的重点,之后会写文章
3、研究SIP相关的技术实现)。Live555实现了 RTSP 包括服务器-客户端的整套结构,是很知名的一个开源项目。网上有很多关于Live555学 习和使用的文章,我就不具体介绍了。H.264和AAC数据的分析处理,这个对于从没做过相关项目开发的人来说,应该是一个难点,主要是相关概念的理解。好在我一直在做这块,也比较好弄。第4和第5点,可以参照文章“RTMP协议发送H.264编码及AAC编码的音视频(), 实现摄像头直播”的技术方法,来加以实现。因此,主要需要处理的就是RTSP直播流数 据的获取,以及对其中H.264和AAC编码数据的处理。于是可以画出大体结构如下:RtmpThread的主要工作
4、就是发送音频数据流的解码信息头和视频数据流的解码信息 头,并不断从DataBufferQueue中取出数据,封装为RTMP Packet,发送出去。流程如下 列代码所示:(process_buf_queue_,即是上图中的 DataBufferQueue)逻辑与实现L?程序框架和模块说明.主要接口RtspCapture是我的程序里管理RTSP直播数据流和分析处理的类,接口很重要,基本上这 个设计就可以。他所使用的Iive555变量,这里ourRTSPCIient实际就是RTSPCIient的简单继承.RtspCapture调用Iive555的主要流程A.首先,在RtspCapture构造函数初始化B.在StartRtsp函数中,创建RtspCIient,并发送describe命令,开始获取sdp。回调函 数就是continueAfterDESCRIBEo在这里创建MediaSession,之后再发送setup命令,等, 这些都可以在Iive555的例子以及网上的说明中看到。C.还有一个关键点,就是要在自己的线程循环中,调用Iive555 environment的事件循环, 就像这样.对rtsp回调h264数据的分析处理这里演示了,如何从rtsp回调的h264数据中,提取sps和pps信息。里面的parse函数, 是Iive555自带的。调用方式