一种嵌入数字水印的视频流媒体传输信道的差错控制方法
技术领域
本发明涉及一种基于视频流媒体的差错控制方法,属于信息通讯领域。
背景技术
原始视频流数据量很大在网络传输之前通常需要经过编码压缩,提高发送效率。视频编码的主要思想之一是利用序列图像之间的相关性,以某帧图像作为参考,通过估计得出的位移矢量对图像中物体的移动加以描述。例如,通常我们使用I帧、P帧、B帧等一般性描述帧间相关性。在这三种帧类型中,P帧通常以前面的I帧为参考,B帧通常以前面的I帧或P帧以及后续的P帧作为参考。这种帧间相关性决定了码流数据的重要性差异。例如,当参考帧丢失时,以之作为编码依据的压缩帧将无法被完整还原。因此,在网络传输中,有必要对诸如参考帧等视频解码贡献较大的部分加以保护,这便是视频流媒体差错控制的基本思想。
从数据组织上来说,经过编码后的视频流是结构化的,具有明显的分层结构。诸如序列、图像、片组、片、NALU、宏块等概念。它们具有逐级包含的关系,每一层封装都会引入相关的附加信息。这些头信息的丢失,会导致解码器在数据解析过程中出现错误,错误处理及恢复机制也会导致图像质量的暂时下降。在H.264标准中,算法框架被划分为两个主要层次,即视频编码层(Video Coding Layer,VCL)和网络抽象层(Network AbstractLayer,NAL)。VCL层主要完成视频编码的任务,而NAL层则对编码的数据内容进行封装,以适应网络打包传输的需求。NAL层的基本语法结构为NAL单元(NALU),根据所包含内容的不同有多种类别,基本可归为参数信息和视频数据两大类。标准只对NALU的一般性排列顺序做了规定,因此存在多种合法情况,一个典型的H.264 NALU序列。其中:
SPS:序列参数集,包含码流的层级、图像顺序等信息;
PPS:图像参数集,包含解码方法、分片参数等信息;
上述两类NALU为一组图像编码的全局参数,如果丢失将导致该部分无法解码。
SEI:辅助增强信息,丢失对解码造成的影响甚微。
SLICE:包含具体的图像数据,I型为帧内编码模式;P型为前向预测模式,依赖于I或P;B型为双向预测模式,依赖于对应的I、P。从依赖关系上可见,对于图像还原的影响程度为I>P>B。SLICE类型数据丢失仅对还原后的图像质量有影响,不会影响解码状态。
可见,为了提高视频质量,可以从数据内容和码流结构两方面入手,这是差错控制的第一步,也可以称为数据重要性估计。当确定了要在通信中保护的内容之后,便涉及到具体保护手段的选择,即是差错控制的第二步。根据在整体***中实施位置的不同,视频流媒体差错控手段可以分为下面几个大类:
1、编码器层面:该类方法侧重于对编码核心算法的改进,以限制因数据丢失而造成的错误积累,典型方法为多描述编码。2、解码器层面:该类方法侧重于在已发生数据丢失的情况下,如何对图像进行恢复与重建,也叫做错误隐藏技术。3、传输层面:该类方法侧重于数据传输过程中的差错控制,通常属于网络控制的一部分,与流媒体***的关系最为密切。
由于编、解码器层面的差错控制需要深入到视频压缩的核心算法,因此对于改进编码标准的学术研究贡献较大,但较少应用于工程项目中。而在流媒体通信***中,传输层差错控制仍是主要的研究方向。在传输层差错控制的几种主要方法中,基于最大次数的限制性重传是以次数为限制条件的重传,简单的限定了丢失NALU的最大重传次数N,若N次重传后数据仍未被正确接收,则放弃重传。该方法的优点是可恢复所有的错误,并且实现简单,其缺点在于需要发送反馈信息,且当通信链路状况很差时,数据流的实时性下降很大,传输效率低。综合考虑,本发明利用重传方法设计了一个适合视频流媒体数字水印传输的差错控制机制。
发明内容
本发明的目的是针对目前数字水印没有根据数据的作用及贡献程度对视频码流进行划分,没有建立信息正确接收率与重传次数的关系的问题,提供一种嵌入数字水印的视频流媒体传输信道的差错控制方法。
一种嵌入数字水印的视频流媒体传输信道的差错控制方法,实现视频流媒体数字水印传输信道的差错控制方法的步骤为:
步骤一、读取要发送的视频流媒体;
步骤二、在视频编码层压缩编码过程中嵌入水印或在原始域嵌入水印后再压缩编码;
步骤三、在网络抽象层NAL将数据流分片为NALU,NALU为NAL单元;
步骤四、根据数据的重要性将NALU分为四种类型,分别为TYPE1至TYPE4,不同类型赋予不同的Φ值,0<Φ<1;Φ为预设的数据最小正确接收率;
1)若其类型为TYPE1,则令Φ=0.95;
2)若其类型为TYPE2,则令Φ=0.90;
3)若其类型为TYPE3,则令Φ=0.85;
4)若其类型为TYPE4,则令Φ=0.60;
步骤五、把NALU按照类型分片为四种网络传输数据包;
对于每种网络传输数据包,根据Φ值计算每个数据包的最大重传次数retrans,retrans为正整数;详细过程如下:
A、估算当前链路误报率p,在发送端根据加权公式:
计算链路误包率p;
B、根据公式:
计算P(n),P(n)为在n次重传以内单独数据包被正确接收的概率,n为大于1的整数;
根据公式
计算Φ(n),Φ(n)为预设的在n次重传以内数据最小正确接收率;framesize为帧长度;MTU为网络最大传输单元;
为连续封包承载的个数;
C、根据Φ(n)和P(n),计算当前NALU的最大重传次数retrans;
步骤六、发送第一个数据包;
步骤七、等待该数据包的确认信息,判断是否超时,若未超时,执行步骤十,否则执行步骤八;
步骤八、判断是否重传次数<retrans;若重传次数<retrans,执行步骤九,否则执行步骤十;
步骤九、重传该数据包;
步骤十、判断是否还有下一个数据包,若是,则执行步骤十一,否,则执行步骤十二;
步骤十一、发送下一个数据包;然后返回执行步骤七继续进行判断;
步骤十二、结束。
本发明的工作原理是通过设定载体码流中各类信息的保护参数,能够实现在实时性与可靠性之间做出调节,即兼顾视频流畅性和数字水印传输的效率,并提升传输信道的性能。
本发明的优点是:维护了视频流媒体的视频质量同时又兼顾了数字水印传输的可靠性;根据数据的作用及贡献程度对视频码流进行划分,以实现更精细的控制;改进限制性重传工具,建立信息正确接收率与重传次数的关系,可有效降低数据保护的时间代价,实现可调节的部分可靠差错控制。
附图说明
图1是本发明方法的流程示意图;
图2是本发明实施方式二中的步骤六的程序流程图。
具体实施方式
具体实施方式一:下面结合图1说明本实施方式,
一种嵌入数字水印的视频流媒体传输信道的差错控制方法,实现视频流媒体数字水印传输信道的差错控制方法的步骤为:
步骤一、读取要发送的视频流媒体;
步骤二、在视频编码层压缩编码过程中嵌入水印或在原始域嵌入水印后再压缩编码;
步骤三、在网络抽象层NAL将数据流分片为NALU,NALU为NAL单元;
步骤四、根据数据的重要性将NALU分为四种类型,分别为TYPE1至TYPE4,不同类型赋予不同的Φ值,0<Φ<1;Φ为预设的数据最小正确接收率;
5)若其类型为TYPE1,则令Φ=0.95;
6)若其类型为TYPE2,则令Φ=0.90;
7)若其类型为TYPE3,则令Φ=0.85;
8)若其类型为TYPE4,则令Φ=0.60;
步骤五、把NALU按照类型分片为四种网络传输数据包;
对于每种网络传输数据包,根据Φ值计算每个数据包的最大重传次数retrans,retrans为正整数;详细过程如下:
A、估算当前链路误报率p,在发送端根据加权公式:
计算链路误包率p;
B、根据公式:
计算P(n),P(n)为在n次重传以内单独数据包被正确接收的概率,n为大于1的整数;
根据公式
计算Φ(n),Φ(n)为预设的在n次重传以内数据最小正确接收率;framesize为帧长度;MTU为网络最大传输单元;
为连续封包承载的个数;
C、根据Φ(n)和P(n),计算当前NALU的最大重传次数retrans;
步骤六、发送第一个数据包;
步骤七、等待该数据包的确认信息,判断是否超时,若未超时,执行步骤十,否则执行步骤八;
步骤八、判断是否重传次数<retrans;若重传次数<retrans,执行步骤九,否则执行步骤十;
步骤九、重传该数据包;
步骤十、判断是否还有下一个数据包,若是,则执行步骤十一,否,则执行步骤十二;
步骤十一、发送下一个数据包;然后返回执行步骤七继续进行判断;
步骤十二、结束。
具体实施方式二:下面结合图2说明本实施方式,本实施方式为对实施方式一的进一步说明,
实施方式一中步骤六中计算最大重传次数retrans的步骤为:
第0步:定义p为链路数据误包率,nalu_size为NALU的长度,pkt_size为为最大网络分组数据包长度,Φ为预设的数据最小正确接收率,定义fragments为分组的个数,定义retrans为要求得的重传次数,定义sum为一个网络分组数据包被正确接收的概率,定义i为循环次数控制变量;
第1步:令retrans为0;令sum为1-p;计算一个NALU包被划分为多少个网络分组数据包
向上取整;
第2步:判断是否正确接收的概率sumfragments<Φ,若是,则执行第3步,否,则执行第6步;
第3步:令sum的值为0,令retrans的值加1,令i的值为0;
第4步:判断是否循环次数控制变量i<retrans,若是,则执行第5步,否,则返回到第2步;
第6步:输出retrans;
第7步:结束。
算法具体描述如下:
具体实施方式三:本实施方式是对实施方式一的进一步说明,
实施方式一中步骤四中的TYPE1至TYPE4划分依据为:
TYPE1:SEI,第一组同步信息{SPS、PPS、IDR};
TYPE2:自第二组开始的后续同步信息{SPS、PPS、IDR};
TYPE3:含有数字水印信息的SLICE;
TYPE4:不含数字水印信息的SLICE;
码流中的第一组同步信息必须被无误接收,否则所有SLICE数据都将被解码器丢弃即参考帧丢失,无法解码,直至收到一组完整的同步信息{SPS、PPS、IDR}为止,从TYPE1到TYPE4,数据的重要程度逐级降低。
下面简要说明一下分类依据:为了能够正确解码,码流中的第一组同步信息必须被无误接收,否则所有SLICE数据都将被解码器丢弃(参考帧丢失,无法解码),直至收到一组完整的同步信息{SPS、PPS、IDR}为止;而SEI由于只在码流起始处出现一次,占总体比重很小,保护代价低,故也将其归入TYPE1类中。TYPE1类是保障视频流运行的必要条件,因此也是流媒体数字水印传输信道建立的基础。TYPE2类包含除第一组外后续的所有同步信息。第一组SPS、PPS、IDR正确接收后,后续的同步信息如果丢失,也可根据上次正确接收的同步信息完成解码,不过会造成图像质量的严重下降。TYPE3为携带数字水印信息的SLICE构成,如果丢失将导致接收信息的不完整或错误。TYPE4为不含数字水印信息SLICE,丢失会对图像质量造成影响,该影响可在接收到下一组同步信息后得到恢复。SLICE(without message)的丢失不会影响数字水印信息的传输。基于上述分类框架,通过为每一类数据指定不同强度的差错控制策略,可以有效降低数据保护的时间代价。