一种基于公共移动通信的视频包多链路接收和播放方法技术

技术编号:4268803 阅读:244 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种基于公共移动通信网络的视频无线多链路接收和播放方法,建立多个套接字(socket)多线程接收视频数据包,并对I帧包的分包以及非I帧包进行插包缓存,形成正常的数据帧,实现完整视频数据帧的多个分包通过多链路传输后的接收播放功能,解决无线视频图像马赛克现象和流畅性问题,并保证视频的实时性。

【技术实现步骤摘要】

本专利技术涉及视频通信领域,尤其涉及一种基于公共数字移动通信网络的视频包多链路接收和播放方法。
技术介绍
无线视频传输技术广泛应用于安防监控领域中。其通过无线信道传送摄像监控器 获取的视频图像,大大降低了安防监控设备的安装布线成本。 当前无线视频传输若采用单链路传输,受实际无线带宽影响,会因传输速率不够 大而造成大量视频帧丢失或传输延迟,从而造成视频播放时图像马赛克现象或者不够流畅 且延迟大;若采用多链路传输,可解决传输带宽限制问题,但因视频关键帧需要分包传输和 接收,如果处理不当,会因关键帧接收不完全或者数据帧顺序不当,仍然会造成视频图像马 赛克或者视频延迟问题。
技术实现思路
为克服无线视频传统传输接收处理方式以上缺点,本专利技术提出一种基于公共数字 移动通信网络的视频包多链路接收方法,其特征在于包括如下步骤 步骤A、建立多个套接字(socket)接收视频数据包; 步骤B、任意套接字收到视频数据包,判断是否是正确的数据包,如果是跳转到步 骤C ;否则丢弃该包数据,并跳转步骤E ; 步骤C、启动插包子过程,对I帧包的分包以及非I帧包进行插包缓存,形成正常的 数据帧; 步骤D、通知播放线程有视频分包插入链表,跳转步骤E ; 步骤E、判断套接字是否已关闭,如果没有关闭,跳转至步骤B ;否则跳转步骤F ; 步骤F、结束; 其中所述插包子过程包括 步骤C1、比较待插入帧的包序号与下一播放帧包序号(nNextFrameNo)的差值,如 果差值小于预定阈值跳转到步骤C2 ; 步骤C2、检查动态链表的视频包总个数,如果小于链表最大长度值,则将丢包标志 标记为FALSE,跳转到步骤C3 ; 步骤C3、生成一个新的视频包结构,根据插入帧的包序号查找插入位置,直接插入 到动态有序链表中,并将动态有序链表个数加1 。 其中,步骤C2中如果视频包个数大于等于链表最大长度值则将丢包标志标记为 TRUE,并且动态链表丢包子过程,该动态链表丢包子过程包括 步骤C21、分析动态链表中的最小序号包,如果最小序号包是I帧分包,若包序号 大于等于nNextFrameNo,将nNextFrameNo标记为该包序号力口 1 ;否则nNextFrameNo保持不 变,删除链表中所有已经到达的该I帧分包,同时链表中元素个数减该已经到达的该I帧分包的数目,标记丢包标志为TRUE,跳转到步骤C22 ; 如果最小序号包是非I帧包,若包序号大于等于nNextFrameNo,则将nNextFrameNo 标记为该包序号加1 ;否则nNextFrameNo保持不变,并将该包从链表中删除,同时链表中元素 个数减l,标记bCropFrame为TRUE ; 步骤C22分析动态顺序链表,如果最小序号包是非I帧包,若该包包序号大于等于 nNextFrameNo,则将nNextFrameNo标记为该包序号力口 1 ;否则nNextFrameNo保持不变,并 将该包从链表中删除,同时链表中元素个数减l,标记丢包标记为TRUE,跳转到步骤C23 ; 如果最小序号包是I帧包,标记丢包标记为FALSE ; 步骤C23、动态链表丢包子过程结束。 本专利技术还提出一种相应的对多路接收的数据进行播放的方法,包括 步骤a判断是否收到有视频包插入的通知,是的话跳转步骤b,否则跳转步骤f ; 步骤b进行播放设置的初始化,其中,下一播放帧包序号(nNextFrameNo)初始化 为0,同时标记播放标志为TRUE ;丢包标志为FALSE ; 步骤c如果播放标记为FALSE,清空动态顺序链表,跳转步骤f ;如果播放标记为 TRUE,跳转步骤C; 步骤d从动态链表中读取包序号为nNextFrameNo的数据,判断读取的该帧的包个 数,执行步骤e ; 步骤e如果返回包个数为l,则数据帧可能是非I帧包或者分包总数是l的一个I 帧包,将该包直接进行播放跳转到步骤d ; 如果返回包个数大于l,则数据帧是I帧,将这几个包顺序进行播放,跳转到步骤 d ; 如果返回包个数为0,则数据帧为空,跳转步骤f ; 步骤f停止本轮次播放。 上述方法实现完整视频数据帧的多个分包通过多链路传输后的接收处理功能,解 决无线视频图像马赛克现象和流畅性问题,并保证视频的实时性,相对于现有技术具有显 著的进步。附图说明 图1为基于公共数字移动通信网络的视频多链路接收方法实现原理框图; 图2为多路接收视频帧插包子过程的原理框图; 图3为动态缓存链表丢包子过程的原理框图; 图4为动态缓存链表数据包定位子过程的原理框图; 图5为本专利技术实施例的视频帧播放方法的原理框图; 图6为本专利技术实施例的动态缓存链表取包子过程的原理框图。具体实施例方式以下结合附图,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施 例仅用以解释本专利技术,并不用以限定本专利技术。 在本具体实施例中,各方法以及子过程可以采用程序模块的形式由嵌入式的计算机系统实现。设置如下的常量参数 动态有序链表最大包数目MAXLISTELEMENT = 50 ;其用于限制链表的最大大小; 清空视频包缓存门限值THRESHOLCREMOVEALL = 100 ; 上述设置仅仅用于说明本实施例,本领域技术人员可以根据需要在使用方法时设 置上述动态有序链表最大包数目、清空视频包缓存门限值为其它值。 为便于进行说明,用nNextFrameNo代表下一个播放帧的包序号;用bCropFrame代 表丢包标志,其可被设为TRUE或FAULSE ;用bPlay代表播放标志。 在本实施例的接收方法中,由于I帧单帧数据量大,所以在传输过程中需要进行 分包处理,其它类型的帧单帧数据量不大,不需要分包处理。 采用带头结点的动态有序链表作为视频数据包缓存结构,该动态有序链表 最大长度不能超过MAXLISTELEMENT个,一旦新到达的包因缓存使链表最大长度超过 MAXLISTELEMENT个,则启动丢包程序。 由于多链路同时接收数据包,因此,在对动态链表如果有数据变动操作时应该进 行互斥上锁操作。 对任何收到的视频包都要先动态生成一个链表元素,如果是非I帧包,则按照包 序号大小顺序插入到动态链表中,如果是I帧分包,则按照包序号大小以及分包序号大小 顺序插入到动态链表中; 在本实施例的播放方法中,从动态有序链表中读取数据时,直接查找链表中序号 为nNextFrameNo的包,如果是非I帧,直接取出该包元素,并返回读取的包数目为1 ;如果 是I帧分包,先判断该I帧的所有分包是否已经全部到达,若没有全部到达则直接退出,并 返回包数目为O,否则先取出全部该I帧分包,并返回读取的包数目为该I帧分包总数。 基于公共数字移动通信网络的视频多链路接收算法实现原理 步骤101建立多个套接字(socket)接收视频数据包; 步骤102任意套接字收到视频数据包,判断是否是正确的数据包,如果是跳转到 步骤103 ;否则丢弃该包数据,并跳转步骤105 ; 步骤103启动插包子过程,对I帧包的分包以及非I帧包进行插包缓存,形成正常 的数据帧;如果该包是非I帧包,则按照包序号大小顺序插入到动态链表中,如果是I帧分 包,则按照包序号大小以及分包序号大小顺序插入到动态链表中; 步骤104通知播放线程有视频分包插入链表,跳转本文档来自技高网...

