一种动态调整FEC冗余度的流媒体传输方法与流程

文档序号:11147249阅读:2063来源:国知局
一种动态调整FEC冗余度的流媒体传输方法与制造工艺

本发明涉及流媒体技术领域,具体涉及一种动态调整FEC冗余度的流媒体传输方法。



背景技术:

流媒体(Streaming Media)指在互联网中使用流式传输技术的连续时基媒体,如:音频、视频或多媒体文件。流媒体的出现极大地方便了人们的工作和生活。由于网络流媒体的传输需要实时和低延时等特点,目前很大部分都是通过实时传输协议RTP(Real-time Transport Protocol)来传输流媒体。实时传输协议RTP(Real-time Transport Protocol)是一个网络传输协议,RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量。RTP通常采用UDP来实现数据在IP网络上的传输。因为UDP协议的传输过程没有重传机制,所以很容易造成传输数据的延时或者丢失。流媒体在传输过程中的数据丢失往往会造成视频花屏,画面静止,音视频不同步,声音卡顿,播放的不流畅等问题。由于RTP的不可靠性,需要加入一种处理机制,在很多的应用中一般采用加入FEC包,FEC(Forward Error Correction)前向纠错是一种通过在信息源增加冗余信息实现丢包恢复的一种措施。现有的向前纠错技术中,FEC的编码冗余度一般采用固定值,编码冗余度不能根据具体的网络环境做出对应的调整,这样占用的网络带宽较高。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的不足,提供一种动态调整FEC冗余度的流媒体传输方法,克服现有技术流媒体传输过程中FEC的编码冗余度采用固定值,FEC编码冗余度不能根据具体网络环境做出调整,占用网络带宽较高的缺陷。

本发明为解决上述技术问题所采用的技术方案为:

一种动态调整FEC冗余度的流媒体传输方法,包括步骤:

A1、流媒体发送端根据初始FEC编码冗余度Z0,对M个RTP报文数据包进行FEC编码,形成FEC纠错数据包;

A2、将所述RTP报文数据包和所述FEC纠错数据包发送到流媒体接收端;

A3、流媒体接收端接收到所述RTP报文数据包和所述FEC纠错数据包后,如果确认出现丢包,则利用所述FEC纠错数据包和所述RTP报文数据包恢复丢失的RTP报文;

A4、流媒体接收端将当前RTP报文信息和丢包信息通过UDP协议方式发送到流媒体发送端;

A5、流媒体发送端根据所述当前RTP报文信息和所述丢包信息计算实时丢包率P,根据公式计算并确定下一次传送M个RTP报文数据包时的FEC纠错数据包数量N,其中N取最小整数。

根据本发明的实施例,所述步骤A1包括步骤:所述FEC纠错数据包的数量由公式确定。

根据本发明的实施例,所述步骤A5包括步骤:所述实时丢包率P按照公式

计算得到,其中rtp_num为当前接收到的RTP报文数据包数量,rtp_start为RTP报文数据包的起始编号,rtp_end为RTP报文数据包的结束编号,fec_start为FEC纠错数据包的起始编号,fec_end为FEC纠错数据包的结束编号,fec_num为当前接收到的FEC纠错数据包数量。

实施本发明的技术方案,具有以下有益效果:本发明不仅能利用FEC向前纠错技术自动纠正RTP网络传输过程中的丢包,并且能根据实时传输丢包率和最少占用网络带宽的原则动态调节RTP数据的FEC编码的冗余度,提高了流媒体的传输质量。

附图说明

下面通过参考附图并结合实例具体地描述本发明,本发明的优点和实现方式将会更加明显,其中附图所示内容仅用于对本发明的解释说明,而不构成对本发明的任何意义上的限制,在附图中:

图1为本发明流媒体发送端和接收端的数据交互过程示意图;

图2为本发明流媒体发送端的处理流程图;

图3为本发明流媒体接收端的处理流程图;

图4为本发明流媒体接收端通过UDP反馈给发送端的数据组织结构图。

具体实施方式

本发明动态调整FEC冗余度的流媒体传输方法,包括步骤:

A1、流媒体发送端根据初始FEC编码冗余度Z0,对M个RTP报文数据包进行FEC编码,形成FEC纠错数据包;

A2、将所述RTP报文数据包和所述FEC纠错数据包发送到流媒体接收端;

A3、流媒体接收端接收到所述RTP报文数据包和所述FEC纠错数据包后,如果确认出现丢包,则利用所述FEC纠错数据包和所述RTP报文数据包恢复丢失的RTP报文;

A4、流媒体接收端将当前RTP报文信息和丢包信息通过UDP协议方式发送到流媒体发送端;

A5、流媒体发送端根据所述当前RTP报文信息和所述丢包信息计算实时丢包率P,根据公式计算并确定下一次传送M个RTP报文数据包时的FEC纠错数据包数量N,其中N取最小整数。

根据本发明的实施例,所述步骤A1包括步骤:所述FEC纠错数据包的数量由公式确定。

根据本发明的实施例,所述步骤A5包括步骤:所述实时丢包率P按照公式

计算得到,其中rtp_num为当前接收到的RTP报文数据包数量,rtp_start为RTP报文数据包的起始编号,rtp_end为RTP报文数据包的结束编号,fec_start为FEC纠错数据包的起始编号,fec_end为FEC纠错数据包的结束编号,fec_num为当前接收到的FEC纠错数据包数量。

