一种基于mpeg-2标准的移动直播系统的制作方法
【专利摘要】一种基于MPEG-2标准的移动直播系统,包括移动设备端、流媒体服务器和播放器端,所述移动设备端包括视频数据采集子系统,所述视频数据采集子系统包括H264视频压缩编码模块、MPEG-2标准封包模块和线程池模块;所述的线程池模块与RTSP信令模块、RTP传输模块连接;所述流媒体服务器包括直播数据转发模块、RTCP码率控制模块、视频点播模块及RTSP信令模块,所述移动直播系统还包括RTSP信令服务器,用于发出RTSP请求开启信令或RTSP请求停止信令。本发明改进视频流封包方式和传输模式,并将其应用于手机终端,建立一个新的信令系统进行统一的管理,保证了系统的各个部分通信稳定性良好。
【专利说明】—种基于MPEG-2标准的移动直播系统
【技术领域】
[0001]本发明涉及网络直播领域的视频直播【技术领域】,尤其是一种移动直播系统。
【背景技术】
[0002]随着有线数字电视的普及,MPEG-2系统复用技术的地位日益凸显,根据传输媒介的质量不同,MPEG-2标准中定义了两种复用信息流:传输流(TS transport Stream)和节目流(PS =Program Stream)。TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。PS包由于长度是变化的,一旦丢失某一 PS包的同步信息,接收机就会进入失步状态,从而导致严重的信息丢失事件。而TS码流由于采用了固定长度的包结构,当传输误码破坏了某一 TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。因此在信道环境较为恶劣、传输误码较高时一般采用TS码流,而在信道环境较好、传输误码较低时一般采用PS码流,此外采用固定长度包格式的TS码流在多路数据复用提供充分的灵活性的同时也表现出诸多的优点,譬如动态带宽分配、可分级性、可扩展性、抗干扰性、接收机成本低廉。
【发明内容】
[0003]为了克服现有流媒体直播系统的网络丢包严重、播放速度不准确、在音频和视频时分两路发送和接收、音视频同时录像音频和视频必须分开保存成两个文件,播放时同步及速率不准确、对主流播放器不能完美支持等不足,本发明提供一种改进视频流封包方式和传输模式,并将其应用于手机终端,建立一个新的信令系统进行统一的管理,保证了系统的各个部分通信稳定性良好的基于MPEG-2标准的移动直播系统。
[0004]本发明解决其技术问题所采用的技术方案是:
[0005]—种基于MPEG-2标准的移动直播系统,包括移动设备端、流媒体服务器和播放器端,所述移动设备端包括视频数据采集子系统,所述视频数据采集子系统包括H264视频压缩编码模块、MPEG-2标准封包模块和线程池模块;所述H264视频压缩编码模块中,调用1S系统层的API接口,开启摄像功能,采集到原始的视频数据,对采集过来的每一帧进行H264编码,得到ES基本码流;所述的MPEG-2标准封包模块中,基于MPEG-2标准的视频压缩编码,将H.264编码出的ES流打包成PES流,PES流再按188B的固定长度加上辅助数据组成TS码流,然后将TS码流放到RTP缓存池中;所述的线程池模块与RTSP信令模块、RTP传输模块连接;所述RTSP信令模块中,启动一个监听RTSP信令的服务,所述RTP传输模块中,当检测到RTP缓存池里的数据不为空时,就从缓存池中读取TS码流数据,向流媒体服务器发送RTP包,直到RTP缓存池里数据为空;
[0006]所述流媒体服务器包括直播数据转发模块、RTCP码率控制模块、视频点播模块及RTSP信令模块,所述的直播数据转发模块中,将所有的视频数据转发;所述RTCP码率控制模块中,采用RTCP网际协议,对1S设备直播软件采集发送的数据包和流媒体服务器端接受到的数据包进行统计和反馈,在发生网络拥塞时,以控制和调节1S直播软件端采集发送的码率;所述视频点播模块中,对1S直播软件上传的视频文件进行保存并满足1S直播软件随时随地的回放。
[0007]所述移动直播系统还包括RTSP信令服务器,用于发出RTSP请求开启信令或RTSP请求停止信令。
[0008]进一步,所述线程池模块中,在1S设备上线时,会和RTSP信令模块通信,启动一个监听RTSP信令的服务,当收到来自远程RTSP信令服务器的RTSP请求开启信令时,向H264视频压缩编码模块发送开启摄像采集消息,进行视频采集,同时激活RTP传输模块,开辟一个RTP缓存池,用于存放MPEG-2标准封包模块所产生的TS码流数据;当收到来自远程RTSP信令服务器的RTSP请求停止信令时,向H264视频压缩编码模块发送关闭摄像采集消息,停止视频米集。
[0009]更进一步,所述视频数据采集子系统还包括RTCP控制模块:和RTCP码率控制模块建立另一条链接,配合监控网络状况,根据不同的网络状况进行实时的调整摄像头采集视频的帧率以调整发送出去的码率来适应网络的变化。
[0010]所述视频数据采集子系统还包括REGISTER模块,在软件开启时向服务器注册设备,成为一个上线的设备。
[0011]所述视频数据采集子系统还包括本地保存模块,在直播的同时,对摄像头采集编码出的TS流数据进行保存,用户能对历史录像进行观看。
[0012]本发明的技术构思为:采用RTP/UDP传输技术、线程池管理技术、流媒体分发技术、RTSP协议、TCP协议及MPEG-2视频编码标准技术,实现1S手机视频采集软件、流媒体服务器与PC端视频播放器的三者间的通信和数据传输。
[0013]TS码流传输在有线数字电视中得到了很好的应用,同时也证明了 TS码流用来传输视频数据的优越性,本发明将把MPEG-2技术应用到移动互联的网络环境中进行传输视频数据,在移动设备端用软编码的方法产生TS码流,经流媒体服务器转发进行网络直播,同样也保证TS码流与有线数字电视中一样的优越性。
[0014]本发明的有益效果主要表现在:有效减少网络丢包,播放速度更准确,播放时同步及速率良好,对主流播放器实现完美支持。
【专利附图】
【附图说明】
[0015]图1是基于MPEG-2标准的移动直播系统的总体架构框架。
[0016]图2是1S设备数据采集端模块设计图。
[0017]图3 是PES包结构图,其中,ES(Elementary Streams):原始码流;PES(PacketizedElementary Streams):分组的原始码流;Packet Start Code Prefix:包起始码前缀;StreamID:流ID ;PES Packet Length:分组码流包长度;0pt1nal PES Header:分组码流可选头部;PES Packet Data Bytes:分组码流负载数据字节;PES Scrambling Control:分组码流干扰控制符;PES Pr1rity:分组码流优先级;Data Alignment Indicator:数据校验标识;Copyright:版本;Original Or Copy:是否为副本;7Flags:7 个标识;PES HeaderData Length:分组码流头部数据长度;0pt1nal Fields:可选域;0xFF:0xFF填充字节;PTS(Presentat1n Time Stamp):显不时间标记;DTS(Decoding Time Stamp):解码时间标记;ESCR(Elementary Stream Clock Reference):原始码流参考时钟;ES Rate:原始码流速率;DSM Trick Mode:DSM 特技模式;Addit1nal Copy Informat1n:附加版本信息;PESCRC(Packetized Elementary Stream Cyclic Redundancy Check):分组码流循环冗余校验;PES Extens1n:分组码流扩展;0pt1nal Fields:可选域;5Flags:5 个标识;PES PrivateData:分组码流私有数据;Packet Header Field:分组头域;Program Packet SequenceCounter:节目包序列计数器;P-STD Buffer:P_STD 缓存;PES Extens1n Field Length:分组码流扩展域长度;PES Extens1n Field Data:分组码流扩展域数据。
[0018]图4是TS包结构图,其中,Header:头部;Payload:负载;Sync Byte:同步石马;Transport Error Indicator:传输错误标识;Payload Uint Start Indicator:负载单元起始标识;Transport Pr1rity:传输优先级;PID (Packet ID):打包ID ;Transport Scrambling Control:传输干扰控制;Adaptat1n Field Control:自适应域控制;Continuity Counter:连续计数器;Adaptat1n Field:自适应域;Adaptat1nField Length:自适应域长度;Discontinuity Indicator:非连续标识;Random AccessIndicator:随机存取标识;Elementary Stream Pr1rity Indicator:原始码流优先级标识;5Flags:5 个标识;Opt1nal Fields:可选域;Stuffing Bytes:填充字节;PCR(ProgramClock Reference):节目参考时钟;0PCR(Original Program Clock Reference):原始节目参考时钟;Splice Countdown:拼接倒计时;Transport Private Data Length:传输私有数据长度;Transport Private Data:传输私有数据;Adaptat1n Field Extenst1n Length:自适应域扩展长度;3Flags:3 个标识;Opt1nal Fields:可选域;LTW—valid flag(legaltime window):合法时间窗标识;LTW offset (legal time window):合法时间窗口偏移;Piecewise Rate:分段率;Splice Type:接头类型;DTS—next—au(decoding time stamp nextaccess unit):解码时间标记下一个存取单元。
[0019]图5是RTSP信令交互图,其中,REGISTER+MD5:摘要加密的注册信令;2000K:接收验证成功;0ΡΤΙ0Ν:可选信令;DESCRIBE:描述信令;401Unauthorized+nonce:携带一个随机数的授权验证失败信令,代号401 ;DESCRIBE+username+response:携带用户名和经过随机数加密的响应描述信令;2000K+sdp:会话描述成功信令AETUP+TranspOTt:携带端口号的建立会话信令;100Try:正在尝试;2000K+sess1n+transport:会话ID和端口信息;PLAY+sess1n:会话 ID 上播放的信令;2000K+RTP Info:RTP 传输信息;TS/RTP/UDP:用 RTP包来传输TS视频流;TEARDOWN+Sess1n:会话ID上关闭的信令。
[0020]图6是1S设备线程池管理图
【具体实施方式】
[0021]下面结合附图对本发明作进一步描述。
[0022]参照图1?图6,一种基于MPEG-2标准的移动直播系统,包括移动设备端、流媒体服务器和播放器端,所述移动设备端包括视频数据釆集子系统,所述视频数据釆集子系统包括H264视频压缩编码模块、MPEG-2标准封包模块和线程池模块;所述H264视频压缩编码模块中,调用1S系统层的API接口,开启摄像功能,釆集到原始的视频数据,对釆集过来的每一帧进行H264编码,得到ES基本码流;所述的MPEG-2标准封包模块中,基于MPEG-2标准的视频压缩编码,将H.264编码出的ES流打包成PES流,PES流再按188B的固定长度加上辅助数据组成TS码流,然后将TS码流放到RTP缓存池中;所述的线程池模块与RTSP信令模块、RTP传输模块连接;所述RTSP信令模块中,启动一个监听RTSP信令的服务,所述RTP传输模块中,当检测到RTP缓存池里的数据不为空时,就从缓存池中读取TS码流数据,向流媒体服务器发送RTP包,直到RTP缓存池里数据为空;
[0023]所述流媒体服务器包括直播数据转发模块、RTCP码率控制模块、视频点播模块及RTSP信令模块,所述的直播数据转发模块中,将所有的视频数据转发;所述RTCP码率控制模块中,采用RTCP网际协议,对1S设备直播软件采集发送的数据包和流媒体服务器端接受到的数据包进行统计和反馈,在发生网络拥塞时,以控制和调节1S直播软件端采集发送的码率;所述视频点播模块中,对1S直播软件上传的视频文件进行保存并满足1S直播软件随时随地的回放。
[0024]所述移动直播系统还包括RTSP信令服务器,用于发出RTSP请求开启信令或RTSP请求停止信令。
[0025]进一步,所述线程池模块中,在1S设备上线时,会和RTSP信令模块通信,启动一个监听RTSP信令的服务,当收到来自远程RTSP信令服务器的RTSP请求开启信令时,向H264视频压缩编码模块发送开启摄像采集消息,进行视频采集,同时激活RTP传输模块,开辟一个RTP缓存池,用于存放MPEG-2标准封包模块所产生的TS码流数据;当收到来自远程RTSP信令服务器的RTSP请求停止信令时,向H264视频压缩编码模块发送关闭摄像采集消息,停止视频米集。
[0026]更进一步,所述视频数据采集子系统还包括RTCP控制模块:和RTCP码率控制模块建立另一条链接,配合监控网络状况,根据不同的网络状况进行实时的调整摄像头采集视频的帧率以调整发送出去的码率来适应网络的变化。
[0027]所述视频数据采集子系统还包括REGISTER模块,在软件开启时向服务器注册设备,成为一个上线的设备。
[0028]所述视频数据采集子系统还包括本地保存模块,在直播的同时,对摄像头采集编码出的TS流数据进行保存,用户能对历史录像进行观看。
[0029]本实施例中,移动直播系统基本流程包括移动设备端现场视频的拍摄、压缩编码、视频数据格式封装、RTP封装和数据发送,及本地录像数据的保存;接收端接收数据、解封装、数据储存、视频信号发生,主要采用市场已有的支持RTSP协议的主流播放器,可进行二次开发扩展;流媒体服务器实现根据播放器的请求对移动设备端的视频数据进行转发,以及采用RTCP控制协议优化移动设备端的码率,自适应网络带宽,以求最佳的用户体验;RTSP信令服务器负责系统中信令控制消息的传输、转发,是系统通信协议实现的关键部分,同时又要负责对系统中各个终端的管理,完成发送端、接收端和RTSP信令服务器的交互会话。这种平台化的设计既方便了对移动设备端和播放器端的统一管理,又能增强系统整体的负载能力。移动直播系统的设计框架如图1所示。
[0030]针对移动设备端以1S手机为例,视频采集软件需要利用ffmpeg编码库将原始图像数据编码成H264视频帧并转换成TS流数据包,采用的线程池技术降低各个模块之间的耦合度,让各个模块可以独立编程,功能模块设计框图如图2所示。模块设计为:
[0031]摄像头:主要负责实时采集原始数据;预览:主要给用户观看当前采集的实时画面;H.264编码模块:将摄像头采集到的原始图像数据进行H.264压缩编码,便于在网络中传输,减少发送到网络中的码率;TS码流封装模块:基于MPEG-2标准的视频压缩编码,将H.264编码出的ES流打包成PES流,PES流再按188B的固定长度加上辅助数据组成TS码流;RTP打包:将已封装好的TS码流打包成RTP包,然后将打包好的RTP包发送给流媒体服务器,并且对已发送成功的RTP包进行统计,反馈给RTCP控制模块;3G/4G/WIFI模块:选择最好的网络条件发送RTP包。RTCP控制模块:这个模块会和流媒体的RTCP码率控制模块建立另一条链接,配合监控网络状况,根据不同的网络状况进行实时的调整摄像头采集视频的帧率以调整发送出去的码率来适应网络的变化,避免网络拥塞而导致更严重的丢包现象,提高用户的观看体验;REGISTER模块:在软件开启时向服务器注册设备,成为一个上线的设备;本地保存模块:设备在直播的同时,对摄像头采集编码出的TS流数据进行保存,为了用户能进行对历史录像进行观看,主要包含两个文件,一个是.M3U8文件,用于单码率适配流的HLS技术,项目中只用到了一种CIF码率,一个是.ts文件,存储视频数据的切片媒体文件;WIFI上传:当用户处于网络状况不良好的情况下,用户也可以先进行视频录像的录制,并且保存至本地待WiFi网络下上传至远程的HLS视频点播服务器,实现其他用户随时随地的点播录像视频;本地HLS和本地播放:建立本地HLS服务,本地回看录像文件。
[0032]从H264视频帧数据封装成TS码流需要将H264视频帧数据包裹一层PES的头,就形成了 PES包,通常PES包的长度并不固定,一般情况下一个视频帧生成一个PES包。在PES包中会加入PTS(Presentat1n Time Stamp)和DTS(Decoding Time Stamp)数据,PES包按照MPEG-2标准附上系统信息而成为TS包,进而组成完整的TS码流。PES包的起始码由包的起始码前缀和流标识构成包起始码前缀是一个固定的码字结构,它的值为0x000001,用于收发两端对PES包进行同步。流标识设定了基本码流类型,编码器所生成的每一个ES码流均被分配了唯一的识别标志ID号,依据这个ID号,可对多达几十路的视频ES流进行识别和复用。如图3所示,其中PTS和DTS为两个主要的功能域参数,其他标识位可根据不同的应用场合而有所不同,PTS用于通知解码器何时显示一个已解码的图像帧,而DTS指示何时对接受到的一帧图像的编码码流进行解码。如图4所示,PES封装成TS包时,PCR(ProgramClock Reference)作为一个非常主要的指标,指示着系统时钟本身的瞬时值得时间标签,用于解码端恢复出于编码端一致的系统时序时钟STC (System Time Clock)。PTS和DTS正是依赖STC才能在解码端以正常的速率进行解码和显示。PCR在TS包头中共占用6Bytes,其中预留6bits,其他42bits有效位又分为两部分:33bits的PCR-Base和9bits的PCR-Ext。PCR-Ease是由27MHz脉冲经300分频后的90kHz脉冲触发计数器,再对计数器状态进行取样得到的;PCR-Ext是由27MHz脉冲直接触发计数器,再对计数器状态进行取样得到的。
[0033]设备在开启时调用REGISTER模块,向RTSP信令服务器注册设备,注册成功则成为在线设备,供RTSP信令服务器调度。利用开源的VLC播放器作为PC端的支持RTSP协议的测试播放器,打开网络串流rtsp://192.168.1.167:8554/test,会向RTSP信令服务器发送RTSP请求串流信令,当RTSP信令服务器接到信令时进行验证,成功则去请求设备开启视频直播功能,如果设备接受请求,则告诉设备需要发送RTP包的目的IP和端口,也就是流媒体服务器的IP和接收端口,并返回请求成功和RTP信息给VLC播放器,这样通过中间的流媒体服务器,建立了一条从设备端到PC播放器的视频流传输链路。基本的RTSP信令交互过程如图5所不。
[0034]参照图6,采用线程池进行统一管理RTSP信令模块、H264视频的编码、TS包的封装、RTP传输模块及分配RTP缓存空间降低了各个模块的耦合度,实现更灵活,扩展性更好。在1S设备REGISTER上线时,线程池模块会和RTSP模块通信,启动一个监听RTSP信令的服务,当收到来自远程RTSP服务器的RTSP请求开启信令时,线程池进行资源分配,并向H264视频压缩编码模块发送开启摄像采集消息,进行视频采集,同时激活RTP传输模块,开辟一个RTP缓存池,用于存放MPEG-2标准封包模块所产生的TS码流数据;当收到来自远程RTSP服务器的RTSP请求停止信令时,向H264视频压缩编码模块发送关闭摄像采集消息,停止视频采集,进行线程回收;当RTP传输模块检测到RTP缓存池里的数据不为空时,就从缓存池中读取TS码流数据,向流媒体服务器发送RTP包,直到RTP缓存池里数据为空,如果收到RTSP的停止信令,则把RTP线程回收,同时回收RTP缓存区。
【权利要求】
1.一种基于MPEG-2标准的移动直播系统,包括移动设备端、流媒体服务器和播放器端,其特征在于:所述移动设备端包括视频数据采集子系统,所述视频数据采集子系统包括H264视频压缩编码模块、MPEG-2标准封包模块和线程池模块;所述H264视频压缩编码模块中,调用1S系统层的API接口,开启摄像功能,采集到原始的视频数据,对采集过来的每一帧进行H264编码,得到ES基本码流;所述的MPEG-2标准封包模块中,基于MPEG-2标准的视频压缩编码,将H.264编码出的ES流打包成PES流,PES流再按188B的固定长度加上辅助数据组成TS码流,然后将TS码流放到RTP缓存池中;所述的线程池模块与RTSP信令模块、RTP传输模块连接;所述RTSP信令模块中,启动一个监听RTSP信令的服务,所述RTP传输模块中,当检测到RTP缓存池里 的数据不为空时,就从缓存池中读取TS码流数据,向流媒体服务器发送RTP包,直到RTP缓存池里数据为空; 所述流媒体服务器包括直播数据转发模块、RTCP码率控制模块、视频点播模块及RTSP信令模块,所述的直播数据转发模块中,将所有的视频数据转发;所述RTCP码率控制模块中,采用RTCP网际协议,对1S设备直播软件采集发送的数据包和流媒体服务器端接受到的数据包进行统计和反馈,在发生网络拥塞时,以控制和调节1S直播软件端采集发送的码率;所述视频点播模块中,对1S直播软件上传的视频文件进行保存并满足1S直播软件随时随地的回放。 所述移动直播系统还包括RTSP信令服务器,用于发出RTSP请求开启信令或RTSP请求停止?目令。
2.如权利要求1所述的基于MPEG-2标准的移动直播系统,其特征在于:所述线程池模块中,在1S设备上线时,会和RTSP信令模块通信,启动一个监听RTSP信令的服务,当收到来自远程RTSP信令服务器的RTSP请求开启信令时,向Η264视频压缩编码模块发送开启摄像采集消息,进行视频采集,同时激活RTP传输模块,开辟一个RTP缓存池,用于存放MPEG-2标准封包模块所产生的TS码流数据;当收到来自远程RTSP信令服务器的RTSP请求停止信令时,向Η264视频压缩编码模块发送关闭摄像采集消息,停止视频采集。
3.如权利要求1或2所述的基于MPEG-2标准的移动直播系统,其特征在于:所述视频数据采集子系统还包括RTCP控制模块:和RTCP码率控制模块建立另一条链接,配合监控网络状况,根据不同的网络状况进行实时的调整摄像头采集视频的帧率以调整发送出去的码率来适应网络的变化。
4.如权利要求1或2所述的基于MPEG-2标准的移动直播系统,其特征在于:所述视频数据采集子系统还包括REGISTER模块,在软件开启时向服务器注册设备,成为一个上线的设备。
5.如权利要求1或2所述的基于MPEG-2标准的移动直播系统,其特征在于:所述视频数据采集子系统还包括本地保存模块,在直播的同时,对摄像头采集编码出的TS流数据进行保存,用户能对历史录像进行观看。
【文档编号】H04N21/6437GK104038844SQ201410293451
【公开日】2014年9月10日 申请日期:2014年6月25日 优先权日:2014年6月25日
【发明者】彭宏, 吴海巍, 徐志江, 孟利民, 吴涛 申请人:浙江工业大学