【技术保护点】
一种基于公共数字移动通信网络的视频包多链路接收方法,其特征在于包括如下步骤:    步骤A、建立多个套接字(socket)接收视频数据包;    步骤B、任意套接字收到视频数据包,判断是否是正确的数据包,如果是跳转到步骤C;否则丢弃该包数据,并跳转到步骤E;    步骤C、启动插包子过程,对I帧包的分包以及非I帧包进行插包缓存,形成正常的数据帧;    步骤D、通知播放线程有视频分包插入链表,跳转步骤E;    步骤E、判断套接字是否已关闭,如果没有关闭,跳转至步骤B;否则跳转步骤F;    步骤F、结束;    其中所述插包子过程包括:    步骤C1、比较待插入帧的包序号与下一播放帧包序号(nNextFrameNo)的差值,如果差值小于预定阈值跳转到步骤C2;    步骤C2、检查动态链表的视频包总个数,如果小于动态链表最大包数目,则将丢包标志标记为FALSE,跳转到步骤C3;     步骤C3、生成一个新的视频包结构,根据插入帧的包序号查找插入位置,直接插入到动态有序链表中,并将动态有序链表个数加1。

【技术特征摘要】
一种基于公共数字移动通信网络的视频包多链路接收方法,其特征在于包括如下步骤步骤A、建立多个套接字(socket)接收视频数据包;步骤B、任意套接字收到视频数据包,判断是否是正确的数据包,如果是跳转到步骤C;否则丢弃该包数据,并跳转到步骤E;步骤C、启动插包子过程,对I帧包的分包以及非I帧包进行插包缓存,形成正常的数据帧;步骤D、通知播放线程有视频分包插入链表,跳转步骤E;步骤E、判断套接字是否已关闭,如果没有关闭,跳转至步骤B;否则跳转步骤F;步骤F、结束;其中所述插包子过程包括步骤C1、比较待插入帧的包序号与下一播放帧包序号(nNextFrameNo)的差值,如果差值小于预定阈值跳转到步骤C2;步骤C2、检查动态链表的视频包总个数,如果小于动态链表最大包数目,则将丢包标志标记为FALSE,跳转到步骤C3;步骤C3、生成一个新的视频包结构,根据插入帧的包序号查找插入位置,直接插入到动态有序链表中,并将动态有序链表个数加1。2. 如权利要求1所述的方法,其特征在于步骤C2中如果视频包个数大于等于链表最 大包数目则将丢包标志标记为TRUE,并且动态链表丢包子过程,该动态链表丢包子过程包 括步骤C21、分析动态链表中的最小序号包,如果最小序号包是I帧分包,若包序号大于 等于nNextFrameNo,将nNextFrameNo标记为该包序号力口 1 ;否则nNextFrameNo保持不变, 删除链表中所有已经到达的该I帧分包,同时链表中元素个数减该已经到达的该I帧分包 的数目,标记丢包标志为TRUE,跳转到步骤C22 ;如果最小序号包是...

【专利技术属性】
技术研发人员:吴长树王峰杨裕欢沈俊林欢王华驰姚永强汪新春叶光明
申请(专利权)人:武汉虹信通信技术有限责任公司
类型:发明
国别省市:83[中国|武汉]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利