如图1、图2、图3和图4所示,

S1:流媒体发送端根据初始FEC编码冗余度Z0,对M个RTP报文数据包进行FEC编码,形成FEC纠错数据包;

S2:将RTP报文数据包和FEC纠错数据包发送到流媒体接收端;

S3:流媒体发送端接收流媒体接收端发送的反馈数据,并且算出流媒体接收端的实时丢包率P;

S4:根据计算得到的实时丢包率P,计算FEC编码冗余度Z,根据关系式(为了最少占用网络带宽,传输数据的冗余度最小,N取符合不等式条件的最小整数)可以得到关系式(N取最小整数)计算得出对接下来M个RTP数据包进行FEC编码需要的N个FEC纠错包;

S5:对接下来读取的M个RTP报文数据包进行FEC编码,得到N个FEC纠错数据包,接着执行S2。

流媒体接收端:

S6:流媒体接收端接收RTP报文数据包和FEC纠错数据包;

S7:对RTP报文数据包和FEC纠错数据包解封装;

S8:如果确认出现丢包,则利用FEC纠错数据包和RTP报文数据包恢复丢失的RTP报文;

S9:流媒体接收端统计当前RTP报文信息和丢包信息,采用UDP传输方式发送到流媒体发送端。

进一步讲述S9中流媒体接收端反馈的丢包信息的反馈方式:

S10:从接收到的RTP报文数据包可以得到当前接收到的RTP报文数据包的个数rtp_num,从解封装后的FEC编码数据可以得到当前参与FEC编码的RTP报文数据包的起始编号rtp_start、结束编号rtp_end、该组的FEC纠错数据包的起始编号fec_start、结束编号fec_end、收到的FEC纠错数据包个数fec_num,然后把六个数据按照rtp_start,rtp_end,fec_start,fec_end,rtp_num,fec_num的顺序排列,每个占16bit大小的格式,用UDP协议的方式发送给流媒体接收端,当流媒体接收端接收到反馈的UDP报文后,从里面依次读取出rtp_start,rtp_end,fec_start,fec_end,rtp_num,fec_num,则可以计算得到当前接收端的实时丢包率

如图1所示,流媒体发送端通过RTP发送原始码流和对应的FEC数据到流媒体数据接收端,流媒体接收端接收数据,并且根据接收到的数据进行FEC向前纠错解码恢复传输过程中丢失的数据包,同时采用UDP的方式把当前的RTP接收状况反馈给流媒体发送端,流媒体发送端根据接收到的反馈信息得到接收端的丢包率P并且动态调整当前FEC编码冗余度Z,根据更新的Z来确定接下来要编码的一组原始RTP数据对应FEC数据的个数,实现在丢包率为P的网络环境下,可以通过FEC向前纠错解码实现丢包的恢复。

图2是流媒体发送端的具体处理流程:

S201:流媒体发送端以最初始FEC编码冗余度Z0,读取一组M个原始RTP1数据包并进行FEC编码得出当前组的N0个FEC纠错包,其中Z0、M和N0符合关系式所以其中N0为整数;

S202:把这N0个FEC包FEC1封装成另外一路RTP包RTPFEC,并且发送RTP1数据包和RTPFEC数据包到流媒体接收端;

S203:流媒体发送端接收到流媒体接收端反馈的针对发送RTP1数据包和RTPFEC数据包的RTP报文信息和丢包信息统计出丢包率P1

S204:根据计算得到的P1去计算接下来发送的RTP2原始包所需的FEC纠错包的数量N1,根据关系式(为了最少占用网络带宽,传输数据的冗余度最小,N取符合条件的最小整数)得到关系式(N取最小整数)计算得出N1,对接下来读取M个原始RTP2数据进行FEC编码得出N1个FEC纠错包;

S205:接着执行S202。

图3是流媒体接收端的具体处理流程:

S301:流媒体接收端接收到RTP1-R和RTPFEC-R(由于网络丢包的存在不一定是原来的RTP1和RTPFEC);

S302:根据接收到的RTPFEC-R解封装得到FEC1-R

S303:把RTP1-R和FEC1-R用FEC解码方法去尝试解码得到原始发送的RTP1,如果能正常解码则把RTP1送到流媒体处理模块,如果解码失败则把RTP1-R送到流媒体处理模块;

S305:得到RTP1-R和RTPFEC-R之后,流媒体接收端需统计当前组RTP1数据和RTPFEC-R的丢包信息,用UDP的传输方式发送给到流媒体发送端;

S306:继续执行S301。

图4描述的是S305流媒体接收端通过UDP反馈的相关数据安排方式:

S401:从RTP1-R可以得到当前接收到的RTP数据的个数rtp_num,从RTPFEC-R可以得到当前参与FEC编码的RTP数据的起始编号rtp_start、结束编号rtp_end、该组的FEC的起始编号fec_start、结束编号fec_end、接收到的FEC数据个数fec_num,然后把四个数据按照rtp_start、rtp_end、fec_start、fec_end、rtp_num、fec_num的顺序排列,每个字段占16bit大小的格式用UDP的方式发送给流媒体接收端。当流媒体接收端接收到反馈的UDP报文后,从里面依次读取出rtp_start,rtp_end,fec_start,fec_end,rtp_num,fec_num,则可以计算得到当前接收端的实时丢包率

本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1