CN108174234A - 一种流媒体传输方法及系统 - Google Patents

一种流媒体传输方法及系统 Download PDF

Info

Publication number
CN108174234A
CN108174234A CN201810029294.9A CN201810029294A CN108174234A CN 108174234 A CN108174234 A CN 108174234A CN 201810029294 A CN201810029294 A CN 201810029294A CN 108174234 A CN108174234 A CN 108174234A
Authority
CN
China
Prior art keywords
packet
rtp
fec
error correction
packets
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.)
Pending
Application number
CN201810029294.9A
Other languages
English (en)
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.)
Allwinner Technology Co Ltd
Original Assignee
Allwinner 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 Allwinner Technology Co Ltd filed Critical Allwinner Technology Co Ltd
Priority to CN201810029294.9A priority Critical patent/CN108174234A/zh
Publication of CN108174234A publication Critical patent/CN108174234A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234327Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234381Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
    • 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/643Communication protocols
    • 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/64723Monitoring of network processes or resources, e.g. monitoring of network load
    • H04N21/64738Monitoring network characteristics, e.g. bandwidth, congestion level
    • 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)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提供一种流媒体传输方法及系统,该方法包括:发送端根据当前网络的通信带宽确定当前帧的编码参数,根据编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据;发送端对视频编码帧数据进行RTP封装获得RTP媒体包,将RTP媒体包复制至媒体包缓冲队列中;发送端判断是否需要发送FEC纠错包,若是,发送端对媒体包缓冲队列中的RTP媒体包进行FEC编码生成FEC纠错包并向接收端发送;接收端根据接收到的RTP媒体包判断是否出现丢包情况,若是,根据丢失的RTP媒体包所对应的FEC纠错包对丢失的RTP媒体包进行丢包恢复。该系统为该方法提供执行模块。应用本发明可降低因参考帧数据丢失而导致后续视频帧无法解码风险、提高视屏播放流畅度。

Description

