CN112187817B - 流媒体数据传输方法、装置、设备及存储介质 - Google Patents

流媒体数据传输方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112187817B
CN112187817B CN202011070562.5A CN202011070562A CN112187817B CN 112187817 B CN112187817 B CN 112187817B CN 202011070562 A CN202011070562 A CN 202011070562A CN 112187817 B CN112187817 B CN 112187817B
Authority
CN
China
Prior art keywords
redundancy
streaming media
basic
packet
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011070562.5A
Other languages
English (en)
Other versions
CN112187817A (zh
Inventor
吴创豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Yealink Network Technology Co Ltd
Original Assignee
Xiamen Yealink Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Yealink Network Technology Co Ltd filed Critical Xiamen Yealink Network Technology Co Ltd
Priority to CN202011070562.5A priority Critical patent/CN112187817B/zh
Publication of CN112187817A publication Critical patent/CN112187817A/zh
Application granted granted Critical
Publication of CN112187817B publication Critical patent/CN112187817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64784Data processing by the network
    • H04N21/64792Controlling the complexity of the content stream, e.g. by dropping packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供了一种流媒体数据传输方法、装置、设备及存储介质,其中,应用于流媒体发送设备,其中,该方法包括:接收流媒体接收设备发送的当前丢包率,根据当前丢包率,计算得到基础冗余度,根据基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度;根据当前原始包数量,计算出额外补偿冗余度,根据平滑后的基础冗余度与额外补偿冗余度,得到目标冗余度,根据目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包。本申请具有如下有益效果:在发包频率不确定,丢包率波动较大的情况下,充分保证有足够的目标冗余度,并且根据目标冗余度向流媒体接收设备发送流媒体数据包及冗余包,提高了流媒体数据包还原的成功率。

Description

流媒体数据传输方法、装置、设备及存储介质
技术领域
本申请涉及通信技术领域,具体而言,涉及一种流媒体数据传输方法、装置、设备及存储介质。
背景技术
流媒体是指将一连串的媒体数据压缩后,以流的方式在网络中分段传送的影音文件。在实时流媒体传输领域,由于高实时性的要求,一般采用传输层协议(User DatagramProtocol,UDP)发送实时流媒体数据包,采用UDP传输实时流媒体数据包,会出现数据包丢包的问题。
现有技术中,通常采用前向纠错(Forward Error Correction,FEC)技术来还原丢失的数据包,主要是通过接收端的丢包率反馈来决定下一次冗余度。
然而,由于网络丢包率具备不确定性,往往会出现丢包率在某段时间内波动过大的情况,仅仅依靠实时的丢包率来估算FEC冗余度具有滞后性,不符合“前向纠错”的预期,导致流媒体数据包还原的成功率低下。另外,在相同的冗余度下,FEC还原成功率也受到发包频率(参与FEC编码的原始包)的影响,原始包数量越少,FEC还原成功率越低。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种流媒体数据传输方法、装置、设备及存储介质,以解决现有技术中丢包率在波动过大,使得冗余度波动过大,从而使得流媒体数据还原的成功率低下的问题。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请一实施例提供了一种流媒体数据传输方法,应用于流媒体发送设备,所述方法包括:
接收流媒体接收设备发送的当前丢包率,以及根据所述当前丢包率,计算得到基础冗余度;
根据所述基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度;
根据当前原始包数量,计算出额外补偿冗余度;
根据所述平滑后的基础冗余度与所述额外补偿冗余度,得到目标冗余度;
根据所述目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包。
可选地,所述根据所述基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度,包括:
若所述基础冗余度大于所述历史基础冗余度,则将所述基础冗余度作为所述平滑后的基础冗余度;
若所述基础冗余度小于所述历史基础冗余度,则采用一阶指数平滑算法,根据所述基础冗余度和所述历史基础冗余度,获取所述平滑后的基础冗余度。
可选地,所述根据所述平滑后的基础冗余度与所述额外补偿冗余度,得到目标冗余度,包括:
获取所述平滑后的基础冗余度和所述额外补偿冗余度的和值;
根据所述和值获取所述目标冗余度。
可选地,所述根据所述和值获取所述目标冗余度,包括:
获取所述和值和预设最小冗余度中的最大值;
获取所述最大值和预设最大冗余度中的最小值;
将所述最小值作为所述目标冗余度。
可选地,所述根据当前原始包数量,计算出额外补偿冗余度,包括:
根据所述当前原始包数量和预设最大包数,计算得到所述额外补偿冗余度。
可选地,所述根据所述目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包,包括:
根据所述目标冗余度获取冗余包数;
根据所述冗余包数对所述流媒体数据包进行前向纠错FEC编码,获取所述冗余包;
向所述流媒体接收设备发送所述流媒体数据包及所述冗余包。
可选地,所述采用一阶指数平滑算法,根据所述基础冗余度和所述历史基础冗余度,获取所述平滑后的基础冗余度,包括:
采用如下一阶指数平滑公式,计算得到所述平滑后的基础冗余度;
SmoothBaseRR1=BaseRR*ALPHA+(1-ALPHA)*SmoothBaseRR2
其中,SmoothBaseRR1表示所述平滑后的基础冗余度,BaseRR表示所述基础冗余度,ALPHA表示一阶指数平滑系数,0.0<ALPHA≤1.0,SmoothBaseRR2表示历史基础冗余度。
可选地,所述根据所述当前丢包率,计算得到基础冗余度,包括:
采用公式BaseRR=PLR/(1.0-PLR),计算得到所述基础冗余度;
其中,BaseRR表示所述基础冗余度,PLR表示所述当前丢包率。
可选地,所述根据所述当前原始包数量和预设最大包数,计算得到所述额外补偿冗余度,包括:
采用公式ExtraRR=(Kmax-K)/1000,计算得到所述额外补偿冗余度;
其中,ExtraRR表示所述额外补偿冗余度,Kmax表示所述预设最大包数,K表示所述当前原始包数量。
第二方面,本申请另一实施例提供了一种流媒体数据传输装置,所述装置包括:
接收模块,用于接收流媒体接收设备发送的当前丢包率,处理模块,用于根据所述当前丢包率,计算得到基础冗余度;
获取模块,用于根据所述基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度;
所述处理模块,还用于根据当前原始包数量,计算出额外补偿冗余度;根据所述平滑后的基础冗余度与所述额外补偿冗余度,得到目标冗余度;
发送模块,用于根据所述目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包。
可选地,所述获取模块,具体用于:
若所述基础冗余度大于所述历史基础冗余度,则将所述基础冗余度作为所述平滑后的基础冗余度;
若所述基础冗余度小于所述历史基础冗余度,则采用一阶指数平滑算法,根据所述基础冗余度和所述历史基础冗余度,获取所述平滑后的基础冗余度。
可选地,所述处理模块,具体用于:
获取所述平滑后的基础冗余度和所述额外补偿冗余度的和值;
根据所述和值获取所述目标冗余度。
可选地,所述处理模块,具体用于:
获取所述和值和预设最小冗余度中的最大值;
获取所述最大值和预设最大冗余度中的最小值;
将所述最小值作为所述目标冗余度。
可选地,所述处理模块,具体用于:
根据所述当前原始包数量和预设最大包数,计算得到所述额外补偿冗余度。
可选地,所述发送模块,具体用于:
根据所述目标冗余度获取冗余包数;
根据所述冗余包数对所述流媒体数据包进行前向纠错FEC编码,获取所述冗余包;
向所述流媒体接收设备发送所述流媒体数据包及所述冗余包。
可选地,所述获取模块,具体用于:
采用如下一阶指数平滑公式,计算得到所平滑后的述基础冗余度;
SmoothBaseRR1=BaseRR*ALPHA+(1-ALPHA)*SmoothBaseRR2
其中,SmoothBaseRR1表示所述平滑后的基础冗余度,BaseRR表示所述基础冗余度,ALPHA表示一阶指数平滑系数,0.0<ALPHA≤1.0,SmoothBaseRR2表示历史基础冗余度。
可选地,所述处理模块,具体用于:
采用公式BaseRR=PLR/(1.0-PLR),计算得到所述基础冗余度;
其中,BaseRR表示所述基础冗余度,PLR表示所述当前丢包率。
可选地,所述处理模块,具体用于:
采用公式ExtraRR=(Kmax-K)/1000,计算得到所述额外补偿冗余度;
其中,ExtraRR表示所述额外补偿冗余度,Kmax表示所述预设最大包数,K表示所述当前原始包数量。
第三方面,本申请另一实施例提供了一种流媒体发送设备,包括:处理器、存储器和收发器,所述存储器存储有所述处理器可执行的计算机程序,当所述流媒体发送设备运行时,所述处理器、所述存储器和所述收发器之间通过总线通信,以实现第一方面任一项所述的流媒体数据传输方法。
第四方面,本申请另一实施例提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时以实现第一方面任一项所述的流媒体数据传输方法。
本申请提供了一种流媒体数据传输方法、装置、设备及存储介质,其中,应用于流媒体发送设备,其中,该方法包括:接收流媒体接收设备发送的当前丢包率,根据当前丢包率,计算得到基础冗余度;根据基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度;根据当前原始包数量,计算出额外补偿冗余度;根据平滑后的基础冗余度与额外补偿冗余度,得到目标冗余度;根据目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包。本申请具有如下有益效果:在发包频率不确定,丢包率波动较大的情况下,充分保证有足够的目标冗余度,并且根据目标冗余度向流媒体接收设备发送流媒体数据包及冗余包,提高了流媒体数据包还原的成功率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请提供的FEC分组的示意图;
图2示出了本申请实施例提供的流媒体数据包传输系统的架构示意图;
图3示出了本申请实施例提供的流媒体数据传输方法的流程示意图一;
图4示出了本申请实施例提供的额外补偿冗余度的示意图;
图5示出了本申请实施例提供的流媒体数据传输方法的流程示意图二;
图6示出了本申请实施例提供的流媒体数据传输方法的流程示意图三;
图7示出了本申请实施例提供的流媒体数据传输装置的结构示意图;
图8示出了本申请实施例提供的流媒体发送设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在介绍本申请的技术方案之前,首先对本申请涉及的专业名词进行解释:
前向纠错(Forward Error Correction,FEC):指数据在传输之前预先按一定的算法进行编码,加入适量的冗余数据,在接收端按照相应算法对接收到的数据进行解码,从而找出在传输过程中产生的错误码并将其纠正的技术。
在实时流媒体传输领域,FEC技术主要用于丢包重建,对于实时流媒体传输,由于有高实时性的要求,所以一般采用基于传输层协议(User Datagram Protocol,UDP)的网络传输,典型的如实时传输协议(Real-time Transport Protocol,RTP)、RTP控制协议(RTPControl Protocol,RTCP)技术。UDP传输的缺点就是不可靠,存在丢包的风险,所以出现了丢包重传与前向纠错技术。由于丢包重传技术会带来较大的时延,对于实时性要求比较苛刻的应用场景,前向纠错技术更具有价值。其中,纠删技术是前向纠错技术的其中一种。
纠删码(Erasure coding,EC):是一种冗余编码,它将数据分割成片段,并预先按一定的算法生成一个或多个冗余数据片段,在通过网络传输后,即使出现了丢包,接收端仍然有机会可以重建原始数据。典型的纠删技术有RS编码,又称Reed-Solomon Codes(译为里德-所罗门码),它的基本特征是给定K个数据包和一个正整数R,生成R个冗余数据包。对于任意的K和R,从K个原始数据包和R个冗余数据包中任意取出K块就能解码出所有的原始数据。
FEC冗余度:是决定FEC还原成功率的一个重要因素,通常有固定冗余度及动态冗余度两种。在网络实时传输领域,由于待发送报文频率的不确定性及网络质量的不确定性,大多采用动态冗余度方案。其中,冗余度为冗余数据包的包数与冗余基数的比值,冗余数据包的包数为R,冗余基数为K。
传统的FEC冗余度估算方案仅仅依靠丢包率进行计算,而没有考虑FEC编码算法的特点,在相同冗余度的情况下,冗余基数K值越小,数据还原的成功率越低。图1示出了本申请提供的FEC分组的示意图,如图1所示,在单位时间内,第一个FEC分组和第二个FEC分组中流媒体数据包的包数相同,分别为100个。
若K=10的FEC分组中:10个包冗余1个;K=100的FEC分组中:100个包冗余10个,冗余度都是10%。
当K=10时,100个包拆分为10个FEC分组,每个分组是10个包冗余1个包,则当每个分组都恰好都丢1个包(在图1中丢失的包标记为未填充的方块)的情况下,是100%的还原成功率。但现实网络中,连续丢包的概率是比较高的,比如有可能出现第1分组只丢1个包,第2分组丢了两个包,第3分组未丢包。在这种情况下,总丢包数仍然为3个,但却有一个分组无法还原了。
而当K=100时,100个包为同一分组,同样是10%的冗余度,在丢包率相同的情况下,哪怕出现连续丢10个包的情况,也能正常还原出来。
由此可知,当冗余基数K值越大,FEC还原成功率越高,而K值的大小取决于单位时间内待发送的流媒体数据包的包数,这个数字是动态变化的,而“单位时间”不宜设置过大,过大会引入过多的时延,不利于实时传输场景,因此,可以发现发包频率不确定。
另外,网络丢包率具备不确定性,往往会出现丢包率在某段时间内波动过大的情况,仅仅依靠实时的丢包率来估算FEC冗余度具有滞后性,不符合“前向纠错”的预期,导致流媒体数据包还原率低下。其中,当流媒体数据包还原率低下时,说明存在流媒体数据包丢失,流媒体数据包丢失可能会造成视频卡顿的问题,影响用户体验。
基于此,本申请实施例提供了一种流媒体数据传输方法,在发包频率不确定,丢包率波动较大的情况下,充分保证有足够的目标冗余度,并且根据目标冗余度向流媒体接收设备发送流媒体数据包及冗余包,提高了流媒体数据包还原的成功率。
图2示出了本申请实施例提供的流媒体数据包传输系统的架构示意图,如图2所示,流媒体数据包传输系统包括:通信连接的流媒体发送设备101和流媒体接收设备102,其中,流媒体接收设备102在接收到流媒体发送设备101发送的流媒体数据包时可以计算出当前丢包率,然后将当前丢包率发送给流媒体发送设备101,流媒体发送设备101根据当前丢包率计算得到基础冗余度,然后根据基础冗余度和历史基础冗余度进行快升缓降的半平滑处理得到平滑后的基础冗余度,并根据当前原始包数量计算出额外补偿冗余度,以及根据平滑后的基础冗余度和额外补偿冗余度,得到目标冗余度,根据目标冗余度,向流媒体接收设备102发送流媒体数据包及冗余包。
当然,流媒体发送设备101可以作为流媒体接收设备102以接收流媒体数据包,流媒体接收设备102也可以作为流媒体发送设备101以发送流媒体数据包。
其中,流媒体发送设备101可以为终端设备,例如,手机、平板电脑、笔记本电脑、台式电脑等,还可以为服务器;同样地,流媒体接收设备102也可以为终端设备,例如,手机、平板电脑、笔记本电脑、台式电脑及服务器,本实施例对此不做特别限定。
下面结合上述图2示出的流媒体数据包的传输系统中描述的内容,对本申请实施例提供的流媒体数据传输方法进行说明。
图3示出了本申请实施例提供的流媒体数据传输方法的流程示意图一,本实施例的执行主体可以为流媒体发送设备,如图3所示,该流媒体数据传输方法包括:
S201、接收流媒体接收设备发送的当前丢包率,以及根据当前丢包率,计算得到基础冗余度。
其中,当前丢包率可以为上一次流媒体发送设备向流媒体接收设备发送流媒体数据包对应的丢包率,丢包率用于指示丢失的流媒体数据包在所发送的流媒体数据包中数据包数量的占比。
在上一次流媒体接收设备接收到流媒体数据包时,可以计算得到该流媒体数据包对应的当前丢包率,并将当前丢包率发送给流媒体发送设备,流媒体发送设备根据接收到的当前丢包率,可以计算得到基础冗余度,以便流媒体发送设备根据基础冗余度获取下一次发送流媒体数据包时的目标冗余度,以提高流媒体数据包还原的成功率。
可选地,根据当前丢包率,计算得到基础冗余度,包括:
采用公式BaseRR=PLR/(1.0-PLR),计算得到基础冗余度;
其中,BaseRR表示基础冗余度,PLR表示当前丢包率,将1减去当前丢包率的值作为除数,当前丢包率为被除数,采用当前丢包率除以1减去当前丢包率的值得到基础冗余度。
S202、根据基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度。
其中,历史基础冗余度可以为上一次平滑处理后的基础冗余度,也就是说,在上一次流媒体发送设备基于历史基础冗余度向流媒体接收设备发送流媒体数据包和冗余包。
快升缓降的半平滑处理指的是对基础冗余度和历史基础冗余度进行平滑处理,以得到平滑后的基础冗余度,并且该半平滑处理为快升慢降的平滑处理。
具体地,当基础冗余度大于历史基础冗余度时,可以将基础冗余度赋值给平滑后的基础冗余度,即实现了快升,这样避免由于冗余包过少而使得流媒体数据包还原的成功率低下;当基础冗余度小于历史冗余度时,则可以根据基础冗余度和历史冗余度进行平滑处理,获取平滑后的基础冗余度,即实现了缓降,这样避免将基础冗余度直接赋值给平滑后的基础冗余度,使得平滑后的基础冗余度和历史基础冗余度相比,有一个相对平滑的过渡,不会出现基础冗余度突低的现象,其中,基础冗余度突低可能使得冗余包过少而造成流媒体数据包还原成功率低。
S203、根据当前原始包数量,计算出额外补偿冗余度。
其中,当前原始包数量可以为上一次流媒体发送设备向流媒体接收设备发送流媒体数据包的包数。
额外补偿冗余度用于补偿当前原始包数量过少时流媒体数据包还原的成功率较低的损失。也就是说,在发送流媒体数据包时需要考虑额外补充冗余度,可以提高流媒体数据包还原的成功率。
可选地,根据当前原始包数量,计算出额外补偿冗余度,包括:
根据当前原始包数量和预设最大包数,计算得到额外补偿冗余度。
预设最大包数可以为预设的传输流媒体数据包的最大包数,具体可以根据实际情况选取,本实施例对此不做限定。示例性地,预设最大包数Kmax可以为128。
示例性地,根据当前原始包数量和预设最大包数,计算得到额外补偿冗余度,包括:
采用公式ExtraRR=(Kmax-K)/1000,计算得到额外补偿冗余度;
其中,ExtraRR表示额外补偿冗余度,Kmax表示预设最大包数,K表示当前原始包数量。
需要说明的是,流媒体数据包的包数K满足0<K≤Kmax,0<ExtractRR<1。
由图1的示例可知,流媒体数据包的包数K偏小时,流媒体数据还原的成功率较低,因此引入额外补偿冗余度以缓解流媒体数据包的包数K偏小时流媒体数据还原成功率低的问题。图4示出了本申请实施例提供的额外补偿冗余度的示意图,如图4所示,X轴表示流媒体数据包的包数K、Y轴表示额外补偿冗余度ExtractRR,可以看出,随着K值越大,额外补偿度越小。
S204、根据平滑后的基础冗余度与额外补偿冗余度,得到目标冗余度。
S205、根据目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包。
其中,平滑后的基础冗余度和历史基础冗余度相比,有一个相对平滑的过渡,不会出现基础冗余度突高突低的现象,而造成流媒体数据包还原成功率低或者占用过大带宽,而额外补偿冗余度可以在流媒体数据包的包数偏小时提高还原的成功率。
具体地,根据平滑后的基础冗余度和额外补偿冗余度可以得到目标冗余度,得到的目标冗余度可以解决上述问题。
可选地,步骤S205具体包括:
获取平滑后的基础冗余度和额外补偿冗余度的和值;
根据和值获取目标冗余度。
将平滑后的基础冗余度和额外补偿冗余度相加,可以得到平滑后的基础冗余度和额外补偿冗余度的和值,然后将该和值作为目标冗余度。从而保证了有足够的目标冗余度,有利于提高流媒体数据包还原的成功率。
然后,可以根据目标冗余度向流媒体接收设备发送流媒体数据包及冗余包,其中,冗余包为该流媒体数据包的冗余包,根据目标冗余度可以得到该流媒体数据包的冗余包,然后将该流媒体数据包和该冗余包发送给流媒体接收设备,这样,流媒体接收设备根据接收到的冗余包可以根据冗余包还原出流媒体数据包。
可选地,根据目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包,包括:
根据目标冗余度获取冗余包数量;
根据冗余包数量对流媒体数据包进行前向纠错FEC编码,获取冗余包;
向流媒体接收设备发送流媒体数据包及冗余包。
其中,可以根据目标冗余度和当前原始包数的乘积获取冗余包数量,如下公式:
R=ceil(K*RR)
其中,R表示冗余包数量,K表示当前原始包数量,RR表示目标冗余度。
其中,当前原始包数量K也可以称为冗余基数,如图1所示的10、100,目标冗余度等于冗余包数量与冗余基数的比值,如图1所示的1/10=10%、10/100=10%。
在一些情况下,流媒体数据包的包数与目标冗余度之积有可能是一个小数,即K*RR的结果可能为小数,ceil就是对这个结果取整;与四舍五入不同的是,只要包含有小数,则所有小数部分全部进位为整数1。例如,Ceil(3.01)=4、Ceil(3.99)=4。
然后,根据计算得到的冗余包数量对流媒体数据包进行前向纠错FEC编码得到冗余包,以及向流媒体接收设备发送流媒体数据包及冗余包。具体编码过程和现有技术类似,在此不再赘述。
本实施例提供的流媒体数据传输方法、装置、设备及存储介质,其中,应用于流媒体发送设备,其中,该方法包括:接收流媒体接收设备发送的当前丢包率,根据当前丢包率,计算得到基础冗余度,根据基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度,根据当前原始包数量,计算出额外补偿冗余度,根据平滑后的基础冗余度与额外补偿冗余度,得到目标冗余度,根据目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包。在发包频率不确定,丢包率波动较大的情况下,充分保证有足够的目标冗余度,并且根据目标冗余度向流媒体接收设备发送流媒体数据包及冗余包,提高了流媒体数据包还原的成功率。
图5示出了本申请实施例提供的流媒体数据传输方法的流程示意图二,如图5所示,根据基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度,具体包括:
S201、若基础冗余度大于历史基础冗余度,则将基础冗余度作为平滑后的基础冗余度。
S202、若基础冗余度小于历史基础冗余度,则采用一阶指数平滑算法,根据基础冗余度和历史基础冗余度,获取平滑后的基础冗余度。
其中,历史基础冗余度为上一次平滑处理后的基础冗余度,也就是说,在上一次流媒体发送设备基于历史基础冗余度向流媒体接收设备发送流媒体数据包和冗余包。
若基础冗余包大于历史基础冗余度,则可以将基础冗余度作为平滑后的基础冗余度,即实现了快升,这样避免由于冗余包过少而使得流媒体数据包还原的成功率低下;若基础冗余度小于历史基础冗余度,则采用一阶指数平滑算法,根据基础冗余度和历史基础冗余度,获取平滑后的基础冗余度,即实现了半平滑的缓降。
也就是说,本实施例中的平滑处理为半平滑处理,即在基础冗余度小于历史基础冗余度时,根据基础冗余度和历史基础冗余度进行了平滑处理。
可选地,采用一阶指数平滑算法,根据基础冗余度和历史基础冗余度,获取平滑后的基础冗余度,包括:
采用如下一阶指数平滑公式,计算得到平滑后的基础冗余度;
SmoothBaseRR1=BaseRR*ALPHA+(1-ALPHA)*SmoothBaseRR2
其中,SmoothBaseRR1表示平滑后的基础冗余度,BaseRR表示基础冗余度,ALPHA表示一阶指数平滑系数,0.0<ALPHA≤1.0,SmoothBaseRR2表示历史基础冗余度。
一阶指数平滑系数ALPHA,ALPHA的取值可根据应用场景而定,本实施例对此不做限定。
本实施例提供的流媒体传输方法,包括:若基础冗余度大于历史基础冗余度,则将基础冗余度作为平滑后的基础冗余度,若基础冗余度小于历史基础冗余度,则采用一阶指数平滑算法,根据基础冗余度和历史基础冗余度,获取平滑后的基础冗余度,从而对基础冗余度和历史基础冗余度进行快升缓降冗余度半平滑处理,进一步提高了流媒体数据包还原的成功率,能够更好的抗连续性丢包。
其中,为尽量保证最小的还原成功率并避免冗余包过多而引入占过大带宽的问题,可以设置最小冗余度和最大冗余度,并结合最小冗余度和最大冗余度获取目标冗余度。下面结合图6实施例进行具体说明。
图6示出了本申请实施例提供的流媒体数据传输方法的流程示意图三,如图6所示,根据和值获取目标冗余度,具体包括:
S301、获取和值和预设最小冗余度中的最大值。
S302、获取最大值和预设最大冗余度之间的最小值。
S303、将最小值作为目标冗余度。
其中,预设最小冗余度为保证最小还原成功率的冗余度,预设最大冗余度为冗余包占用预设带宽对应的冗余度,其中,预设带宽可以为在不影响设备性能的前提下所能占用的最大带宽。预设最小冗余度和预设最大冗余度的具体取值可以根据实际情况而定,本实施例对此不做特别限定。
获取平滑后的基础冗余度和额外补偿冗余度的和值,并获取该和值和预设最小冗余度中的最大值,然后比较该最大值和预设最大冗余度中的最小值,然后将该最小值作为目标冗余度。
其中,获取该和值和预设最小冗余度中的最大值能够使目标冗余度可以保证最小还原成功率,获取该最大值和预设最大冗余度中的最小值能够使目标冗余度对应的冗余包的占用带宽不超过预设带宽,即保证目标冗余度不会由于冗余包过多而引入的占用过大带宽。
参考如下示例,额外补偿冗余度和基础冗余度的和值为RR1=SmoothBaseRR1+ExtraRR,该和值和预设最小冗余度之间的最大值记作:RR2=Max(RR1,RRmin),该最大值和预设最大冗余度之间的最小值记作RR3=Min(RR2,RRmax)。
需要说明的是,在首次进行FEC编码时,目标冗余度可以为预设最小冗余度,即RR=RRmin
本实施例提供的流媒体传输方法,包括:获取和值和预设最小冗余度中的最大值,获取最大值和预设最大冗余度之间的最小值,将最小值作为目标冗余度。从而保证了目标冗余度不仅可以保证最小的还原成功率,而且还不会由于冗余包过多而占用过大的带宽。
下面结合一具体实施例对FEC编码中的冗余数据包的实现过程进行说明,具体可以包括如下步骤:
第一步、设置冗余基数即待传输的流媒体数据包的包数K和待生成的冗余包数R,则当前FEC分组中的总包数M=K+R。
第二步、根据实际业务需求,设置预设最小冗余度RRmin和预设最大冗余度RRmax
第三步、根据实际业务需求,设置参数FEC编码的预设最大包数Kmax和预设最小包数Kmin,其中,Kmax可以为128,Kmin可以为8。
第四步、设置FEC编码的最长缓冲时间CTmax
由于FEC编码是需要多个数据包参与,因此积累到若干包后才可以进行编码,这个积累的时间就是这里的缓冲时间。其中,最长缓冲时间CTmax例如可以为30ms,本实施例不对最长缓冲时间进行限定。
第五步、由于FEC编码是分组编码,定义本轮编码从缓存第一个数据包至当前时间的时间戳为CT,已缓存的包数为待传输的流媒体数据包的包数K,则进行FEC编码的时机有如下两种编码时机:
A、当K=Kmax时,则进行FEC编码,获取冗余数据包。
B、当CT≥CTmax且K≥Kmin时,则进行FEC编码,获取冗余数据包。
图7示出了本申请实施例提供的流媒体数据传输装置的结构示意图,该流媒体数据传输装置可以集成在流媒体发送设备中,如图7所示,该流媒体数据传输装置70可以包括:
接收模块701,用于接收流媒体接收设备发送的当前丢包率,处理模块702,用于根据所述当前丢包率,计算得到基础冗余度;
获取模块703,用于根据所述基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度;
所述处理模块702,还用于根据当前原始包数量,计算出额外补偿冗余度;根据所述平滑后的基础冗余度与所述额外补偿冗余度,得到目标冗余度;
发送模块704,用于根据所述目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包。
可选地,所述获取模块703,具体用于:
若所述基础冗余度大于所述历史基础冗余度,则将所述基础冗余度作为所述平滑后的基础冗余度;
若所述基础冗余度小于所述历史基础冗余度,则采用一阶指数平滑算法,根据所述基础冗余度和所述历史基础冗余度,获取所述平滑后的基础冗余度。
可选地,所述处理模块702,具体用于:
获取所述平滑后的基础冗余度和所述额外补偿冗余度的和值;
根据所述和值获取所述目标冗余度。
可选地,所述处理模块702,具体用于:
获取所述和值和预设最小冗余度中的最大值;
获取所述最大值和预设最大冗余度中的最小值;
将所述最小值作为所述目标冗余度。
可选地,所述处理模块702,具体用于:
根据所述当前原始包数量和预设最大包数,计算得到所述额外补偿冗余度。
可选地,所述发送模块704,具体用于:
根据所述目标冗余度获取冗余包数;
根据所述冗余包数对所述流媒体数据包进行前向纠错FEC编码,获取所述冗余包;
向所述流媒体接收设备发送所述流媒体数据包及所述冗余包。
可选地,所述获取模块703,具体用于:
采用如下一阶指数平滑公式,计算得到所述平滑后的基础冗余度;
SmoothBaseRR1=BaseRR*ALPHA+(1-ALPHA)*SmoothBaseRR2
其中,SmoothBaseRR1表示所述平滑后的基础冗余度,BaseRR表示所述基础冗余度,ALPHA表示一阶指数平滑系数,0.0<ALPHA≤1.0,SmoothBaseRR2表示历史基础冗余度。
可选地,所述处理模块702,具体用于:
采用公式BaseRR=PLR/(1.0-PLR),计算得到所述基础冗余度;
其中,BaseRR表示所述基础冗余度,PLR表示所述当前丢包率。
可选地,所述处理模块702,具体用于:
采用公式ExtraRR=(Kmax-K)/1000,计算得到所述额外补偿冗余度;
其中,ExtraRR表示所述额外补偿冗余度,Kmax表示所述预设最大包数,K表示所述当前原始包数量。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
图8示出了本申请实施例提供的流媒体发送设备的结构示意图,如图8所示,流媒体发送设备80包括:
处理器801、存储器802和收发器803,所述存储器802存储有所述处理器801可执行的计算机程序,当所述流媒体发送设备80运行时,所述处理器801、所述存储器802和所述收发器803之间通过总线804通信,以实现上述方法实施例所述的流媒体数据传输方法。
本申请实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时以实现上述方法实施例所述的流媒体数据传输方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (11)

1.一种流媒体数据传输方法,其特征在于,应用于流媒体发送设备,所述方法包括:
接收流媒体接收设备发送的当前丢包率,以及根据所述当前丢包率,计算得到当前的基础冗余度;
根据所述当前的基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度;
根据当前原始包数量,计算出额外补偿冗余度;
根据所述平滑后的基础冗余度与所述额外补偿冗余度,得到目标冗余度;
根据所述目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包;
所述根据所述当前的基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度,包括:
若所述当前的基础冗余度大于所述历史基础冗余度,则将所述当前的基础冗余度作为所述平滑后的基础冗余度,以实现快升;
若所述当前的基础冗余度小于所述历史基础冗余度,则采用一阶指数平滑算法,根据所述当前的基础冗余度和所述历史基础冗余度,获取所述平滑后的基础冗余度,以实现缓降。
2.根据权利要求1所述的方法,其特征在于,所述根据所述平滑后的基础冗余度与所述额外补偿冗余度,得到目标冗余度,包括:
获取所述平滑后的基础冗余度和所述额外补偿冗余度的和值;
根据所述和值获取所述目标冗余度。
3.根据权利要求2所述的方法,其特征在于,所述根据所述和值获取所述目标冗余度,包括:
获取所述和值和预设最小冗余度中的最大值;
获取所述最大值和预设最大冗余度中的最小值;
将所述最小值作为所述目标冗余度。
4.根据权利要求1所述的方法,其特征在于,所述根据当前原始包数量,计算出额外补偿冗余度,包括:
根据所述当前原始包数量和预设最大包数,计算得到所述额外补偿冗余度。
5.根据权利要求1所述的方法,其特征在于,所述根据所述目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包,包括:
根据所述目标冗余度获取冗余包数;
根据所述冗余包数对所述流媒体数据包进行前向纠错FEC编码,获取所述冗余包;
向所述流媒体接收设备发送所述流媒体数据包及所述冗余包。
6.根据权利要求1所述的方法,其特征在于,所述采用一阶指数平滑算法,根据所述当前的基础冗余度和所述历史基础冗余度,获取所述平滑后的基础冗余度,包括:
采用如下一阶指数平滑公式,计算得到所述平滑后的基础冗余度;
SmoothBaseRR1=BaseRR*ALPHA+(1-ALPHA)*SmoothBaseRR2
其中,SmoothBaseRR1表示所述平滑后的基础冗余度,BaseRR表示所述当前的基础冗余度,ALPHA表示一阶指数平滑系数,0.0<ALPHA≤1.0,SmoothBaseRR2表示历史基础冗余度。
7.根据权利要求1所述的方法,其特征在于,所述根据所述当前丢包率,计算得到当前的基础冗余度,包括:
采用公式BaseRR=PLR/(1.0-PLR),计算得到所述当前的基础冗余度;
其中,BaseRR表示所述当前的基础冗余度,PLR表示所述当前丢包率。
8.根据权利要求5所述的方法,其特征在于,所述根据所述当前原始包数量和预设最大包数,计算得到所述额外补偿冗余度,包括:
采用公式ExtraRR=(Kmax-K)/1000,计算得到所述额外补偿冗余度;
其中,ExtraRR表示所述额外补偿冗余度,Kmax表示所述预设最大包数,K表示所述当前原始包数量。
9.一种流媒体数据传输装置,其特征在于,包括:
接收模块,用于接收流媒体接收设备发送的当前丢包率,处理模块,用于根据所述当前丢包率,计算得到当前的基础冗余度;
获取模块,用于根据所述当前的基础冗余度和历史基础冗余度进行快升缓降的半平滑处理,获得平滑后的基础冗余度;
所述处理模块,还用于根据当前原始包数量,计算出额外补偿冗余度;根据所述平滑后的基础冗余度与所述额外补偿冗余度,得到目标冗余度;
发送模块,用于根据所述目标冗余度,向流媒体接收设备发送流媒体数据包及冗余包;
所述获取模块,具体用于:
若所述当前的基础冗余度大于所述历史基础冗余度,则将所述当前的基础冗余度作为所述平滑后的基础冗余度,以实现快升;
若所述当前的基础冗余度小于所述历史基础冗余度,则采用一阶指数平滑算法,根据所述当前的基础冗余度和所述历史基础冗余度,获取所述平滑后的基础冗余度,以实现缓降。
10.一种流媒体发送设备,其特征在于,包括:处理器、存储器和收发器,所述存储器存储有所述处理器可执行的计算机程序,当所述流媒体发送设备运行时,所述处理器、所述存储器和所述收发器之间通过总线通信,以实现权利要求1-8任一项所述的流媒体数据传输方法。
11.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时以实现权利要求1-8任一项所述的流媒体数据传输方法。
CN202011070562.5A 2020-10-09 2020-10-09 流媒体数据传输方法、装置、设备及存储介质 Active CN112187817B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011070562.5A CN112187817B (zh) 2020-10-09 2020-10-09 流媒体数据传输方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011070562.5A CN112187817B (zh) 2020-10-09 2020-10-09 流媒体数据传输方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112187817A CN112187817A (zh) 2021-01-05
CN112187817B true CN112187817B (zh) 2023-03-31

Family

ID=73947727

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011070562.5A Active CN112187817B (zh) 2020-10-09 2020-10-09 流媒体数据传输方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112187817B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112821992B (zh) * 2021-01-08 2024-02-06 百果园技术(新加坡)有限公司 数据传输方法、装置、电子设备和存储介质
CN114039703B (zh) * 2021-11-26 2023-10-20 北京字节跳动网络技术有限公司 数据传输方法、装置、设备和介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008072469A1 (ja) * 2006-12-11 2008-06-19 Nec Corporation メディア送受信方法、メディア送信方法、メディア受信方法、メディア送受信装置、メディア送信装置、メディア受信装置、ゲートウェイ装置、及びメディアサーバ
JP2013225761A (ja) * 2012-04-20 2013-10-31 Hitachi Ltd 符号化装置、復号装置、通信システム及び通信制御方法
US9584160B2 (en) * 2014-02-20 2017-02-28 Quantum Corporation Dynamically configuring erasure code redundancy and distribution
CN106162227B (zh) * 2015-04-10 2019-01-01 北京大学 实时视频传输的rs编码冗余包分配方法和发送设备
CN105335100B (zh) * 2015-09-29 2018-09-21 华为技术有限公司 一种数据处理方法、装置及闪存设备
CN111464458B (zh) * 2020-04-03 2024-01-02 广州市百果园信息技术有限公司 抗丢包方法、装置、设备及存储介质
CN111478826A (zh) * 2020-06-09 2020-07-31 北京大米科技有限公司 丢包率确定方法、数据传输控制方法和数据传输系统

Also Published As

Publication number Publication date
CN112187817A (zh) 2021-01-05

Similar Documents

Publication Publication Date Title
EP3657787A1 (en) Video quality assessment method and apparatus
CN107181968B (zh) 一种视频数据的冗余控制方法和装置
CN110943800B (zh) 数据包的发送方法、装置及系统、存储介质、电子装置
CN112187817B (zh) 流媒体数据传输方法、装置、设备及存储介质
CN109951254B (zh) 一种数据处理方法及装置、计算机可读存储介质
US8612819B2 (en) Systems, methods, and media for checking available bandwidth using forward error correction
US9826260B2 (en) Video encoding device and video encoding method
US8621320B2 (en) Per-image forward error correction
WO2008125523A1 (en) Adaptive, scalable packet loss recovery
CN109327283B (zh) 一种网络自适应的抗丢包方法、装置及终端设备
US8842159B2 (en) Encoding processing for conferencing systems
Barannik et al. The technology of the video stream intensity controlling based on the bit-planes recombination
CN107369454B (zh) 语音频码流的解码方法及装置
GB2521441A (en) Packet loss mitigation
CN111629210A (zh) 一种数据处理的方法、装置及电子设备
CN111385055B (zh) 一种数据传输方法和装置
CN101854224B (zh) 纠错编码方法、装置和系统以及转发控制方法和装置
CN115037416A (zh) 数据前向纠错处理方法、装置、电子设备和存储介质
US8681860B2 (en) Moving picture compression apparatus and method of controlling operation of same
CN112804028A (zh) 一种数据包的传输方法、设备及存储介质
Rudow et al. Learning-augmented streaming codes for variable-size messages under partial burst losses
CN111245566B (zh) 不可靠网络的抗丢包方法、装置、存储介质及电子设备
WO2021164405A1 (zh) 数据编解码方法、相关设备及系统
CN113037437A (zh) 数据传输方法及装置
WO2015101280A1 (zh) 一种信道的码率分配方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant