2022年2022年流媒体服务器设计文档 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年2022年流媒体服务器设计文档 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年流媒体服务器设计文档 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 Live555 流媒体服务器 -设计文档1 设计目的以 Live555 为平台搭建流媒体服务器,支持H.264 视频流和G.729 音频流两种实时流的直播功能,支持VLC 、MPLAYER等标准流媒体客户端软件进行RTSP请求播放。2 系统框架Live555 流媒体服务器接收到来自网络的RTSP 请求后,遵循RSTP 协议的标准,处理建立 RTSP 会话的信令流程,并分配相应的资源,建立对应的媒体通道。开始播放后,从摄像头和麦克风采集的音视频数据,视频数据在BF561 子板上进行H.264 编码,并将编码后的视频流通过SPORT 口,交由 BF536 底板上的Live555 流媒体服务器处
2、理;音频数据直接由Live555 流媒体服务器进行G.729 编码。Live555 流媒体服务器根据RTSP协商的结果, 将编码后的音视频数据封装为RTP 数据,发送到请求的客户端。系统的整体流程如下图1 所示:H264视频流G.729音频流视频采集与编码H.264算法视频采集与编码G.729算法Live555 流媒体服务器H.264视频模块G.729音频模块RTSP请求RTP 音视频流流媒体播放器VLC/MPLAYER图 1 系统流程说明3 系统设计在 live555 源码的基础上,进行二次开发。Live555 支持 H.264 源视频文件的流化,需添加对实时流直播的支持;已有优化的G.72
3、9 编码库,需要添加在live555 中添加对G.729音频编码格式的支持。3.1 RTSP 服务器参考 live555 源码 mediaserver/目录下的live555MediaServer.cpp , 实现媒体流请求的点播名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 2 功能。客户端(Client)与服务器(Server)之间的 RTSP信令交互过程如下图2 所示:OPTIONresponseDESCRIB reque
4、stDESCRIBresponseSETUP requestPLAY requestPLAYresponseClientServerMediaSETUPresponseSETUPresponseSETUP requestTEARDOWN requestTEARDOWN responseOPTION request图 2 RTSP 信令交互过程1RTSP连接的建立过程RTSPServer 类用于构建一个RTSP 服务器,该类内部定义了一个RTSPClientSession 类,用于处理单独的客户会话。首先创建 RTSP 服务器 (具体实现类是DynamicRTSPServer) ,在创建过程中,
5、先建立setUpOurSocket(ourSocket) 在 TCP 的 554(或 8554)端口进行监听,然后把连接处理函数句柄(RTSPServer:incomingConnectionHandler) 和 socket 句柄传给任务调度器(taskScheduler)。任务调度器把socket 句柄放入后面select 调用中用到的socket 句柄集 (fReadSet)中,同时将 socket 句柄和 incomingConnectionHandler句柄关联起来。接着,主程序开始进入任务调度器的主循环(doEventLoop) ,在主循环中调用系统函数select 阻塞,等待网络
6、连接。当 RTSP客户端输入 (rtsp:/192.168.0.1/test.264) 连接服务器时, select返回对应的scoket,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 3 进而根据前面保存的对应关系,可找到对应处理函数句柄,这里就是前面提到的incomingConnectionHandler 了。在 incomingConnectionHandler 中创建了RTSPClientSession,开始对这个客户
7、端的会话进行处理。2DESCRIBE 请求消息处理过程RTSP 服务器收到客户端DESCRIBE 请求后, 根据请求 URL(rtsp:/192.168.0.1/test.264) ,找到对应的流媒体资源,返回响应消息。 live555 中的 ServerMediaSession 类用来处理会话中描述,它包含多个(音频或视频)的子会话描述(ServerMediaSubsession)。RTSP 服务器收到客户端的连接请求,建立了 RTSPClientSession 类,处理单独的客户会话。在建立RTSPClientSession 的过程中,将新建立的socket 句柄( clientSocke
8、t)和 RTSP请求处理函数句柄RTSPClientSession:incomingRequestHandler传给任务调度器,由任务调度器对两者进行一对一关联。当客户端发出RTSP请求后,服务器主循环中的select 调用返回,根据socket 句柄找到对应的 incomingRequestHandler ,开始消息处理。先进行消息的解析,如果发现请求是DESCRIBE 则进入 handleCmd_DESCRIBE 函数。 根据客户端请求URL 的后缀 (如 test.264) ,调用成员函数DynamicRTSPServer:lookupServerMediaSession 查找对应的流媒
9、体信息ServerMediaSession。若 ServerMediaSession 不存在,但是本地存在test.264 文件,则创建一个新的ServerMediaSession。在创建 ServerMediaSession 过程中, 根据文件后缀 .264 创建一个子会话描述 H264VideoFileServerMediaSubsession 。最后由 ServerMediaSession 完成组装响应消息中的 SDP 信息(SDP 组装过程见下面的描述),然后将响应消息发给客户端,完成一次消息交互。SDP 消息组装过程:ServerMediaSession 负责产生会话公共描述信息,子
10、会话描述由H264VideoFileServerMediaSubsession产生。 H264VideoFileServerMediaSubsession 在其父类成员函数OnDemandServerMediaSubsession:sdpLines() 中生成会话描述信息。在sdpLines()实现里面,创建一个虚构(dummy) 的 FramedSource(具体实现类为H264VideoStreamFramer) 和 RTPSink (具体实现类为 SimpleRTPSink 和 H264VideoRTPSink ) ,最后调用setSDPLinesFromRTPSink(.) 成员函数生
11、成子会话描述。3SETUP 请求消息处理过程RTSPClientSession 类用于处理单独的客户会话。其类成员函数handleCmd_SETUP() 处理客户端的SETUP 请求。 调用 parseTransportHeader()对 SETUP 请求的传输头解析,调用子名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 4 会话 (这里具体实现类为OnDemandServerMediaSubsession)的 getStrea
12、mParameters() 函数获取流媒体发送传输参数。将这些参数组装成响应消息,返回给客户端。客户端发送两个SETUP 请求,分别用于建立音频和视频的RTP 接收。4PLAY 请求消息处理过程RTSPClientSession 类成员函数handleCmd_PLAY() 处理客户端的播放请求。首先调用子会话的 startStream(),内部调用 MediaSink:startPlaying() ,然后是MultiFramedRTPSink:continuePlaying() ,接着调用MultiFramedRTPSink:buildAndSendPacket()。buildAndSendP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年流媒体服务器设计文档 2022 流媒体 服务器 设计 文档
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内