一种流媒体传输方法及系统
技术领域
本发明涉及视频传输技术领域,具体的,涉及一种利用视频SVC(可伸缩编码)和FEC(网络传输前向纠错)的方法优化媒体视频传输以提升用户体验的流媒体传输方法,还涉及应用该方法的流媒体传输系统。
背景技术
流媒体是一种在网络上使用流式传输技术传输的多媒体数据,如音频、视频和其它多媒体文件等。流式媒体并不需要在使用前下载整个文件,只需要用户经过几秒钟到几十秒钟的启动时延就可在客户端进行播放和观看相关的媒体文件,此时后台仍然在同步进行剩余部分的下载。由于流媒体技术对启动时延和缓冲容量的大幅降低,其在远程教育、网络直播、视频会议等诸多领域的应用越来越广泛。相对传统的网络媒体下载,流媒体由于其连续性、实时性的特点,其对网络传输有更高的要求。根据应用场景对实时性和正确性的不同优先需求,传输层分别使用UDP协议(User Datagram Protocol,用户数据报协议)和TCP协议(Transmission Control Protocol,传输控制协议),在上层一般使用实时传输协议(RTP,Real-time Transport Protocol)来保证流媒体的传输质量。
但是由于网络波动具有突发性,RTP通过监控调整网络传输具有一定滞后性,在波动的起始阶段丢包率势必会上升。同时视频数据在传输之前需要压缩编码,丢弃大量的冗余信息,在接收端根据视频帧之间的相关性对其进行解码,但是一旦相关数据帧丢失,则会导致当前帧无法解码,如果当前帧是后续帧的参考帧,则后续的一系列帧也无法正常解码,最终导致播放花屏卡顿,严重影响用户体验。因此如何在现有的网络条件下尽可能提高媒体信源数据抗误码和丢包恢复能力,成为优化用户体验的重要切入点。
经统计,现有的优化媒体传输提升用户体验的技术主要有以下几点:1、通过监控网络状况,动态调整信源编码码率、分辨率、帧率,以降低网络丢包率;2、在网络发送端根据丢包率采用FEC(前向纠错,Forward Error Correction)编码加入冗余包,在接收端恢复网络丢包;3、对视频源进行SVC(Scaled Video Coding,可伸缩视频编码)编码,在保证基本层发送的前提下根据网络状况动态发送增强层数据。但是,在现有的上述技术方案中,通过调节码率、帧率、分辨率来降低丢包率对用户体验有一定改善,但是其调整具有滞后性,对丢包无法恢复,一旦发生丢包则用户端可能出现严重的花屏卡顿问题。根据网络丢包率采用FEC编码在发送端产生冗余包,可提高接收端的丢包恢复能力,但是加入的冗余包会加重信道传输的负载,对接收端的丢包恢复能力改善有限。对视频源进行SVC编码,在保证基本层发送的前提下根据网络状况动态发送增强层数据的方法可充分利用信道并保证传输质量,但是一旦出现丢包则无法有效恢复。
发明内容
本发明的主要目的是提供一种可降低因参考帧数据丢失而导致后续视频帧无法解码的风险、提高视屏播放流畅度的流媒体传输方法。
本发明的另一目的是提供一种可降低因参考帧数据丢失而导致后续视频帧无法解码的风险、提高视屏播放流畅度的流媒体传输系统。
为了实现上述主要目的,本发明提供的流媒体传输方法包括:发送端根据当前网络的通信带宽确定当前帧的编码参数,根据编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据;发送端对视频编码帧数据进行RTP封装获得RTP媒体包,将RTP媒体包复制至媒体包缓冲队列中;发送端判断是否需要发送FEC纠错包,若是,发送端对媒体包缓冲队列中的RTP媒体包进行FEC编码生成FEC纠错包并向接收端发送;接收端根据接收到的RTP媒体包判断是否出现丢包情况,若是,根据丢失的RTP媒体包所对应的FEC纠错包对丢失的RTP媒体包进行丢包恢复。
由上述方案可知,本发明的流媒体传输方法通过对视频数据进行SVC编码,根据当前网络的通信带宽确定当前帧的编码参数,可提高信源的抗误码能力,同时加入FEC前向纠错机制,提高信道的误码恢复能力,使用对信源进行SVC视频编码,对信道进行FEC容错编码的方式,降低因参考帧数据丢失而导致后续视频帧无法解码的风险,保证了流媒体接收端的视频清晰度和流畅度,提升了用户体验。
进一步的方案中,发送端根据当前网络的通信带宽确定当前帧的编码参数,包括:判断视频编码的当前码率与当前平均码率的差值是否超过预设波动阈值,若是,将SVC编码中基本层的每一帧码率比例调整为增强层的每一帧码率比例的两倍。
由此可知,根据网络波动调整SVC编码中基本层和增强层的码率比例,在保证基本层发送的前提下根据网络状况动态发送增强层数据的方法可充分利用信道并保证传输质量,防止花屏现象。
进一步的方案中,发送端判断是否需要发送FEC纠错包,包括:判断媒体包缓冲队列是否已满,若是,则需要发送FEC纠错包;或者判断是否接收到接收端所发送的丢包反馈信息,若是,则需要发送FEC纠错包。
由此可见,进行RTP封装获得RTP媒体包会被复制至媒体包缓冲队列等待发送,在发送RTP媒体包时,若媒体包缓冲队列已满,则说明网络出现拥堵情况,需要生成FEC纠错包,以便接收端进行纠错处理。另外,发送端若获取到丢包反馈信息,也需要重新生成对应的FEC纠错包,以便接收端进行丢包恢复。
进一步的方案中,接收端对接收到的RTP媒体包进行解析前,流媒体传输方法还包括:接收端获取发送端所发送的数据包并确认数据包的类型,根据数据包的类型进行分类处理。
由此可见,为了便于对接收的数据进行处理,在接受到发送端所发送的数据后,对数据包的类型进行分类,提高处理效率。
进一步的方案中,接收端根据RTP媒体包所对应的FEC纠错包对RTP媒体包进行丢包恢复,包括:接收端判断所丢失的RTP媒体包是否为可修复的RTP媒体包,若否,则向发送端发送丢包反馈信息。
由此可见,通过向发送端发送丢包反馈信息,使发送端可提供相应的FEC纠错包用以丢包恢复处理,同时,还可使发送端根据反馈信息进行编码码率的调节,进一步改善接收端的视频图像质量。
为了实现上述另一目的,本发明提供的流媒体传输系统包括:SVC编码模块,用于根据当前网络的通信带宽确定当前帧的编码参数,根据编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据;RTP封装模块,用于对视频编码帧数据进行RTP封装获得RTP媒体包,将RTP媒体包复制至媒体包缓冲队列中;FEC编码模块,用于判断是否需要发送FEC纠错包,若是,对媒体包缓冲队列中的RTP媒体包进行FEC编码生成FEC纠错包并向接收端发送;FEC纠错模块,用于根据接收到的RTP媒体包判断是否出现丢包情况,若是,根据丢失的RTP媒体包所对应的FEC纠错包对丢失的RTP媒体包进行丢包恢复。
由上述方案可见,本发明的流媒体传输系统通过对视频数据进行SVC编码,通过当前网络的通信带宽确定当前帧的编码参数,可提高信源的抗误码能力,同时加入FEC前向纠错机制,提高信道的误码恢复能力,使用对信源进行SVC视频编码,对信道进行FEC容错编码的方式,降低因参考帧数据丢失而导致后续视频帧无法解码的风险,保证了流媒体接收端的视频清晰度和流畅度,提升了用户体验。
附图说明
图1是本发明流媒体传输方法实施例的流程图。
图2是本发明流媒体传输方法实施例中SVC编码时一种参考帧选择的示意图。
图3是本发明流媒体传输方法实施例中SVC编码时另一种参考帧选择的示意图。
图4是本发明流媒体传输系统实施例的结构框图。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明的流媒体传输方法应用于所有支持视频SVC编码的计算机产品上,用以根据当前网络的通信带宽进行编码,同时加入FEC前向纠错机制,保证了流媒体接收端的视频清晰度和流畅度。本发明的流媒体传输系统应用于所有支持视频SVC编码的计算机产品上,并且用于实现上述的流媒体传输方法。
流媒体传输方法实施例:
如图1所示,本发明的流媒体传输方法在进行视频数据传输时,首先执行步骤S1,发送端根据当前网络的通信带宽确定当前帧的编码参数,根据编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据。其中,编码参数包括时域SVC各层的码率比例、当前帧的分层位置以及参考帧的范围。
发送端根据当前网络的通信带宽确定当前帧的编码参数时,需实时获取当前网络的通信带宽,根据网络的通信带宽生成连续时间间隔内视频编码的码率波动统计表。其中,码率波动统计表包括视频编码的当前码率、连续时间间隔内的平均码率等统计数据。发送端判断视频编码的当前码率与当前平均码率的差值是否超过预设波动阈值,若是,将SVC编码中基本层的每一帧码率比例调整为增强层的每一帧码率比例的两倍;若否,则将基本层的每一帧码率比例调整为与增强层的每一帧码率比例相同。
确定当前帧的编码参数时,还需检测当前编码帧的序号和允许的最大跳帧参考倍数,确定其位于时域SVC的层级以及参考帧的范围。
本实施例中,规定每个关键帧的帧号必须更新为0,从关键帧开始算,如果选择2倍跳帧参考,参见图2,帧号为偶数的帧属于基本层(如图2中的P2帧、P4帧、P6帧、P8帧),其它帧属于增强层(如图2中的P1帧、P3帧、P5帧、P7帧),如果当前帧序号能够被2整除,则当前帧位于基本层,编码时其码率比例使用基本层的码率比例,其参考帧只能是基本层帧;当前帧序号不能够被2整除,则当前帧位于增强层级,编码时其码率比例使用增强层的码率比例,其参考帧只能是基本层帧。
如果选择4倍跳帧参考,参见图3,当前帧号能够被4整除的帧属于基本层(如图3中的P4帧、P8帧),其它帧号为偶数的帧属于增强层(如图3中的P2帧、P6帧),其它帧属于提高层(如图3中的P1帧、P3帧、P5帧、P7帧)。若当前帧号能够被4整除,当前帧位于基本层,其码率比例为基本层码率比例,其参考帧只能是基本层帧;若当前帧号仅能被2整除,则当前帧位于增强层,其码率比例为增强层码率比例,其参考帧只能是基本层帧;若当前帧号不能被2整除,则当前帧位于提高层,其码率比例为增强层码率比例,其参考帧只能是基本层帧和增强层帧。
基本层和增强层只能使用基本层的帧作为参考帧,提高层只能使用基本层和增强层的帧作为参考帧。由于基本层的数据获得的视频图像的帧率、分辨率或质量较低。在信道受限或信道环境复杂时,可以保证解码端能够接收到可以观看的流畅视频图像。当信道环境良好或信道资源丰富时,可以传递增强层数据和提高层数据,以提高帧率、分辨率或视频质量。
当然除了上述的编码参数外,还需确定其他SVC编码的其他参数,由于SVC编码属于现有的公知技术,在此不再赘述。在确定编码参数后,发送端根据编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据。
获得视频编码帧数据后,执行步骤S2,发送端对视频编码帧数据进行RTP封装获得RTP媒体包,将RTP媒体包复制至媒体包缓冲队列中。在进行RTP封装时,发送端根据当前帧的长度和时间戳初始化RTP媒体包序号以及时间戳等RTP媒体包头信息,将视频帧数据复制到RTP媒体包的数据区域,封装成若干RTP媒体包,将RTP媒体包复制到媒体包缓冲队列,并将媒体包缓冲队列中的RTP媒体包发送到网络中。在进行RTP封装,由于每一视频帧的数据是不固定,所以每一视频帧帧封装得到的RTP媒体包数量也不固定,例如,某一视频帧的长度是20k字节,而定义的每个RTP媒体包的长度是1k字节,则当前帧可封装成20个RTP包。
在封装发送RTP媒体包的过程中,执行步骤S3,发送端判断是否需要发送FEC纠错包。其中,发送端判断是否需要发送FEC纠错包的步骤包括:判断媒体包缓冲队列是否已满,若是,则需要发送FEC纠错包;或者判断是否接收到接收端所发送的丢包反馈信息,若是,则需要发送FEC纠错包。为了保障视频数据的连续发送,进行RTP封装获得的RTP媒体包会被复制至媒体包缓冲队列等待发送,媒体包缓冲队列中的RTP媒体包被发送后会有新的RTP媒体包补充进来。在发送RTP媒体包时,若媒体包缓冲队列已满,则说明网络出现拥堵情况,需要生成FEC纠错包,防止由于网络拥堵造成丢包的情况。另外,发送端若获取到丢包反馈信息,则说明已经出现丢包情况,也需要重新生成对应的FEC纠错包,以便接收端进行丢包恢复。
在判断需要发送FEC纠错包时,执行步骤S4, 发送端对媒体包缓冲队列中的RTP媒体包进行FEC编码生成FEC纠错包。本实施例中,在生成FEC纠错包时,首先从媒体包缓冲队列中读取K个RTP媒体包,对这K个RTP媒体包进行RS编码生成N-K个FEC比特序列,将每个FEC比特序列封装上RTP头,从而得到FEC纠错包。RS编码为FEC编码的一种,RS编码是现有的公知技术,在此不再赘述。
在判断不需要发送FEC纠错包时或者获得FEC纠错包后,执行步骤S5,发送端向接收端发送数据包。其中,数据包包括RTP媒体包或FEC纠错包。
发送端向接收端发送数据包后,执行步骤S6,接收端获取发送端所发送的数据包并确认数据包的类型,根据数据包的类型进行分类处理。获取到数据包后可根据数据包的包头信息判断数据包属于RTP媒体包或FEC纠错包。如果是RTP媒体包则将其复制到媒体包队列中,如果是FEC纠错包则将其复制到纠错包队列中。
根据数据包的类型进行分类处理后,执行步骤S7,接收端根据接收到的RTP媒体包判断是否出现丢包情况。获得RTP媒体包后,检测媒体包队列中的包序号,判断是否存在序号缺失,若是,则认为出现丢包情况。
接收端判断出现丢包情况时,执行步骤S8,根据丢失的RTP媒体包所对应的FEC纠错包对丢失的RTP媒体包进行丢包恢复。在进行丢包恢复时,接收端判断所丢失的RTP媒体包是否为可修复的RTP媒体包。确定丢失的RTP媒体包的序号后,可进一步确认检测丢失的RTP媒体包所在的媒体包组及其所对应的FEC纠错包是否同时存在,若同时存在,则认为丢失的RTP媒体包为可修复的RTP媒体包,否则,则认为丢失的RTP媒体包为不可修复的RTP媒体包。接收端若认为丢失的RTP媒体包为可修复的RTP媒体包时,对FEC纠错包进行RS解码恢复丢失的RTP媒体包,将恢复后的RTP媒体包插入到媒体包队列丢包的位置。接收端若认为丢失的RTP媒体包为不可修复的RTP媒体包时,则生成丢包反馈信息并向发送端发送,其中,丢包反馈信息包括实时传输带宽、丢包率等相关信息。
在接收端判断没有出现丢包情况或已经进行丢包恢复操作后,将媒体包队列中的RTP媒体包发送到视频解码器解码播放。
流媒体传输系统实施例:
如图4所示,本发明的流媒体传输系统包括SVC编码模块11、RTP封装模块12、FEC编码模块13和FEC纠错模块21。其中,SVC编码模块11、RTP封装模块12和FEC编码模块13应用于发送端1,FEC纠错模块21应用于接收端2。
SVC编码模块11用于根据当前网络的通信带宽确定当前帧的编码参数,根据编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据。其中,编码参数包括时域SVC各层的码率比例、当前帧的分层位置以及参考帧的范围。
SVC编码模块11根据当前网络的通信带宽确定当前帧的编码参数时,需实时获取当前网络的通信带宽,根据网络的通信带宽生成连续时间间隔内视频编码的码率波动统计表。其中,码率波动统计表包括视频编码的当前码率、连续时间间隔内的平均码率等统计数据。SVC编码模块11判断视频编码的当前码率与当前平均码率的差值是否超过预设波动阈值,若是,SVC编码模块11将SVC编码中基本层的每一帧码率比例调整为增强层的每一帧码率比例的两倍;若否,SVC编码模块11则将基本层的每一帧码率比例调整为与增强层的每一帧码率比例相同。
SVC编码模块11确定当前帧的编码参数时,还需检测当前编码帧的序号和允许的最大跳帧参考倍数,确定其位于时域SVC的层级以及参考帧的范围。
本实施例中,规定每个关键帧的帧号必须更新为0,从关键帧开始算,如果选择2倍跳帧参考,参见图2,帧号为偶数的帧属于基本层(如图2中的P2帧、P4帧、P6帧、P8帧),其它帧属于增强层(如图2中的P1帧、P3帧、P5帧、P7帧),如果当前帧序号能够被2整除,则当前帧位于基本层,编码时其码率比例使用基本层的码率比例,其参考帧只能是基本层帧;当前帧序号不能够被2整除,则当前帧位于增强层级,编码时其码率比例使用增强层的码率比例,其参考帧只能是基本层帧。
如果选择4倍跳帧参考,参见图3,当前帧号能够被4整除的帧属于基本层(如图3中的P4帧、P8帧),其它帧号为偶数的帧属于增强层(如图3中的P2帧、P6帧),其它帧属于提高层(如图3中的P1帧、P3帧、P5帧、P7帧)。若当前帧号能够被4整除,当前帧位于基本层,其码率比例为基本层码率比例,其参考帧只能是基本层帧;若当前帧号仅能被2整除,则当前帧位于增强层,其码率比例为增强层码率比例,其参考帧只能是基本层帧;若当前帧号不能被2整除,则当前帧位于提高层,其码率比例为增强层码率比例,其参考帧只能是基本层帧和增强层帧。
基本层和增强层只能使用基本层的帧作为参考帧,提高层只能使用基本层和增强层的帧作为参考帧。由于基本层的数据获得的视频图像的帧率、分辨率或质量较低。在信道受限或信道环境复杂时,可以保证解码端能够接收到可以观看的流畅视频图像。当信道环境良好或信道资源丰富时,可以传递增强层数据和提高层数据,以提高帧率、分辨率或视频质量。
当然除了上述的编码参数外,还需确定其他SVC编码的其他参数,由于SVC编码属于现有的公知技术,在此不再赘述。在确定编码参数后,SVC编码模块11根据编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据。
RTP封装模块12用于对视频编码帧数据进行RTP封装获得RTP媒体包,将RTP媒体包复制至媒体包缓冲队列中。在进行RTP封装时,RTP封装模块12根据当前帧的长度和时间戳初始化RTP媒体包序号以及时间戳等RTP媒体包头信息,将视频帧数据复制到RTP媒体包的数据区域,封装成若干RTP媒体包,将 RTP媒体包复制到媒体包缓冲队列,并将媒体包缓冲队列中的RTP媒体包发送到网络中。在进行RTP封装,由于每一视频帧的数据是不固定,所以每一视频帧帧封装得到的RTP媒体包数量也不固定,例如,某一视频帧的长度是20k字节,而定义的每个RTP媒体包的长度是1k字节,则当前帧可封装成20个RTP包。
FEC编码模块13用于判断是否需要发送FEC纠错。其中,FEC编码模块13判断是否需要发送FEC纠错包的步骤包括:判断媒体包缓冲队列是否已满,若是,则需要发送FEC纠错包;或者判断是否接收到接收端所发送的丢包反馈信息,若是,则需要发送FEC纠错包。为了保障视频数据的连续发送,进行RTP封装获得的RTP媒体包会被复制至媒体包缓冲队列等待发送,媒体包缓冲队列中的RTP媒体包被发送后会有新的RTP媒体包补充进来。在发送RTP媒体包时,若媒体包缓冲队列已满,则说明网络出现拥堵情况,需要生成FEC纠错包,防止由于网络拥堵造成丢包的情况。另外,FEC编码模块13若获取到丢包反馈信息,则说明已经出现丢包情况,也需要重新生成对应的FEC纠错包,以便接收端进行丢包恢复。
在FEC编码模块13判断需要发送FEC纠错包时,FEC编码模块13对媒体包缓冲队列中的RTP媒体包进行FEC编码生成FEC纠错包。本实施例中,FEC编码模块13在生成FEC纠错包时,首先从媒体包缓冲队列中读取K个RTP媒体包,对这K个RTP媒体包进行RS编码生成N-K个FEC比特序列,将每个FEC比特序列封装上RTP头,从而得到FEC纠错包。RS编码为FEC编码的一种,RS编码是现有的公知技术,在此不再赘述。
在FEC编码模块13判断不需要发送FEC纠错包时或者获得FEC纠错包后,FEC编码模块13向接收端发送数据包。其中,数据包包括RTP媒体包或FEC纠错包。
FEC纠错模块21获取发送端所发送的数据包并确认数据包的类型,根据数据包的类型进行分类处理。FEC纠错模块21获取到数据包后可根据数据包的包头信息判断数据包属于RTP媒体包或FEC纠错包。如果是RTP媒体包则将其复制到媒体包队列中,如果是FEC纠错包则将其复制到纠错包队列中。
FEC纠错模块21根据接收到的RTP媒体包判断是否出现丢包情况。FEC纠错模块21获得RTP媒体包后,检测媒体包队列中的包序号,判断是否存在序号缺失,若是,则认为出现丢包情况。
FEC纠错模块21判断出现丢包情况时,根据丢失的RTP媒体包所对应的FEC纠错包对丢失的RTP媒体包进行丢包恢复。在FEC纠错模块21进行丢包恢复时,判断所丢失的RTP媒体包是否为可修复的RTP媒体包。FEC纠错模块21确定丢失的RTP媒体包的序号后,可进一步确认检测丢失的RTP媒体包所在的媒体包组及其所对应的FEC纠错包是否同时存在,若同时存在,FEC纠错模块21则认为丢失的RTP媒体包为可修复的RTP媒体包,否则,FEC纠错模块21则认为丢失的RTP媒体包为不可修复的RTP媒体包。若FEC纠错模块21认为丢失的RTP媒体包为可修复的RTP媒体包时,FEC纠错模块21对FEC纠错包进行RS解码恢复丢失的RTP媒体包,将恢复后的RTP媒体包插入到媒体包队列丢包的位置。若FEC纠错模块21认为丢失的RTP媒体包为不可修复的RTP媒体包时,则生成丢包反馈信息并向发送端发送,其中,丢包反馈信息包括实时传输带宽、丢包率等相关信息。
在FEC纠错模块21判断没有出现丢包情况或已经进行丢包恢复操作后,将媒体包队列中的RTP媒体包发送到视频解码器解码播放。
本发明的流媒体传输系统通过对视频数据进行SVC编码,通过当前网络的通信带宽确定当前帧的编码参数,可提高信源的抗误码能力,同时加入FEC前向纠错机制,提高信道的误码恢复能力,使用对信源进行SVC视频编码,对信道进行FEC容错编码的方式,降低因参考帧数据丢失而导致后续视频帧无法解码风险,保证了流媒体接收端的视频清晰度和流畅度,提升了用户体验。
需要说明的是,以上仅为本发明的优选实施例,但发明的设计构思并不局限于此,凡利用此构思对本发明做出的非实质性修改,也均落入本发明的保护范围之内。

Claims (10)

1.一种流媒体传输方法,其特征在于,包括:
发送端根据当前网络的通信带宽确定当前帧的编码参数,根据所述编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据;
所述发送端对所述视频编码帧数据进行RTP封装获得RTP媒体包,将所述RTP媒体包复制至媒体包缓冲队列中;
所述发送端判断是否需要发送FEC纠错包,若是,所述发送端对所述媒体包缓冲队列中的所述RTP媒体包进行FEC编码生成FEC纠错包并向接收端发送;
所述接收端根据接收到的所述RTP媒体包判断是否出现丢包情况,若是,根据丢失的RTP媒体包所对应的FEC纠错包对所述丢失的RTP媒体包进行丢包恢复。
2.根据权利要求1所述的流媒体传输方法,其特征在于,
所述发送端根据当前网络的通信带宽确定当前帧的编码参数,包括:
判断视频编码的当前码率与当前平均码率的差值是否超过预设波动阈值,若是,将SVC编码中基本层的每一帧码率比例调整为增强层的每一帧码率比例的两倍。
3.根据权利要求1或2所述的流媒体传输方法,其特征在于,
所述发送端判断是否需要发送FEC纠错包,包括:
判断所述媒体包缓冲队列是否已满,若是,则需要发送FEC纠错包;或者
判断是否接收到所述接收端所发送的丢包反馈信息,若是,则需要发送FEC纠错包。
4.根据权利要求1或2所述的流媒体传输方法,其特征在于,
所述接收端对接收到的所述RTP媒体包进行解析前,所述方法还包括:
所述接收端获取所述发送端所发送的数据包并确认所述数据包的类型,根据所述数据包的类型进行分类处理。
5.根据权利要求3所述的流媒体传输方法,其特征在于,
所述接收端根据所述RTP媒体包所对应的FEC纠错包对所述RTP媒体包进行丢包恢复,包括:
所述接收端判断所丢失的RTP媒体包是否为可修复的RTP媒体包,若否,则向所述发送端发送丢包反馈信息。
6.一种流媒体传输系统,其特征在于,包括:
SVC编码模块,用于根据当前网络的通信带宽确定当前帧的编码参数,根据所述编码参数对视频源数据进行SVC视频编码,获得视频编码帧数据;
RTP封装模块,用于对所述视频编码帧数据进行RTP封装获得RTP媒体包,将所述RTP媒体包复制至媒体包缓冲队列中;
FEC编码模块,用于判断是否需要发送FEC纠错包,若是,对所述媒体包缓冲队列中的所述RTP媒体包进行FEC编码生成FEC纠错包并向接收端发送;
FEC纠错模块,用于根据接收到的所述RTP媒体包判断是否出现丢包情况,若是,根据丢失的RTP媒体包所对应的FEC纠错包对所述丢失的RTP媒体包进行丢包恢复。
7.根据权利要求6所述的流媒体传输系统,其特征在于,
所述SVC编码模块根据当前网络的通信带宽确定当前帧的编码参数,包括:
判断视频编码的当前码率与当前平均码率的差值是否超过预设波动阈值,若是,将SVC编码中基本层的每一帧码率比例调整为增强层的每一帧码率比例的两倍。
8.根据权利要求6或7所述的流媒体传输系统,其特征在于,
所述FEC编码模块判断是否需要发送FEC纠错包,包括:
判断所述媒体包缓冲队列是否已满,若是,则需要发送FEC纠错包;或者
判断是否接收到所述接收端所发送的丢包反馈信息,若是,则需要发送FEC纠错包。
9.根据权利要求6或7所述的流媒体传输系统,其特征在于,
所述FEC纠错模块对接收到的所述RTP媒体包进行解析前,还获取所述发送端所发送的数据包并确认所述数据包的类型,根据所述数据包的类型进行分类处理。
10.根据权利要求8所述的流媒体传输系统,其特征在于,
所述FEC纠错模块根据所述RTP媒体包所对应的FEC纠错包对所述RTP媒体包进行丢包恢复,包括:
判断所丢失的RTP媒体包是否为可修复的RTP媒体包,若否,则向所述发送端发送丢包反馈信息。
CN201810029294.9A 2018-01-12 2018-01-12 一种流媒体传输方法及系统 Pending CN108174234A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810029294.9A CN108174234A (zh) 2018-01-12 2018-01-12 一种流媒体传输方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810029294.9A CN108174234A (zh) 2018-01-12 2018-01-12 一种流媒体传输方法及系统

Publications (1)

Publication Number Publication Date
CN108174234A true CN108174234A (zh) 2018-06-15

Family

ID=62514519

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810029294.9A Pending CN108174234A (zh) 2018-01-12 2018-01-12 一种流媒体传输方法及系统

Country Status (1)

Country Link
CN (1) CN108174234A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110740334A (zh) * 2019-10-18 2020-01-31 福州大学 一种帧级别的应用层动态fec编码方法
CN111385158A (zh) * 2018-12-27 2020-07-07 北京紫荆视通科技有限公司 通信方法和通信装置
CN111757043A (zh) * 2020-06-30 2020-10-09 中科远见(重庆)科技有限公司 一种数据传输系统及传输方法
CN111935485A (zh) * 2020-08-10 2020-11-13 北京佳讯飞鸿电气股份有限公司 一种rs码前向纠错方法及装置
CN112333470A (zh) * 2020-10-27 2021-02-05 杭州叙简科技股份有限公司 一种基于视频帧的fec纠错系统
CN112866746A (zh) * 2020-12-31 2021-05-28 杭州雾联科技有限公司 一种多路串流云游戏控制方法、装置、设备及存储介质
CN112866178A (zh) * 2019-11-27 2021-05-28 北京沃东天骏信息技术有限公司 音频数据传输的方法和装置
CN113141535A (zh) * 2021-04-27 2021-07-20 臻迪科技股份有限公司 流媒体数据处理方法、装置及电子设备
CN113207017A (zh) * 2021-07-07 2021-08-03 北京蔚领时代科技有限公司 用于云游戏的流媒体数据传输系统
CN114070458A (zh) * 2020-08-04 2022-02-18 成都鼎桥通信技术有限公司 数据传输方法、装置、设备及存储介质
CN114079535A (zh) * 2020-08-20 2022-02-22 腾讯科技(深圳)有限公司 转码方法、装置、介质和电子设备
WO2022052102A1 (zh) * 2020-09-14 2022-03-17 华为技术有限公司 一种通信方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101505202A (zh) * 2009-03-16 2009-08-12 华中科技大学 一种流媒体传输自适应纠错方法
CN101529771A (zh) * 2006-08-17 2009-09-09 杜比实验室特许公司 广播网络中的分组排队丢失的瞬态分析
CN101562739A (zh) * 2009-06-02 2009-10-21 北京大学 视频编码处理方法和装置
CN102065289A (zh) * 2010-09-09 2011-05-18 西安电子科技大学 基于网络编码的可靠性视频传输方法及装置
CN103096048A (zh) * 2011-11-02 2013-05-08 北京大学 一种可伸缩视频编码量化参数确定方法及装置
CN103402119A (zh) * 2013-07-19 2013-11-20 哈尔滨工业大学深圳研究生院 一种面向传输的svc码流提取方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101529771A (zh) * 2006-08-17 2009-09-09 杜比实验室特许公司 广播网络中的分组排队丢失的瞬态分析
CN101505202A (zh) * 2009-03-16 2009-08-12 华中科技大学 一种流媒体传输自适应纠错方法
CN101562739A (zh) * 2009-06-02 2009-10-21 北京大学 视频编码处理方法和装置
CN102065289A (zh) * 2010-09-09 2011-05-18 西安电子科技大学 基于网络编码的可靠性视频传输方法及装置
CN103096048A (zh) * 2011-11-02 2013-05-08 北京大学 一种可伸缩视频编码量化参数确定方法及装置
CN103402119A (zh) * 2013-07-19 2013-11-20 哈尔滨工业大学深圳研究生院 一种面向传输的svc码流提取方法及系统

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111385158A (zh) * 2018-12-27 2020-07-07 北京紫荆视通科技有限公司 通信方法和通信装置
CN110740334A (zh) * 2019-10-18 2020-01-31 福州大学 一种帧级别的应用层动态fec编码方法
CN112866178B (zh) * 2019-11-27 2023-09-05 北京沃东天骏信息技术有限公司 音频数据传输的方法和装置
CN112866178A (zh) * 2019-11-27 2021-05-28 北京沃东天骏信息技术有限公司 音频数据传输的方法和装置
CN111757043A (zh) * 2020-06-30 2020-10-09 中科远见(重庆)科技有限公司 一种数据传输系统及传输方法
CN114070458A (zh) * 2020-08-04 2022-02-18 成都鼎桥通信技术有限公司 数据传输方法、装置、设备及存储介质
CN111935485A (zh) * 2020-08-10 2020-11-13 北京佳讯飞鸿电气股份有限公司 一种rs码前向纠错方法及装置
US11855775B2 (en) 2020-08-20 2023-12-26 Tencent Technology (Shenzhen) Company Limited Transcoding method and apparatus, medium, and electronic device
CN114079535B (zh) * 2020-08-20 2023-02-17 腾讯科技(深圳)有限公司 转码方法、装置、介质和电子设备
CN114079535A (zh) * 2020-08-20 2022-02-22 腾讯科技(深圳)有限公司 转码方法、装置、介质和电子设备
WO2022052102A1 (zh) * 2020-09-14 2022-03-17 华为技术有限公司 一种通信方法及装置
CN112333470B (zh) * 2020-10-27 2022-05-27 杭州叙简科技股份有限公司 一种基于视频帧的fec纠错系统
CN112333470A (zh) * 2020-10-27 2021-02-05 杭州叙简科技股份有限公司 一种基于视频帧的fec纠错系统
CN112866746A (zh) * 2020-12-31 2021-05-28 杭州雾联科技有限公司 一种多路串流云游戏控制方法、装置、设备及存储介质
CN113141535A (zh) * 2021-04-27 2021-07-20 臻迪科技股份有限公司 流媒体数据处理方法、装置及电子设备
CN113207017A (zh) * 2021-07-07 2021-08-03 北京蔚领时代科技有限公司 用于云游戏的流媒体数据传输系统

Similar Documents

Publication Publication Date Title
CN108174234A (zh) 一种流媒体传输方法及系统
CN107888342B (zh) 一种网络实时视频传输方法及装置
CN102684833B (zh) 分组传输装置、通信系统
US9661053B2 (en) Generating a plurality of streams
CN101061659B (zh) 自适应前向纠错的方法和设备
EP1457052B1 (en) System and method for streaming multimedia over packet networks
US20060150055A1 (en) Adaptive information delivery system using FEC feedback
CN103023813B (zh) 抖动缓冲器
EP2206270B1 (en) A method and apparatus for streaming scalable multimedia data streams
CN105704580B (zh) 一种视频传输方法
CN108183774A (zh) 一种流媒体传输的前向纠错方法和系统
KR20080059508A (ko) 데이터 통신시스템, 데이터 송신장치, 데이터 송신방법 및패킷 사이즈 및 용장도 결정방법
CN101552660A (zh) 对流媒体数据进行重传、播放的方法、装置及通信系统
US10469202B2 (en) Fec mechanism based on media content
CN101300781A (zh) 控制运动图像数据在网络上的传输的系统和方法
US10020914B2 (en) Methods and apparatus for maximum utilization of a dynamic varying digital data channel
CN110868616A (zh) 一种5g网络下低延时高可靠视频传输方法
Bucciol et al. Perceptual ARQ for H. 264 video streaming over 3G wireless networks
CN113301387B (zh) 数据编解码方法、相关设备及系统
CN113542685B (zh) 一种基于可靠udp的实时超高清视频传输方法
KR100916312B1 (ko) 적응적 가중 오류 정정 부호화 및 다중 표현열 부호화를사용한 비디오 전송 장치 및 그 방법
JP2014007664A (ja) 送信装置、通信システム、及び送信方法
In et al. An Adaptive and Unequal Cross-layer Forward Error Correction Mechanism for Scalable Video Transmission over WLANs

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20180615

RJ01 Rejection of invention patent application after publication