专利名称:对讲系统中流媒体传输的组包方法
对讲系统中流媒体传输的组包方法
技术领域:
本发明涉及一种对讲系统中流媒体传输的组包方法。
背景技术:
对讲系统的流媒体传输,一般是通过如下方式对音视频编码进行封装在音频采集端获取到原始音频数据,编码成音频帧;在视频采集端获取到原始视频数据,编码成视频帧;音频帧、视频帧以某种媒体文件封装格式进行封装,如ASF、MP4、TS等封装,得到封装后的帧。封装后的帧,具体的某一帧,可以包含完整的一帧视频帧(或音频帧);也可以包含完整的η帧视频帧(或音频帧);还可以只包含完整一帧视频帧(或音频帧)的部分数据。以TS 封装为例,可能会有如下顺序TS包I (视频帧I的一部分)、TS包2 (音频帧I的一部分)、TS包3 (视频帧I的一部分)、TS包4 (视频帧2的一部分)……也就是将音频帧、视频帧都合在TS封装中。封装后的帧,与所述视频帧、音频帧,不一定是一一对应的关系,因而不能很好地发现是视频丢帧丢包还是音频丢帧丢包问题,也就无法有针对性地对丢帧丢包进行补帧、补包处理,且现有的封装方式有效数据占有量小,冗余大,一旦出现丢帧或丢包,即出现视频马赛克、声音拖延、或声音断断续续,播放效果差。对于实时性有较强要求的对讲系统,一般采用UDP (UDP是User DatagramProtocol的简称,中文名是用户数据包协议)方式进行数据包传送。而UDP传输中,丢包率是一个必然存在的问题。丢包率在流媒体的音视频播放上有不同体现,在视频播放上体现为马赛克,在音频播放上体现为声音突然静止一小段时间,之后继续播放,即声音短时间的断断续续。视频马赛克和声音短时间断续的现象,在对讲系统中,还会影响用户使用体验,降低用户使用的舒适性。现有的一篇公开号为CN1960509,
公开日为2007-05-09的《在传输移动多媒体广播媒体数据时实现错误隔离的方法》,其应用于移动广播网络中,包括如下步骤(I)在发送端将媒体数据分割成多个独立的媒体数据单元;(2)将每个媒体数据单元的长度信息记录在所述媒体数据的包头信息中;(3)在每个媒体数据单元之间添加同步码来分隔;(4)将包含包头信息、各媒体数据单元,以及媒体数据单元之间的同步码的媒体数据发送到接收终端。该发明的发送端设备只负责发送,接收设备只负责接收,通信方式为单向通信。通过发送端的处理,为接收端提供接收出现误码的判断依据;接收端发现误码,隔离错误后,丢弃接收错误的单元,继续往下搜索。这样的处理方式,其在发送端笼统地将媒体数据进行分害I],未将音频数据和视频数据分开组包。将音频数据和视频数据合在一起组包会产生很多的冗余数据,在传输过程中占用带宽,且在发生丢包或丢帧时,无法确定是音频还是视频,因而只能笼统地全部丢弃,无法进行补包或补帧,很大可能会造成视频播放的马赛克。
发明内容本发明要解决的技术问题,在于提供一种对讲系统中流媒体传输的组包方法,其解决了对讲系统流媒体传输过程中冗余数据大、视频马赛克以及声音短时间断续的问题,提升了对讲系统流媒体传输的流畅度及播放效果。本发明是这样实现的对讲系统中流媒体传输的组包方法,包括如下步骤步骤10、在对讲系统的编码发送端,对采集到的视频进行编码,得到逐个单帧的视频帧;对采集到的音频PCM数据,按指定的时间长度分为逐个单帧的音频帧;
·
步骤20、将单帧的视频帧、音频帧,分别拆分成指定大小的复数个视频数据包、复数个音频数据包,且各视频数据包和各音频数据包均加上一数据包头后发送至对讲系统的解码端;所述数据包头包括帧标志信息,所述帧标志包括普通帧和关键帧;步骤30、解码端接收视频数据包和音频数据包,并根据数据包头判断是否丢帧或者丢包;若发现视频数据包在传输过程中包丢帧或丢包,则判定所接收到的视频数据包无法组成完整的一帧视频帧,将其定义为视频残缺帧,丢弃接收到的视频数据包,停止向视频解码器传输该视频残缺帧,并告知视频解码器暂停播放视频;之后继续接收视频数据包,并根据视频数据包的数据包头中的帧标志信息判断是否为关键帧,若为普通帧,则将该视频数据包丢弃,继续接收下一个视频数据包,直至接收到帧标志信息为关键帧且为某一帧视频帧的第一个视频数据包,不再丢弃视频数据包;若发现音频数据包在传输过程中丢帧或丢包,则进行自动补帧或自动补包。进一步地,所述数据包头还包括如下信息帧类型、帧序号、数据包序号以及该帧序号下的数据包总个数;所述帧类型包括视频和音频,所述帧序号记录视频数据包或音频数据包所属的视频帧或音频帧的序号,所述数据包序号记录视频数据包或音频数据包的序号,所述数据包总个数记录某一帧的数据包的总个数。进一步地,所述步骤30具体为根据数据包头中的帧类型区别视频数据包和音频数据包;步骤31、根据数据包头中的帧序号判断音频数据包或者视频数据包在传输过程中是否丢帧若上一个完整接收到的视频帧或音频帧的帧序号+1,等于当前接收到的视频数据包或音频数据包的帧序号,或者等于当前接收到的视频数据包或音频数据包的帧序号+帧序号最大值,则判定没有丢帧,执行步骤32进行丢包判断;否则,出现丢帧;视频数据包出现丢帧,所接收到的视频数据包无法组成完整的一帧视频帧,该帧为视频残缺帧,丢弃接收到的视频数据包,按步骤33处理;音频数据包出现丢帧,执行自动补帧,将补上的帧发送至音频解码器,完整一帧音频帧的播放,然后继续接收下一个音频数据包,返回重新执行步骤31 ;所述帧序号最大值为根据需要自定义的值;步骤32、根据数据包头中的数据包序号以及该帧序号下的数据包的总个数判断音频数据包或者视频数据包在传输过程中是否丢包当接收到的视频数据包或音频数据包的数据包序号为1,且总个数为1,则完成一帧视频帧或音频帧的接收,若为视频数据包则发送给视频解码器解码,若为音频数据包则发送给音频解码器解码,并播放出来,完成一帧视频帧或音频帧的播放;当接收到的视频数据包或音频数据包的数据包序号为1,且总个数大于1,则继续接收下一个视频数据包或音频数据包,并返回执行步骤31 ;
当接收到的视频数据包或音频数据包为所在视频帧或音频帧的第η个数据包时,n ^ 1,η为自然数,与上一个接收到的视频数据包或音频数据包序号进行对比若接收到的视频数据包或音频数据包的数据包序号为上一个数据包序号+1,则未发生丢包,接下来判断数据包序号是否等于总个数,若相等,则完成所在视频帧或音频帧的接收,若为视频数据包则发送给视频解码器解码,若为音频数据包则发送给音频解码器解码,并播放出来,完成一帧视频帧或音频帧的播放;若不相等,则继续接收下一个视频数据包或音频数据包,并返回执行步骤31 ;若接收到的视频数据包或音频数据包的数据包序号不等于上一个数据包序号+1,则发生丢包;若为视频数据包,所接收到的视频数据包无法组成完整的一帧视频帧,该帧为视频残缺帧,丢弃接收到的视频数据包,执行步骤33 ;若为音频数据包,执行自动补包,补包后,判断该帧的音频数据包总个数是否等于数据包头中的总个数信息,若是,则完成所在音频帧的接收,将其发送给音频解码器解码,并播放出来,完成一帧音频帧的播放;若不是,则继续接收下一个音频数据包,重复步骤31 ;
步骤33、停止向视频解码器传输该视频残缺帧,并告知视频解码器暂停播放视频;之后继续接收视频数据包,并根据视频数据包的数据包头中的帧标志信息判断是否为关键帧,若为普通帧,则将该视频数据包丢弃,继续接收下一个视频数据包,直至接收到帧标志信息为关键帧且为某一帧视频帧的第一个视频数据包,不再丢弃视频数据包,返回执行步骤31。进一步地,所述自动补帧具体为拷贝上一个接收到的完整音频帧的内容,制造新的一个音频帧,代替丢失的音频帧,丢失k帧音频帧,则拷贝上一完整帧k次,代替丢失的k帧音频帧,k表示丢失音频帧的数量,I ( k <音频帧的总数量。进一步地,所述自动补包具体为拷贝上一个接收到的音频数据包的内容,制造新的一个音频数据包,代替丢失的音频数据包,丢失X个音频数据包,则拷贝上一接收到的音频数据包X次,代替丢失的X个音频数据包,X表示丢失音频数据包的数量,I ( X <某一帧的数据包的总个数。本发明具有如下优点通过将流媒体数据中的视频数据和音频数据分别解码、封装及传输,提高有效数据的占有率,且为音、视频数据在传输过程中出现丢包或丢帧能够分别处理创造条件,更为重要的是,音频和视频分开处理,互不干扰,即若仅视频出现丢包或者丢帧时,音频还可以正常播放,若仅音频出现丢包或者丢帧,视频还可以正常播放;本发明还通过将视频数据包、音频数据包加上一数据包头,根据数据包头分析是否丢包或丢帧,若视频数据包出现丢包或丢帧则暂停播放该视频帧,直至接收到完整的关键视频帧恢复视频播放,将现有技术中丢包即出现马赛克现象修正为整体画面的略微顿一下,观看感受更佳,且在暂停视频播放的时候,若音频帧或音频数据包未丢失,音频数据还能正常播放;根据数据包头分析是否丢失音频帧或音频数据包,若丢失音频帧则自动补帧,若丢失音频数据包,则自动补包,音频由声音短时间的断断续续修正为基没有感受到声音的断续,听起来更加流畅,听觉感受更好。
下面参照附图结合实施例对本发明作进一步的说明。
图I为本发明对讲系统中流媒体传输的组包方法的流程示意图。
具体实施方式请参阅图I所示,一种对讲系统中流媒体传输的组包方法,包括如下步骤步骤10、在对讲系统的编码发送端,对采集到的视频进行编码,得到逐个单帧的视频帧;对采集到的音频PCM数据,按指定的时间长度分为逐个单帧的音频帧;步骤20、将单帧的视频帧、音频帧,分别拆分成指定大小的复数个视频数据包、复数个音频数据包,且各视频数据包和各音频数据包均加上一数据包头后发送至对讲系统的解码端;所述数据包头包括如下信息帧类型、帧标志、帧序号、数据包序号以及该帧序号下的数据包总个数;所述帧类型包括视频和音频,所述帧标志包括普通帧和关键帧,所述帧序号记录视频数据包或音频数据包所属的视频帧或音频帧的序号,所述数据包序号记录视频数据包或音频数据包的序号,所述数据包总个数记录某一帧的数据包的总个数; 步骤30、解码端接收视频数据包和音频数据包,并根据数据包头判断是否丢帧或者丢包;若发现视频数据包在传输过程中包丢帧或丢包,则判定所接收到的视频数据包无法组成完整的一帧视频帧,将其定义为视频残缺帧,丢弃接收到的视频数据包,停止向视频解码器传输该视频残缺帧,并告知视频解码器暂停播放视频;之后继续接收视频数据包,并根据视频数据包的数据包头中的帧标志信息判断是否为关键帧,若为普通帧,则将该视频数据包丢弃,继续接收下一个视频数据包,直至接收到帧标志信息为关键帧且为某一帧视频帧的第一个视频数据包,不再丢弃视频数据包;若发现音频数据包在传输过程中丢帧或丢包,则进行自动补巾贞或自动补包。所述步骤30具体为根据数据包头中的帧类型区别视频数据包和音频数据包;步骤31、根据数据包头中的帧序号判断音频数据包或者视频数据包在传输过程中是否丢帧若上一个完整接收到的视频帧或音频帧的帧序号+1,等于当前接收到的视频数据包或音频数据包的帧序号,或者等于当前接收到的视频数据包或音频数据包的帧序号+帧序号最大值,则判断没有丢帧,执行步骤32进行丢包判断;否则,出现丢帧;视频数据包出现丢帧,所接收到的视频数据包无法组成完整的一帧视频帧,该帧为视频残缺帧,丢弃接收到的视频数据包,按步骤33处理;音频数据包出现丢帧,执行自动补帧,将补上的帧发送至音频解码器,完整一帧音频帧的播放,然后继续接收下一个音频数据包发,返回重新执行步骤31 ;所述帧序号最大值为根据需要自定义的值;所述自动补帧,具体为拷贝上一个接收到的完整音频帧的内容,制造新的一个音频帧,代替丢失的音频帧,丢失k帧音频帧,则拷贝上一完整帧k次,代替丢失的k帧音频帧,k表示丢失音频帧的数量,I ( k <音频帧的总数量。步骤32、根据数据包头中的数据包序号以及该帧序号下的数据包的总个数判断音频数据包或者视频数据包在传输过程中是否丢包当接收到的视频数据包或音频数据包的数据包序号为1,且总个数为1,则完成一帧视频帧或音频帧的接收,若为视频数据包则发送给视频解码器解码,若为音频数据包则发送给音频解码器解码,并播放出来,完成一帧视频帧或音频帧的播放;当接收到的视频数据包或音频数据包的数据包序号为1,且总个数大于1,则继续接收下一个视频数据包或音频数据包,并返回执行步骤31 ;当接收到的视频数据包或音频数据包为所在视频帧或音频帧的第η个数据包时,n ^ 1,η为自然数,与上一个接收到的视频数据包或音频数据包序号进行对比若接收到的视频数据包或音频数据包的数据包序号为上一个数据包序号+1,则未发生丢包,接下来判断数据包序号是否等于总个数,若相等,则完成所在视频帧或音频帧的接收,若为视频数据包则发送给视频解码器解码,若为音频数据包则发送给音频解码器解码,并播放出来,完成一帧视频帧或音频帧的播放;若不相等,则继续接收下一个视频数据包或音频数据包,并返回执行步骤31 ;若接收到的视频数据包或音频数据包的数据包序号不等于上一个数据包序号+1, 则发生丢包;若为视频数据包,所接收到的视频数据包无法组成完整的一帧视频帧,该帧为视频残缺帧,丢弃接收到的视频数据包,执行步骤33 ;若为音频数据包,执行自动补包,补包后,判断该帧的音频数据包总个数是否等于数据包头中的总个数信息,若是,则完成所在音频帧的接收,将其发送给音频解码器解码,并播放出来,完成一帧音频帧的播放;若不是,则继续接收下一个音频数据包,重复步骤31 ;所述自动补包,具体为拷贝上一个接收到的音频数据包的内容,制造新的一个音频数据包,代替丢失的音频数据包,丢失X个音频数据包,则拷贝上一接收到的音频数据包X次,代替丢失的X个音频数据包,X表示丢失音频数据包的数量,I ( X <某一帧的数据包的总个数;步骤33、停止向视频解码器传输该视频残缺帧,并告知视频解码器暂停播放视频;之后继续接收视频数据包,并根据视频数据包的数据包头中的帧标志信息判断是否为关键帧,若为普通帧,则将该视频数据包丢弃,继续接收下一个视频数据包,直至接收到帧标志信息为关键帧且为某一帧视频帧的第一个视频数据包,不再丢弃视频数据包,返回执行步骤31。下面以一较佳实施例说明本发明的实现过程一种对讲系统中流媒体传输的组包方法,包括如下步骤步骤10、在对讲系统的编码发送端,对采集到的视频进行编码,得到逐个单帧的视频帧;对采集到的音频PCM (PCM中文称脉码调制)数据,按指定的时间长度分为逐个单帧的音频帧;步骤20 :将单帧的视频帧、音频帧,拆分成指定大小的复数个视频数据包、复数个音频数据包,且各视频数据包和各音频数据包均加上一数据包头后发送至对讲系统的解码端;所述数据包头包括type字段、keyflag字段、frame字段、cur_pkt字段以及totpkt字段,所述type字段记录帧类型视频或音频;所述keyflag字段为帧标志普通帧或关键帧;所述frame字段记录视频数据包或音频数据包所属的视频帧或音频帧的序号;所述cur_pkt字段记录视频数据包或音频数据包的序号,所述totpkt字段记录某一帧的数据包的总个数;步骤30、解码端在接收到视频数据包、音频数据包后,首先根据所述数据包头中的type字段区别视频数据包和音频数据包;步骤31、假定巾贞序号最大值为65536 ;
若pre_frame+l=frame 或 pre_frame+l=frame+65536,则判定没有丢巾贞,执行步骤32进行丢包判断;若pre_frame+l Φ· frame 或 pre_frame+l Φ· frame+65536,则判定出现丢巾贞;若为视频数据包出现丢帧,所接收到的视频数据包无法组成完整的一帧视频帧,该帧为视频残缺帧,丢弃接收到的视频数据包,按步骤33处理;若音频数据包出现丢帧,执行自动补帧,将补上的帧发送至音频解码器,完整一帧音频帧的播放,然后继续接收下一个音频数据包发,返回重新执行步骤31 ;所述自动补帧具体为拷贝上一个接收到的完整音频帧的内容,制造新的一个音频帧,代替丢失的音频帧,丢失k帧音频帧,则拷贝上一完整帧k次,代替丢失的k帧音频帧,k表示丢失音频帧的数量,I ( k <音频帧的总数量;所述pre_frame为上一个完整接收到的视频帧或音频帧的帧序号;步骤32、若cur_pkt=l,且totpkt=l,贝U完成一巾贞完整的视频巾贞或音频巾贞的接收,若为视频数据包则发送给视频解码器解码,若为音频数据包则发送给音频解码器解码,并播放出来,完成一帧视频帧或音频帧的播放;
若cur_pkt=l,且totpkt>l,继续接收下一个视频数据包或音频数据包,并返回执行步骤31 ;若cur_pkt>l,且 cur_pkt = pre_pkt+l,则未发生丢包,且,若 cur_pkt=totpkt,则完成所在视频帧或音频帧的接收,若为视频数据包则发送给视频解码器解码,若为音频数据包则发送给音频解码器解码,并播放出来,完成一帧视频帧或音频帧的播放;若cur_pkt>l,且cur_pkt = pre_pkt+l,则未发生丢包,且,若cur_pkt Φ totpkt,则继续接收下一个视频数据包或音频数据包,并返回执行步骤31 ;所述pre_pkt为上一个接收到的音频数据包或视频数据包的序号;若cur_pkt>l,且 cur_pkt 幸 pre_pkt+l,贝U发生丢包;若为视频数据包,所接收到的视频数据包无法组成完整的一帧视频帧,该帧为视频残缺帧,丢弃接收到的视频数据包,执行步骤33 ;若为音频数据包,执行自动补包,补包后,判断该帧的音频数据包总个数是否等于数据包头中的总个数信息,若是,则完成所在音频帧的接收,将其发送给音频解码器解码,并播放出来,完成一帧音频帧的播放;若不是,则继续接收下一个音频数据包,重复步骤31 ;所述自动补包具体为拷贝上一个接收到的音频数据包的内容,制造新的一个音频数据包,代替丢失的音频数据包,丢失X个音频数据包,则拷贝上一接收到的音频数据包X次,代替丢失的X个音频数据包,X表示丢失音频数据包的数量,I ( X <某一帧的数据包的总个数;步骤33、停止向视频解码器传输该视频残缺帧,并告知视频解码器暂停播放视频;之后继续接收视频数据包,并根据视频数据包的数据包头中的帧标志信息判断是否为关键帧,若为普通帧,则将该视频数据包丢弃,继续接收下一个视频数据包,直至接收到帧标志信息为关键帧且为某一帧视频帧的第一个视频数据包,不再丢弃视频数据包,返回执行步骤31。本发明具有如下优点通过将流媒体数据中的视频数据和音频数据分别解码、封装及传输,提高有效数据的占有率,且为音、视频数据在传输过程中出现丢包或丢帧能够分别处理创造条件,更为重要的是,音频和视频分开处理,互不干扰,即若仅视频出现丢包或者丢帧时,音频还可以正常播放,若仅音频出现丢包或者丢帧,视频还可以正常播放;本发明还通过将视频数据包、音频数据包加上一数据包头,根据数据包头分析是否丢包或丢帧,若视频数据包出现丢包或丢帧则暂停播放该视频帧,直至接收到完整的关键视频帧恢复视频播放,将现有技术中丢包即出现马赛克现象修正为整体画面的略微顿一下,观看感受更佳,且在暂停视频播放的时候,若音频帧或音频数据包未丢失,音频数据还能正常播放;根据数据包头分析是否丢失音频帧或音频数据包,若丢失音频帧则自动补帧,若丢失音频数据包,则自动补包,音频由声音短时间的断断续续修正为基没有感受到声音的断续,听起来更加流畅,听觉感受更好。虽然以上描述了本发明的具体实施方式
,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本 领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
权利要求
1.对讲系统中流媒体传输的组包方法,其特征在于包括如下步骤 步骤10、在对讲系统的编码发送端,对采集到的视频进行编码,得到逐个单帧的视频帧;对采集到的音频PCM数据,按指定的时间长度分为逐个单帧的音频帧; 步骤20、将单帧的视频帧、音频帧,分别拆分成指定大小的复数个视频数据包、复数个音频数据包,且各视频数据包和各音频数据包均加上一数据包头后发送至对讲系统的解码端;所述数据包头包括巾贞标志信息,所述巾贞标志包括普通巾贞和关键巾贞; 步骤30、解码端接收视频数据包和音频数据包, 并根据数据包头判断是否丢帧或者丢包; 若发现视频数据包在传输过程中包丢帧或丢包,则判定所接收到的视频数据包无法组成完整的ー帧视频帧,将其定义为视频残缺帧,丢弃接收到的视频数据包,停止向视频解码器传输该视频残缺帧,并告知视频解码器暂停播放视频;之后继续接收视频数据包,并根据视频数据包的数据包头中的帧标志信息判断是否为关键帧,若为普通帧,则将该视频数据包丢弃,继续接收下ー个视频数据包,直至接收到帧标志信息为关键帧且为某ー帧视频帧的第一个视频数据包,不再丢弃视频数据包; 若发现音频数据包在传输过程中丢帧或丢包,则进行自动补帧或自动补包。
2.根据权利要求I所述的对讲系统中流媒体传输的组包方法,其特征在于所述数据包头还包括如下信息帧类型、帧序号、数据包序号以及该帧序号下的数据包总个数;所述帧类型包括视频和音频,所述帧序号记录视频数据包或音频数据包所属的视频帧或音频帧的序号,所述数据包序号记录视频数据包或音频数据包的序号,所述数据包总个数记录某ー帧的数据包的总个数。
3.根据权利要求2所述的对讲系统中流媒体传输的组包方法,其特征在于所述步骤30具体为根据数据包头中的帧类型区别视频数据包和音频数据包; 步骤31、根据数据包头中的帧序号判断音频数据包或者视频数据包在传输过程中是否丢中贞 若上一个完整接收到的视频帧或音频帧的帧序号+1,等于当前接收到的视频数据包或音频数据包的帧序号,或者等于当前接收到的视频数据包或音频数据包的帧序号+帧序号最大值,则判定没有丢帧,执行步骤32进行丢包判断;否则,出现丢帧;视频数据包出现丢帧,所接收到的视频数据包无法组成完整的ー帧视频帧,该帧为视频残缺帧,丢弃接收到的视频数据包,按步骤33处理;音频数据包出现丢帧,执行自动补帧,将补上的帧发送至音频解码器,完整ー帧音频帧的播放,然后继续接收下ー个音频数据包,返回重新执行步骤31 ;所述帧序号最大值为根据需要自定义的值; 步骤32、根据数据包头中的数据包序号以及该帧序号下的数据包的总个数判断音频数据包或者视频数据包在传输过程中是否丢包 当接收到的视频数据包或音频数据包的数据包序号为1,且总个数为1,则完成一帧视频帧或音频帧的接收,若为视频数据包则发送给视频解码器解码,若为音频数据包则发送给音频解码器解码,并播放出来,完成ー帧视频帧或音频帧的播放; 当接收到的视频数据包或音频数据包的数据包序号为1,且总个数大于1,则继续接收下一个视频数据包或音频数据包,并返回执行步骤31 ; 当接收到的视频数据包或音频数据包为所在视频帧或音频帧的第n个数据包吋,n > 1,n为自然数,与上一个接收到的视频数据包或音频数据包序号进行对比 若接收到的视频数据包或音频数据包的数据包序号为上ー个数据包序号+1,则未发生丢包,接下来判断数据包序号是否等于总个数,若相等,则完成所在视频帧或音频帧的接收,若为视频数据包则发送给视频解码器解码,若为音频数据包则发送给音频解码器解码,并播放出来,完成ー帧视频帧或音频帧的播放;若不相等,则继续接收下ー个视频数据包或音频数据包,并返回执行步骤31 ; 若接收到的视频数据包或音频数据包的数据包序号不等于上ー个数据包序号+1,则发生丢包;若为视频数据包,所接收到的视频数据包无法组成完整的ー帧视频帧,该帧为视频残缺帧,丢弃接收到的视频数据包,执行步骤33 ;若为音频数据包,执行自动补包,补包后,判断该帧的音频数据包总个数是否等于数据包头中的总个数信息,若是,则完成所在音频帧的接收,将其发送给音频解码器解码,并播放出来,完成一帧音频帧的播放;若不是,则继续接收下ー个音频数据包,重复步骤31 ;步骤33、停止向视频解码器传输该视频残缺帧,并告知视频解码器暂停播放视频;之后继续接收视频数据包,井根据视频数据包的数据包头中的帧标志信息判断是否为关键帧,若为普通帧,则将该视频数据包丢弃,继续接收下ー个视频数据包,直至接收到帧标志信息为关键帧且为某ー帧视频帧的第一个视频数据包,不再丢弃视频数据包,返回执行步骤31。
4.根据权利要求I至3任意项所述的对讲系统中流媒体传输的组包方法,其特征在于所述自动补帧具体为拷贝上一个接收到的完整音频帧的内容,制造新的ー个音频帧,代替丢失的音频帧,丢失k帧音频帧,则拷贝上一完整帧k次,代替丢失的k帧音频帧,k表示丢失音频帧的数量,I ^ k <音频帧的总数量。
5.根据权利要求I至3任意项所述的对讲系统中流媒体传输的组包方法,其特征在于所述自动补包具体为拷贝上一个接收到的音频数据包的内容,制造新的ー个音频数据包,代替丢失的音频数据包,丢失X个音频数据包,则拷贝上一接收到的音频数据包X次,代替丢失的X个音频数据包,X表示丢失音频数据包的数量,I ^ X <某ー帧的数据包的总个数。
全文摘要
本发明提供一种对讲系统中流媒体传输的组包方法,首先在编码发送端,对采集到的视频进行编码,得到逐个单帧的视频帧;对采集到的音频PCM数据,按指定的时间长度分为逐个单帧的音频帧;其次,将各视频数据包和各音频数据包均加上一数据包头后发送往解码端,最后解码端分析数据包头,若丢失视频数据包时暂停播放,直至收到完整的视频关键帧,若丢失音频数据包或音频帧,则进行自动补包或自动补帧,且在暂停视频播放的时候,若音频帧或音频数据包未丢失,音频数据还能正常播放。本发明解决了对讲系统流媒体传输过程中冗余数据多、视频马赛克以及声音短时间断续的问题,提升了对讲系统流媒体传输的流畅度及播放效果。
文档编号H04N7/14GK102740064SQ20121019814
公开日2012年10月17日 申请日期2012年6月15日 优先权日2012年6月15日
发明者吴振文, 林洪艺 申请人:福建星网视易信息系统有限公司