CN111836079B - 一种视频码流的传输方法及装置 - Google Patents
一种视频码流的传输方法及装置 Download PDFInfo
- Publication number
- CN111836079B CN111836079B CN201910312659.3A CN201910312659A CN111836079B CN 111836079 B CN111836079 B CN 111836079B CN 201910312659 A CN201910312659 A CN 201910312659A CN 111836079 B CN111836079 B CN 111836079B
- Authority
- CN
- China
- Prior art keywords
- determining
- resolution
- gear
- rate
- preset
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 144
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 34
- 230000005012 migration Effects 0.000 claims description 40
- 238000013508 migration Methods 0.000 claims description 40
- 238000004364 calculation method Methods 0.000 claims description 23
- 238000011084 recovery Methods 0.000 claims description 17
- 238000012937 correction Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000012544 monitoring process Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 8
- 238000012790 confirmation Methods 0.000 description 8
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2662—Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
- H04N21/2402—Monitoring of the downstream path of the transmission network, e.g. bandwidth available
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种视频码流的传输方法及装置,应用于发送端,涉及网络技术领域,所述方法包括:当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息,数据传输信息包括单向路径时延变化值;根据单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值;根据当前的目标带宽估计值和预设的码率分配算法,确定第一码率;根据第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,传输包含第一视频数据的视频码流。采用本发明,可以解决视频码流传输过程中的丢包问题。
Description
技术领域
本发明涉及网络技术领域,特别是涉及一种视频码流的传输方法及装置。
背景技术
视频码流传输技术是一种发送端将视频数据传输到接收端的技术,应用场景十分广泛。例如,在视频监控场景下,网络摄像机将拍摄的视频传输到监控平台,以供用户在监控平台查看网络摄像机拍摄的视频。
现有的视频码流传输技术为:发送端按照固定的码率对视频数据进行编码,生成第一视频数据,然后将包含第一视频数据的视频码流发送给接收端。接收端对接收到的第一视频数据进行解析播放。
然而,在网络带宽发生波动,致使网络拥塞时,第一视频数据在传输过程中会出现丢包。
发明内容
本申请实施例的目的在于提供一种视频码流的传输方法及装置,可以解决视频码流传输过程中的丢包问题。具体技术方案如下:
第一方面,提供了一种视频码流的传输方法,所述方法应用于发送端,所述方法包括:
当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息,所述数据传输信息包括单向路径时延变化值;
根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值;
根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率;
根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,传输包含所述第一视频数据的视频码流。
可选的,所述根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值,包括:
根据所述单向路径时延变化值和预设的计算公式,计算网络排队延迟值;
根据预设的各延迟区间与带宽使用状态的对应关系,确定所述网络排队延迟值所属的延迟区间对应的带宽使用状态,并将所述网络排队延迟值所属的延迟区间对应的带宽使用状态作为当前的带宽使用状态;其中,预设的各延迟区间与带宽使用状态的对应关系包括至少一个预设的带宽使用状态和与其对应的一个延迟区间;
根据所述当前的带宽使用状态和预设的迁移趋势确定算法,确定当前的带宽迁移趋势;
根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值。
可选的,所述数据传输信息还包括丢包率,所述根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值,包括:
根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定第一带宽估计值;
响应于所述丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数;
计算所述权重参数与所述上一处理周期中计算出的目标带宽估计值的积,得到第二带宽估计值;
将所述第一带宽估计值和所述第二带宽估计值中的最小值作为当前的目标带宽估计值。
可选的,所述响应于所述丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数,包括:
若所述丢包率小于所述预设的基准丢包率的下限,则确定权重参数大于1;
若所述丢包率大于预设基准丢包率的下限且小于预设基准丢包率的上限,则确定所述权重参数等于1;
若所述丢包率大于预设基准丢包率的上限,则确定所述权重参数小于1。
可选的,所述根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,包括:
根据预设的档位划分表,确定预先存储的上一处理周期中确定出的码率和所述第一码率所属的档位,所述档位划分表包括多个档位,及各档位对应的码率区间、帧率和分辨率,相邻的档位对应的码率区间具有重叠部分;
如果所述上一处理周期中确定出的码率所属的档位,与所述第一码率所属的档位中,不存在相同的档位,则根据所述档位划分表,确定所述第一码率对应的第一分辨率,并根据所述档位划分表,确定所述第一码率对应的第一帧率;
根据所述第一码率、所述第一分辨率和所述第一帧率对待发送的源视频数据进行编码,得到编码后的第一视频数据。
可选的,所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率不相同;
所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:
确定所述第一码率所属的档位对应的分辨率集合;
根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;
所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:
确定所述第一码率所属的档位对应的帧率集合;
根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
可选的,所述档位划分表中各档位对应的分辨率均为预设的第二分辨率,所述档位划分表中各档位对应的帧率不相同;
所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:
将所述预设的第二分辨率作为第一分辨率;
所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:
确定所述第一码率所属的档位对应的帧率集合;
根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
可选的,所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率均为预设第二帧率;
所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:
确定所述第一码率所属的档位对应的分辨率集合;
根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;
所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:
将所述预设的第二帧率作为第一帧率。
可选的,所述根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率,包括:
获取当前的视频码流中第一视频数据所占的第一比例;其中,所述视频码流包括所述第一视频数据、FEC冗余数据和/或重传数据;
确定所述当前的目标带宽估计值和所述第一比例的乘积,得到第一码率。
可选的,所述数据传输信息还包括往返时间RTT和丢包率,所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT大于预设的第二往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
按照所述第一FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
可选的,所述数据传输信息还包括往返时间RTT和丢包率;
所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT小于预设的第二往返阈值且大于预设的第一往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
确定所述第一FEC冗余度和预设的冗余系数的乘积,得到第二FEC冗余度;
按照所述第二FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
可选的,所述传输包含所述FEC冗余数据和所述第一视频数据的视频码流,包括:
当接收到重传请求时,确定所述重传请求对应的重传数据;
传输包含所述FEC冗余数据、所述重传数据和所述第一视频数据的视频码流。
可选的,所述数据传输信息还包括往返时间RTT,所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT小于预设的第一往返阈值,则当接收到重传请求时,确定所述重传请求对应的重传数据;
传输包含所述第一视频数据和所述重传数据的视频码流。
第二方面,提供了一种视频码流的传输装置,所述装置应用于发送端,所述装置包括:
接收模块,用于当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息,所述数据传输信息包括单向路径时延变化值;
估计模块,用于根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值;
分配模块,用于根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率;
编码模块,用于根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据;
传输模块,用于传输包含所述第一视频数据的视频码流。
可选的,所述估计模块,包括:
第一计算单元,用于根据所述单向路径时延变化值和预设的计算公式,计算网络排队延迟值;
第一确定单元,用于根据预设的各延迟区间与带宽使用状态的对应关系,确定所述网络排队延迟值所属的延迟区间对应的带宽使用状态,并将所述网络排队延迟值所属的延迟区间对应的带宽使用状态作为当前的带宽使用状态;其中,预设的各延迟区间与带宽使用状态的对应关系包括至少一个预设的带宽使用状态和与其对应的一个延迟区间;
第二确定单元,用于根据所述当前的带宽使用状态和预设的迁移趋势确定算法,确定当前的带宽迁移趋势;
第三确定单元,用于根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值。
可选的,所述数据传输信息还包括丢包率,所述第三确定单元,包括:
第一确定子单元,用于根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定第一带宽估计值;
第二确定子单元,用于响应于所述丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数;
第一计算子单元,用于计算所述权重参数与所述上一处理周期中计算出的目标带宽估计值的积,得到第二带宽估计值;
第三确定子单元,用于将所述第一带宽估计值和所述第二带宽估计值中的最小值作为当前的目标带宽估计值。
可选的,所述第二确定子单元,具体用于:
若所述丢包率小于所述预设的基准丢包率的下限,则确定权重参数大于1;
若所述丢包率大于预设基准丢包率的下限且小于预设基准丢包率的上限,则确定所述权重参数等于1;
若所述丢包率大于预设基准丢包率的上限,则确定所述权重参数小于1。
可选的,所述编码模块,包括:
第四确定单元,用于根据预设的档位划分表,确定预先存储的上一处理周期中确定出的码率和所述第一码率所属的档位,所述档位划分表包括多个档位,及各档位对应的码率区间、帧率和分辨率,相邻的档位对应的码率区间具有重叠部分;
第五确定单元,用于如果所述上一处理周期中确定出的码率所属的档位,与所述第一码率所属的档位中,不存在相同的档位,则根据所述档位划分表,确定所述第一码率对应的第一分辨率,并根据所述档位划分表,确定所述第一码率对应的第一帧率;
第六确定单元,用于根据所述第一码率、所述第一分辨率和所述第一帧率对待发送的源视频数据进行编码,得到编码后的第一视频数据。
可选的,所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率不相同;
所述第五确定单元,具体用于:
确定所述第一码率所属的档位对应的分辨率集合;
根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;
确定所述第一码率所属的档位对应的帧率集合;
根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
可选的,所述档位划分表中各档位对应的分辨率均为预设的第二分辨率,所述档位划分表中各档位对应的帧率不相同;
所述第五确定单元,具体用于:
将所述预设的第二分辨率作为第一分辨率;
确定所述第一码率所属的档位对应的帧率集合;
根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
可选的,所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率均为预设第二帧率;
所述第五确定单元,具体用于:
确定所述第一码率所属的档位对应的分辨率集合;
根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;
将所述预设的第二帧率作为第一帧率。
可选的,所述分配模块,具体用于:
获取当前的视频码流中第一视频数据所占的第一比例;其中,所述视频码流包括所述第一视频数据、FEC冗余数据和/或重传数据;
确定所述当前的目标带宽估计值和所述第一比例的乘积,得到第一码率。
可选的,所述数据传输信息还包括往返时间RTT和丢包率,所述传输模块,包括:
第二计算单元,用于如果所述RTT大于预设的第二往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
第一编码单元,用于按照所述第一FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
第一传输单元,用于传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
可选的,所述数据传输信息还包括往返时间RTT和丢包率;
所述传输模块模块,包括:
第三计算单元,用于如果所述RTT小于预设的第二往返阈值且大于预设的第一往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
第四计算单元,用于确定所述第一FEC冗余度和预设的冗余系数的乘积,得到第二FEC冗余度;
第二编码单元,用于按照所述第二FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
第二传输单元,用于传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
可选的,所述第二传输单元,具体用于:
当接收到重传请求时,确定所述重传请求对应的重传数据;
传输包含所述FEC冗余数据、所述重传数据和所述第一视频数据的视频码流。
可选的,所述数据传输信息还包括往返时间RTT,所述传输模块,包括:
第七确定单元,用于如果所述RTT小于预设的第一往返阈值,则当接收到重传请求时,确定所述重传请求对应的重传数据;
第三传输单元,用于传输包含所述第一视频数据和所述重传数据的视频码流。
第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面所述的方法步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法步骤。
本申请实施例提供的一种视频码流的传输方法及装置,当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息,数据传输信息包括单向路径时延变化值;根据单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值;根据当前的目标带宽估计值和预设的码率分配算法,确定第一码率;根据第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,传输包含第一视频数据的视频码流。本发明可以根据单向路径时延变化值,确定当前的目标带宽估计值,并根据当前的目标带宽估计值确定第一码率,然后向接收端发送码率为第一码率的第一视频数据,以使第一视频数据的码率适应当前的带宽,避免网络拥塞,从而避免丢包,解决了视频码流输出过程中的丢包问题。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种视频码流的传输方法流程图;
图2为根据一实施例示出图1中一种对待发送的源视频数据进行编码的方法流程图;
图3为本申请实施例提供的一种视频码流的传输装置结构示意图;
图4为本申请实施例提供的一种视频码流的电子设备结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供了一种视频码流的传输方法,可以应用于发送端。发送端可以获取待发送的源视频数据,并对源视频数据进行编码,得到编码后的第一视频数据,然后向接收端发送包含第一视频数据的视频码流。接收端则可以接收发送端发送的第一视频数据,并可以对第一视频数据进行解析播放。其中,发送端可以是具有视频拍摄和数据传输功能的电子设备,接收端可以是具有视频解析和数据传输功能的电子设备。在视频监控应用场景下,发送端可以为监控相机,接收端可以为监控终端。监控相机可以实时拍摄监控区域,得到源视频数据,并对源视频数据进行编码,得到编码后的第一视频数据,然后向监控终端发送包含第一视频数据的视频码流,监控终端可以对第一视频数据进行解析播放,以使监控管理人员可以观看监控区域的视频画面。
如图1所示,上述视频码流的传输方法可以包括以下步骤:
步骤101,当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息。
其中,数据传输信息可以包括单向路径时延变化值。
在实施中,发送端可以周期性的获取视频码流传输过程中的数据传输信息。当到达预设的处理周期时,发送端可以获取视频码流传输过程中的数据传输信息。例如,发送端可以向接收端发送视频码流,其中,视频码流中的数据可以以数据包的形式存在。发送端可以记录数据包的发送时间,接收端可以接收视频码流,并记录接收的视频码流中数据包的接收时间,然后将数据包的接收时间反馈给发送端,然后,当到达预设的处理周期时,发送端根据视频码流中数据包的发送时间和接收时间,确定单向路径时延变化值。
或者,发送端可以向接收端发送视频码流,以及数据包的发送时间,接收端可以接收视频码流,并记录接收的视频码流中数据包的接收时间,然后,当到达预设的处理周期时,接收端可以根据视频码流中数据包的发送时间和接收时间,确定单向路径时延变化值,并将确定的单向路径时延变化值发送给发送端。发送端接收端发送的单向路径时延变化值。
其中,单向路径时延变化可称为OWDV(One-Way Delay Variation,单向路径时延变化)。接收端确定单向路径时延变化值和发送端确定单向路径时延变化值的方式相同。以发送端确定单向路径时延变化值为例,发送端根据两个相邻数据包组的发送时间和到达时间和公式(1),计算单向路径时延变化值。
d(i)=[t(i)–t(i-1)]–[T(i)–T(i-1)] (1)
其中,d(i)表示单向路径时延变化,T(i)表示第i个数据包组中第一个数据包的发送时间,t(i)表示第i个数据包组中最后一个数据包的到达时间,T(i-1)表示第i-1个数据包组中第一个数据包的发送时间,t(i-1)表示第i-1个数据包组中最后一个数据包的到达时间,数据包组表示一定时间内发送端向接收端发送的数据包的集合。
可选的,发送端还可以获取RTT(Round Trip Time,往返时间)和丢包率,相应的,数据传输信息还可以包括RTT和丢包率。
在实施中,在视频码流传输过程中,接收端还可以统计视频码流中丢失的数据包个数和接收的数据包个数,以此计算丢包率,然后接收端将计算的丢包率发送给发送端,发送端接收接收端发送的丢包率。发送端可以将视频码流中数据包标记有序列号,接收端根据接收到的数据包的序列号,确定接收到的数据包和没有接收到的数据包,得到丢失的数据包的个数和接收到的数据包的个数。发送端可以向接收端发送RTCP(Real-TimeTransport Control Protocol,实时传输控制协议)信息,并记录RTCP的发送时间。接收端接收到发送端发送的RTCP信息后,向发送端发送确认信息。发送端接收到接收端发送的确认信息后,记录确认信息的接收时间,然后,根据RTCP的发送时间和确认信息的接收时间的时间差,得到RTT。
或者,接收端可以向发送端发送RTCP信息,并记录RTCP的发送时间。发送端接收到接收端发送的RTCP信息后,向接收端发送确认信息。接收端接收到发送端发送的确认信息后,记录确认信息的接收时间,然后,根据RTCP的发送时间和确认信息的接收时间的时间差,得到RTT,并将确定出的RTT发送给发送端。
步骤102,根据单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值。
在实施中,发送端可以根据单向路径时延变化值计算出出网络排队延迟,并根据网络排队延迟确定当前的网络状态,然后,根据上一处理周期中计算出的目标带宽估计值和当前的网络状态,确定当前的目标带宽估计值。
可选的,根据单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值的具体处理方式可以为:根据单向路径时延变化值和预设的计算公式,计算网络排队延迟值;根据预设的各延迟区间与带宽使用状态的对应关系,确定网络排队延迟值所属的延迟区间对应的带宽使用状态,并将网络排队延迟值所属的延迟区间对应的带宽使用状态作为当前的带宽使用状态;其中,预设的各延迟区间与带宽使用状态的对应关系包括至少一个预设的带宽使用状态和与其对应的一个延迟区间;根据当前的带宽使用状态和预设的迁移趋势确定算法,确定当前的带宽迁移趋势;根据当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值。
在实施中,发送端可以根据单向路径时延变化值和公式(2),计算网络排队延迟值。
d(i)=dL(i)/C(i)+m(i)+v(i) (2)
其中,d(i)表示单向路径延时变化,dL(i)表示相邻两组数据包组的长度差,C(i)表示网络信道容量,m(i)表示网络排队延迟,v(i)表示零均值噪声。v(i)可以根据d(i)和卡尔曼滤波算法计算得到,C(i)可以通过统计单位时间内发送端向接收端发送的数据量得到。
发送端预先设置有各延迟区间与带宽使用状态的对应关系。例如,带宽使用状态包括过载状态、正常状态和低载状态,其中,过载状态对应的延迟区间为(h,+∞),正常状态对应的延迟区间为(-h,+h),低载状态对应的延迟区间为(–∞,-h)。其中,h为正数。发送端可以根据各延迟区间与带宽使用状态的对应关系,确定网络排队延迟值所属的延迟区间对应的带宽使用状态,并将网络排队延迟值所属的延迟区间对应的带宽使用状态作为当前的带宽使用状态。例如,网络排队延迟值为a,且a>h,则发送端判定a所属的延迟区间为(h,+∞),而延迟区间为(h,+∞)对应的带宽使用状态为过载状态,则发送端确定当前的带宽使用状态为过载状态。
发送端确定当前的带宽使用状态后,可以根据当前的带宽使用状态和预设的迁移趋势确定算法,确定当前的带宽迁移趋势。例如,如果当前的带宽使用状态为过载状态,发送端确定当前的带宽迁移趋势为降低趋势;如果当前的带宽使用状态为低载状态,发送端确定当前的带宽迁移趋势为保持趋势;如果当前的带宽使用状态为正常状态、且上一次的带宽迁移趋势为降低趋势,发送端确定当前的带宽迁移趋势为保持趋势;如果当前的带宽使用状态为正常状态且上一次的带宽迁移趋势不是降低趋势,发送端确定当前带宽迁移趋势为升高趋势。
然后,发送端可以根据当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值。具体过程可以为:根据当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定第一带宽估计值。响应于丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数;计算权重参数与上一处理周期中计算出的目标带宽估计值的积,得到第二带宽估计值;将第一带宽估计值和第二带宽估计值中的最小值作为当前的目标带宽估计值。
其中,响应于丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数的具体过程可以为:若丢包率小于预设的基准丢包率的下限,则确定权重参数大于1;若丢包率大于预设基准丢包率的下限且小于预设基准丢包率的上限,则确定权重参数等于1;若丢包率大于预设基准丢包率的上限,则确定权重参数小于1。
在实施中,发送端可以根据当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定第一带宽估计值。例如,如果当前的带宽迁移趋势为降低趋势,则发送端将上一次的目标带宽估计值按照预设的第二降低比例降低,得到第一带宽估计值。其中,第二降低比例可以由技术人员根据经验设置,比如设置为0.15。如果当前的带宽迁移趋势为升高趋势时,则发送端将上一次的目标带宽估计值按照预设的第二升高比例升高,得到第一带宽估计值。其中,第二升高比例可以由技术人员根据经验设置,比如设置为0.05。如果当前的带宽迁移趋势为保持趋势,则发送端将上一次的目标带宽估计值作为第一带宽估计值。
发送端可以响应于丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数。其中,预设的基准丢包率区间可以由技术人员根据经验设置,比如设置为(0.02,0.1)。若丢包率小于预设的基准丢包率的下限,则确定权重参数大于1,例如确定权重参数为1.08;若丢包率大于预设基准丢包率的下限且小于预设基准丢包率的上限,则确定权重参数等于1,;若丢包率大于预设基准丢包率的上限,则确定权重参数小于1,例如确定权重参数为0.5*l,l为丢包率。
发送端可以计算权重参数与上一处理周期中计算出的目标带宽估计值的积,得到第二带宽估计值,然后将第一带宽估计值和第二带宽估计值中的最小值作为当前的目标带宽估计值。
这样,发送端可以根据单向路径时延变化值,确定当前的目标带宽估计值,以使发送端可以根据当前的目标带宽估计值可以确定适应当前带宽的第一码率,避免网络拥塞,从而避免丢包,并提高了带宽利用率。
步骤103,根据目标带宽估计值和预设的码率分配算法,确定第一码率。
在实施中,发送端可以根据目标带宽估计值,确定第一码率。例如,发送端可以将目标带宽估计值作为第一码率,或将目标带宽估计值与预设估计系数的乘积作为第一码率,其中,预设估计系数为小于1的正数。第一码率小于或等于目标带宽估计值,以使发送端按照第一码率向接收端发送待发送的源视频数据,满足当前的带宽状态,避免因第一码率超出目标带宽估计值,而发生网络拥塞,导致丢包。
步骤104,根据第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,传输包含第一视频数据的视频码流。
在实施中,发送端可以按照第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,也即,第一视频数据的码率为第一码率。发送端可以将第一视频数据封装成第一视频数据包,然后按照RTP协议,向接收端发送包含第一视频数据包的视频码流。
这样,可以根据单向路径时延变化,确定当前的目标带宽估计值,并根据当前的目标带宽估计值确定第一码率,然后向接收端发送码率为第一码率的第一视频数据,以使第一视频数据的码率适应当前的带宽,避免网络拥塞,从而避免丢包,并提高了带宽利用率。
可选的,如图2所示,为本申请实施例提供的一种对待发送的源视频数据进行编码的方法,具体可以包括以下步骤:
步骤201,根据预设的档位划分表,确定预先存储的上一处理周期中确定出的码率和第一码率所属的档位。
其中,档位划分表包括多个档位,及各档位对应的码率区间、帧率和分辨率,相邻的档位对应的码率区间具有重叠部分。
在实施中,发送端可以根据预设的档位划分表,确定预先存储的上一处理周期中确定出的码率和第一码率所属的档位。例如,档位1对应的码率区间为(0,640),档位2对应的码率区间为(384,640),两个码率区间具有重叠区域(384,680)。发送端可以根据档位划分表,分别确定上一处理周期中确定出的码率和第一码率所属的档位。例如,假设第一码率为200kbps,上一处理周期中确定出的码率为600kbs,则第一码率所属的码率区间为(0,640),所属的档位为档位1。上一处理周期中确定出的码率所属的码率区间有(0,640)和(384,1536),所属的档位有档位1和档位2。
步骤202,如果上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,则根据档位划分表,确定第一码率对应的第一分辨率,并根据档位划分表,确定第一码率对应的第一帧率。
在实施中,为了不因码率变动而频繁的调整分辨率和帧率,如果上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,存在相同的档位,则发送端将上一处理周期中确定出的分辨率和上一处理周期中确定出的帧率分别作为第一分辨率和第一帧率。例如,第一码率所属的档位为档位1,上一处理周期中确定出的码率所属的档位有档位1和档位2,则上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,存在相同的档位1,发送端将上一处理周期中确定出的分辨率和上一处理周期中确定出的帧率分别作为第一分辨率和第一帧率。
如果上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,则根据档位划分表,确定第一码率对应的第一分辨率,并根据档位划分表,确定第一码率对应的第一帧率。例如,假设第一码率所属的档位有档位1和档位2,上一处理周期中确定出的码率所属的档位为档位4,则上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,发送端根据档位划分表,确定第一码率对应的第一分辨率,并根据档位划分表,确定第一码率对应的第一帧率,具体过程后续会详细说明。
可选的,档位划分表中各档位对应的分辨率不相同,档位划分表中各档位对应的帧率不相同。相应的,根据档位划分表,确定第一码率对应的第一分辨率的具体过程可以为:确定第一码率所属的档位对应的分辨率集合;根据分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率。相应的,根据档位划分表,确定第一码率对应的第一帧率的具体处理过程可以为:确定第一码率所属的档位对应的帧率集合;根据帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
在实施中,档位划分表中可以设置有多个档位,每个档位分别对应不同的码率区间、不同的分辨率和不同的帧率,如表1所示,为本申请实施例提供的一种档位划分表的示例。
表1
档位 | 分辨率 | 码率档位区间(kbps) | 帧率(fps) |
档位1 | 640*480 | (0,640) | 15 |
档位2 | 960*540 | (384,1536) | 20 |
档位3 | 1280*720 | (1024,3000) | 25 |
档位4 | 1920*1080 | (2000,5000) | 30 |
如果上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,则发送端确定第一码率所属的档位对应的分辨率集合和帧率集合。例如,假设第一码率为500、上一处理周期中确定出的码率为3500,则第一码率所属的档位有档位1和档位2,上一处理周期中确定出的码率所属的档位为档位4,则上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,发送端确定第一码率500所属的档位1对应的分辨率640*480和所属的档位2对应的分辨率960*540,得到第一码率所属的档位对应的分辨率集合{640*480,960*540}。假设第一码率为100、上一处理周期中确定出的码率为3500,则第一码率所属的档位为档位1,上一处理周期中确定出的码率所属的档位为档位4,则上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,发送端确定第一码率100所属的档位1对应的分辨率640*480,得到第一码率所属的档位对应的分辨率集合{640*480}。
第一码率所属的档位对应的帧率集合的确定方式和上述第一码率所属的档位对应的分辨率集合的确定方式相同,此处就不在举例说明。
发送端判断第一码率所属的档位对应的分辨率集合中的最大分辨率和最小分辨率分别与上一处理周期中确定出的分辨率之间的大小关系。如果上一处理周期中确定出的分辨率大于分辨率集合中的最大分辨率,则发送端将分辨率集合中的最大分辨率作为第一分辨率;如果上一确定出的分辨率小于分辨率集合中的最小分辨率,则发送端将分辨率集合中的最小分辨率作为第一分辨率。
发送端判断第一码率所属的档位对应帧率集合中的最大帧率和最小帧率分别与上一处理周期中确定出的帧率之间的大小关系。如果上一处理周期中确定出的帧率大于帧率集合中的最大帧率,则发送端将帧率集合中的最大帧率作为第一帧率;如果上一确定出的帧率小于帧率集合中的最小帧率,则发送端将帧率集合中的最小帧率作为第一帧率。
例如,假设第一码率所属的档位对应分辨率集合为{640*480,960*540},上一处理周期中确定出的分辨率为1280*720,上一处理周期中确定出的分辨率为1280*720大于分辨率集合{640*480,960*540}中的最大分辨率960*540,则发送端将第分辨率集合{640*480,960*540}中的最大分辨率960*540作为第一分辨率。第一帧率的确定方式和上述第一分辨率的确定方式相同,此处就不在举例说明。
需要说明的是,分辨率集合中最多有两个相邻档位的分辨率,所以分辨率集合中最大的分辨率和最小的分辨率之间不会存在其他档位的分辨率。所以上一处理周期中确定出的分辨率不会处于分辨率集合中最大的分辨率和最小的分辨率之间。帧率集合中最多有两个相邻档位的帧率,所以帧率集合中最大的帧率和最小的帧率之间不会存在其他档位的帧率。所以上一处理周期中确定出的帧率不会处于帧率集合中最大的帧率和最小的帧率之间。
这样,在用户对视频画面没有特殊要求的情况下,可根据第一码率和档位划分表,确定保证视频画面效果较好的最优分辨率和最优帧率。
可选的,档位划分表中各档位对应的分辨率均为预设的第二分辨率,档位划分表中各档位对应的帧率不相同。相应的,根据档位划分表,确定第一码率对应的第一分辨率的具体处理过程可以为:将预设的第二分辨率作为第一分辨率。根据档位划分表,确定第一码率对应的第一帧率的具体处理过程可以为:确定第一码率所属的档位对应的帧率集合;根据帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
在实施中,档位划分表中可以设置有多个档位,每个档位分别对应不同的码率区间、不同的帧率和相同的分辨率,如表2所示,为本申请实施例提供的一种档位划分表的示例。
表2
档位 | 帧率(fps) | 码率档位区间(kbps) | 第二分辨率 |
档位1 | 15 | (0,640) | 640*480 |
档位2 | 20 | (384,1536) | 640*480 |
档位3 | 25 | (1024,3000) | 640*480 |
档位4 | 30 | (2000,5000) | 640*480 |
在实施中,如果上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,则发送端将预设的第二分辨率640*480作为第一分辨率,并且发送端可以确定第一码率所属的档位对应的帧率集合。例如,假设第一码率为500、上一处理周期中确定出的码率为3500,则第一码率所属的档位有档位1和档位2,上一处理周期中确定出的码率所属的档位为档位4,则上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,发送端确定第一码率500所属的档位1对应的帧率15和所属的档位2对应的帧率20,得到第一码率所属的档位对应的帧率集合{15,20}。
发送端可以判断第一码率所属的档位对应的帧率集合中的最大帧率和最小帧率分别与上一处理周期中确定出的帧率之间的大小关系。如果上一处理周期中确定出的帧率大于帧率集合中的最大帧率,则发送端将帧率集合中的最大帧率作为第一帧率;如果上一确定出的帧率小于帧率集合中的最小帧率,则发送端将帧率集合中的最小帧率作为第一帧率。例如,假设第一码率所属的档位对应的帧率集合为{15,20},上一处理周期中确定出的帧率为30,上一处理周期中确定出的帧率为30大于帧率集合{15,20}中的最大帧率20,则发送端将帧率集合{15,20}中的最大帧率20作为第一帧率。
需要说明的是,帧率集合中最多有两个相邻档位的帧率,所以帧率集合中最大的帧率和最小的帧率之间不会存在其他档位的帧率。所以上一处理周期中确定出的帧率不会处于帧率集合中最大的帧率和最小的帧率之间。
这样,在对分辨率有要求的应用场景中,例如发送端为部署在静止场景中的相机时,或者接收端解码性能受限的情况(例如要求分辨率不能高于某一指定分辨率)时,可以预先设置第二分辨率,并根据第一码率和档位划分表,确定最优的帧率。
可选的,档位划分表中各档位对应的分辨率不相同,档位划分表中各档位对应的帧率均为预设第二帧率。相应的,根据档位划分表,确定第一码率对应的第一分辨率的具体处理过程可以为:确定第一码率所属的档位对应的分辨率集合;根据分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率。相应的,根据档位划分表,确定第一码率对应的第一帧率的具体处理过程可以为:将预设的第二帧率作为第一帧率。
在实施中,档位划分表中可以设置有多个档位,每个档位分别对应不同的码率区间、不同的分辨率和相同的第二帧率,如表3所示,为本申请实施例提供的一种档位划分表的示例。
表3
档位 | 分辨率 | 码率档位区间(kbps) | 第二帧率(fps) |
档位1 | 640*480 | (0,640) | 30 |
档位2 | 960*540 | (384,1536) | 30 |
档位3 | 1280*720 | (1024,3000) | 30 |
档位4 | 1920*1080 | (2000,5000) | 30 |
在实施中,如果上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,则发送端确定第一码率所属的档位对应的分辨率集合。例如,假设第一码率为500、上一处理周期中确定出的码率为3500,则第一码率所属的档位有档位1和档位2,上一处理周期中确定出的码率所属的档位为档位4,则上一处理周期中确定出的码率所属的档位,与第一码率所属的档位中,不存在相同的档位,发送端确定第一码率500所属的档位1对应的分辨率640*480和所属的档位2对应的分辨率960*540,得到第一码率所属的档位对应的分辨率集合{640*480,960*540}。
发送端可以判断第一码率所属的档位对应的分辨率集合中的最大分辨率和最小分辨率分别与上一处理周期中确定出的分辨率之间的大小关系。如果上一处理周期中确定出的分辨率大于分辨率集合中的最大分辨率,则发送端将分辨率集合中的最大分辨率作为第一分辨率;如果上一确定出的分辨率小于分辨率档位集合中的最小分辨率,则发送端将分辨率集合中的最小分辨率作为第一分辨率。例如,假设分辨率集合为{640*480,960*540},上一处理周期中确定出的分辨率为1280*720,上一处理周期中确定出的分辨率为1280*720大于分辨率集合{640*480,960*540}中的最大分辨率960*540,则发送端将分辨率集合{640*480,960*540}中的最大分辨率960*540作为第一分辨率。
需要说明的是,分辨率集合中最多有两个相邻档位的分辨率,所以分辨率集合中最大的分辨率和最小的分辨率之间不会存在其他档位的分辨率。所以上一处理周期中确定出的分辨率不会处于分辨率集合中最大的分辨率和最小的分辨率之间。
这样,在对帧率有要求的应用场景中,例如发送端为部署在运动场景中的相机时,为了保证画面的刷新频率,捕捉更多运动细节,可以预先设置第二帧率,并根据第一码率和档位划分表,确定最优的分辨率。
步骤203,根据第一码率、第一分辨率和第一帧率对待发送的源视频数据进行编码,得到编码后的第一视频数据。
在实施中,发送端可以根据第一码率、第一分辨率和第一帧率对待发送的源视频数据进行编码,得到编码后的第一视频数据。
可选的,根据目标带宽估计值和预设的码率分配算法,确定第一码率的具体处理过程可以为:获取第一视频数据在视频码流中所占的第一比例;其中,视频码流包括第一视频数据、FEC冗余数据和/或重传数据。确定目标带宽估计值和第一比例的乘积,得到第一码率。
在实施中,发送端可以统计预设时间段内向接收端发送的视频码流的数据量和视频码流中第一视频数据的数据量,然后计算第一视频数据的数据量与视频码流的数据量的比值,得到第一视频数据在视频码流中所占的第一比例。例如,视频码流中一般包括三种数据,第一种为根据待发送的源视频数据进行编码,得到的第一视频数据;第二种为根据第一视频数据进行FEC(Forward Error Correction,前向纠错)编码,得到的FEC冗余数据;第三种为根据接收端发送的重传请求,确定出的重传数据。
发送端可以分别统计一段时间内向接收端发送的第一视频数据的数据量、FEC冗余数据的数据量和重传数据的数据量,然后将统计的这三种数据的数据量的和作为视频码流的数据量,然后计算第一视频数据的数据量与视频码流的数据量的比值,得到第一视频数据在视频码流中所占的第一比例。然后,发送端可以计算目标带宽估计值和第一比例的乘积,并将计算的结果作为第一码率。
这样,发送端可以根据当前的目标带宽估计值可以确定适应当前带宽的第一码率,避免网络拥塞,从而避免丢包,并提高了带宽利用率。
可选的,数据传输信息还包括往返时间RTT和丢包率。相应的,传输包含第一视频数据的视频码流的具体过程可以为:如果RTT大于预设的第二往返阈值,则根据丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;按照第一FEC冗余度对第一视频数据进行FEC编码,生成FEC冗余数据;传输包含FEC冗余数据和第一视频数据的视频码流。
在实施中,发送端中可以预先设置有第二往返阈值,例如,第二往返阈值可以为200ms,如果RTT大于预设的第二往返阈值,则发送端可以根据丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式计算第一FEC冗余度。例如,假设按照[m,k]方式对第一视频包进行FEC编码,其中,m是第一视频数据包的个数,k是FEC冗余数据包的个数,m个第一视频数据包和k个FEC冗余数据包组成一个数据包组,数据包组中的数据包的个数为n=m+k。在一个数据包组中,任意丢失k个数据包,都可以通过m个数据包进行恢复,假设丢包率为l、第一视频数据包的个数m,则n个数据包中,单个数据包被收到的概率为P1=1-l,n个数据包都收到的概率为Pn=(1-l)n,收到m个数据包的概率为n个数据包中只要收到大于或等于m个数据包,丢失的视频数据包就可以被恢复,恢复的概率可由公式(3)计算。
发送端可以根据公式(3)和预设的恢复率和预设的数据包组中第一视频数据包的个数,计算出数据包组中数据包的个数n,并根据数据包个数n和第一视频数据包个数m,计算出FEC冗余数据包个数k,k=n-m,这样,可以得到第一FEC冗余度,即k/n。
发送端可以按照第一FEC冗余度对第一视频数据进行FEC编码,生成FEC冗余数据,然后传输包含FEC冗余数据和第一视频数据的视频码流。
可选的,数据传输信息还包括往返时间RTT和丢包率。相应的。传输包含第一视频数据的视频码流的具体过程可以为:如果RTT小于预设的第二往返阈值且大于预设的第一往返阈值,则根据丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;确定第一FEC冗余度和预设的冗余系数的乘积,得到第二FEC冗余度;按照第二FEC冗余度对第一视频数据进行FEC编码,生成FEC冗余数据;传输包含FEC冗余数据和第一视频数据的视频码流。
在实施中,如果RTT小于预设的第二往返阈值且大于预设的第一往返阈值,例如RTT小于200ms且大于20ms,则发送端可以根据丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度,并确定第一FEC冗余度和预设的冗余系数的乘积,得到第二FEC冗余度。其中,冗余系数的取值范围为0~1.0。
发送端可以对第一视频数据进行封装,得到第一视频数据包,进而按照第二FEC冗余度对第一视频数据包进行FEC编码,生成FEC冗余数据包,并向接收端发送包含FEC冗余数据包和第一视频数据包的视频码流。
可选的,传输包含FEC冗余数据和第一视频数据的视频码流的具体过程可以为:当接收到重传请求时,确定重传请求对应的重传数据;传输包含FEC冗余数据、重传数据和第一视频数据的视频码流。
在实施中,如果RTT小于预设的第二往返阈值且大于预设的第一往返阈值,则发送端当接收到接收端发送的重传请求时,确定重传请求对应的重传数据,并向接收端发送包含FEC冗余数据、第一视频数据和重传数据的视频码流。
可选的,数据传输信息还包括往返时间RTT。相应的,传输包含第一视频数据的视频码流的具体过程可以为:如果RTT小于预设的第一往返阈值,则当接收到重传请求时,确定重传请求对应的重传数据;传输包含第一视频数据和重传数据的视频码流。
在实施中,如果RTT小于预设的第一往返阈值,则当发送端接收到接收端发送的重传请求时,发送端根据重传请求确定接收端丢失的第一视频数据包,然后发送端将丢失的视频数据包作为重传数据包,并向接收端发送包含第一视频数据包和重传数据包的视频码流。
在实际应用中,端到端的播放时延是一个评价视频码流传输质量的重要参考依据,端到端的播放时延表示:接收端向接收端发送视频数据的时间,到接收端对接收的视频数据进行解析播放的时间之间的延时,如果端到端的播放时延较高,则视频码流传输质量较低,如果端到端的播放时延较低,则视频码流传输质量较高。发送端向接收端发送重传数据会降低端到端的播放延时,发送端向接收端发送FEC冗余数据会降低带宽利用率。
这样,当RTT小于预设的第一往返阈值(即表示端到端的播放时延较低)时,发送端向接收端发送包含第一视频数据和重传数据的视频码流,而不向接收端发送FEC冗余数据,通过重传数据恢复丢包,因当前RTT较小,保证了端到端的播放时延不会过大,并且第一视频数据的码率与重传数据的码率之和接近目标带宽估计值,可以提高带宽利用率。
当RTT大于预设的第二往返阈值(即表示端到端的播放时延较高)时,发送端向接收端发送包含第一视频数据和FEC冗余数据的视频码流,而不向接收端发送重传数据,通过FEC冗余数据恢复丢包,并不通过重传数据恢复丢包,可以避免额外增加端到端的播放时延,并且第一视频数据的码率与重传数据的码率之和接近目标带宽估计值,提高了带宽利用率。
当RTT大于预设的第二往返阈值且小于预设的第一往返阈值时,发送端可以向接收端发送包含第一视频数据、重传数据和FEC冗余数据的视频码流,通过重传数据和FEC冗余数据恢复丢包。其中,FEC冗余数据是按照第二FEC冗余度对第一视频数据进行编码得到的,相比于FEC冗余数据是按照第一FEC冗余度对第一视频数据进行编码得到,FEC冗余数据的码率较低,可以为重传数据预留一定的带宽,以使第一视频数据的码率、FEC冗余数据的码率与重传数据的码率之和接近目标带宽估计值,提高带宽利用率。因为当前RTT不高,重传数据的码率较小,保证了端到端的播放时延不会过大。
基于相同的技术构思,如图3所示,本申请实施例还提供了一种视频码流的传输装置,装置应用于发送端,装置包括:
接收模块301,用于当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息,所述数据传输信息包括单向路径时延变化值;
估计模块302,用于根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值;
分配模块303,用于根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率;
编码模块304,用于根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据;
传输模块305,用于传输包含所述第一视频数据的视频码流。
可选的,所述估计模块302,包括:
第一计算单元,用于根据所述单向路径时延变化值和预设的计算公式,计算网络排队延迟值;
第一确定单元,用于根据预设的各延迟区间与带宽使用状态的对应关系,确定所述网络排队延迟值所属的延迟区间对应的带宽使用状态,并将所述网络排队延迟值所属的延迟区间对应的带宽使用状态作为当前的带宽使用状态;其中,预设的各延迟区间与带宽使用状态的对应关系包括至少一个预设的带宽使用状态和与其对应的一个延迟区间;
第二确定单元,用于根据所述当前的带宽使用状态和预设的迁移趋势确定算法,确定当前的带宽迁移趋势;
第三确定单元,用于根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值。
可选的,所述数据传输信息还包括丢包率,所述第三确定单元,包括:
第一确定子单元,用于根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定第一带宽估计值;
第二确定子单元,用于响应于所述丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数;
第一计算子单元,用于计算所述权重参数与所述上一处理周期中计算出的目标带宽估计值的积,得到第二带宽估计值;
第三确定子单元,用于将所述第一带宽估计值和所述第二带宽估计值中的最小值作为当前的目标带宽估计值。
可选的,所述第二确定子单元,具体用于:
若所述丢包率小于所述预设的基准丢包率的下限,则确定权重参数大于1;
若所述丢包率大于预设基准丢包率的下限且小于预设基准丢包率的上限,则确定所述权重参数等于1;
若所述丢包率大于预设基准丢包率的上限,则确定所述权重参数小于1。
可选的,所述编码模块304,包括:
第四确定单元,用于根据预设的档位划分表,确定预先存储的上一处理周期中确定出的码率和所述第一码率所属的档位,所述档位划分表包括多个档位,及各档位对应的码率区间、帧率和分辨率,相邻的档位对应的码率区间具有重叠部分;
第五确定单元,用于如果所述上一处理周期中确定出的码率所属的档位,与所述第一码率所属的档位中,不存在相同的档位,则根据所述档位划分表,确定所述第一码率对应的第一分辨率,并根据所述档位划分表,确定所述第一码率对应的第一帧率;
第六确定单元,用于根据所述第一码率、所述第一分辨率和所述第一帧率对待发送的源视频数据进行编码,得到编码后的第一视频数据。
可选的,所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率不相同;
所述第五确定单元,具体用于:
确定所述第一码率所属的档位对应的分辨率集合;
根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;
确定所述第一码率所属的档位对应的帧率集合;
根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
可选的,所述档位划分表中各档位对应的分辨率均为预设的第二分辨率,所述档位划分表中各档位对应的帧率不相同;
所述第五确定单元,具体用于:
将所述预设的第二分辨率作为第一分辨率;
确定所述第一码率所属的档位对应的帧率集合;
根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
可选的,所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率均为预设第二帧率;
所述第五确定单元,具体用于:
确定所述第一码率所属的档位对应的分辨率集合;
根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;
将所述预设的第二帧率作为第一帧率。
可选的,所述分配模块303,具体用于:
获取当前的视频码流中第一视频数据所占的第一比例;其中,所述视频码流包括所述第一视频数据、FEC冗余数据和/或重传数据;
确定所述当前的目标带宽估计值和所述第一比例的乘积,得到第一码率。
可选的,所述数据传输信息还包括往返时间RTT和丢包率,所述传输模块305,包括:
第二计算单元,用于如果所述RTT大于预设的第二往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
第一编码单元,用于按照所述第一FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
第一传输单元,用于传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
可选的,所述数据传输信息还包括往返时间RTT和丢包率;
所述传输模块模块305,包括:
第三计算单元,用于如果所述RTT小于预设的第二往返阈值且大于预设的第一往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
第四计算单元,用于确定所述第一FEC冗余度和预设的冗余系数的乘积,得到第二FEC冗余度;
第二编码单元,用于按照所述第二FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
第二传输单元,用于传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
可选的,所述第二传输单元,具体用于:
当接收到重传请求时,确定所述重传请求对应的重传数据;
传输包含所述FEC冗余数据、所述重传数据和所述第一视频数据的视频码流。
可选的,所述数据传输信息还包括往返时间RTT,所述传输模块305,包括:
第七确定单元,用于如果所述RTT小于预设的第一往返阈值,则当接收到重传请求时,确定所述重传请求对应的重传数据;
第三传输单元,用于传输包含所述第一视频数据和所述重传数据的视频码流。
本申请实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息,所述数据传输信息包括单向路径时延变化值;
根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值;
根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率;
根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,传输包含所述第一视频数据的视频码流。
可选的,所述根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值,包括:
根据所述单向路径时延变化值和预设的计算公式,计算网络排队延迟值;
根据预设的各延迟区间与带宽使用状态的对应关系,确定所述网络排队延迟值所属的延迟区间对应的带宽使用状态,并将所述网络排队延迟值所属的延迟区间对应的带宽使用状态作为当前的带宽使用状态;其中,预设的各延迟区间与带宽使用状态的对应关系包括至少一个预设的带宽使用状态和与其对应的一个延迟区间;
根据所述当前的带宽使用状态和预设的迁移趋势确定算法,确定当前的带宽迁移趋势;
根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值。
可选的,所述数据传输信息还包括丢包率,所述根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值,包括:
根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定第一带宽估计值;
响应于所述丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数;
计算所述权重参数与所述上一处理周期中计算出的目标带宽估计值的积,得到第二带宽估计值;
将所述第一带宽估计值和所述第二带宽估计值中的最小值作为当前的目标带宽估计值。
可选的,所述响应于所述丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数,包括:
若所述丢包率小于所述预设的基准丢包率的下限,则确定权重参数大于1;
若所述丢包率大于预设基准丢包率的下限且小于预设基准丢包率的上限,则确定所述权重参数等于1;
若所述丢包率大于预设基准丢包率的上限,则确定所述权重参数小于1。
可选的,所述根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,包括:
根据预设的档位划分表,确定预先存储的上一处理周期中确定出的码率和所述第一码率所属的档位,所述档位划分表包括多个档位,及各档位对应的码率区间、帧率和分辨率,相邻的档位对应的码率区间具有重叠部分;
如果所述上一处理周期中确定出的码率所属的档位,与所述第一码率所属的档位中,不存在相同的档位,则根据所述档位划分表,确定所述第一码率对应的第一分辨率,并根据所述档位划分表,确定所述第一码率对应的第一帧率;
根据所述第一码率、所述第一分辨率和所述第一帧率对待发送的源视频数据进行编码,得到编码后的第一视频数据。
可选的,所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率不相同;
所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:
确定所述第一码率所属的档位对应的分辨率集合;
根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;
所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:
确定所述第一码率所属的档位对应的帧率集合;
根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
可选的,所述档位划分表中各档位对应的分辨率均为预设的第二分辨率,所述档位划分表中各档位对应的帧率不相同;
所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:
将所述预设的第二分辨率作为第一分辨率;
所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:
确定所述第一码率所属的档位对应的帧率集合;
根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率。
可选的,所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率均为预设第二帧率;
所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:
确定所述第一码率所属的档位对应的分辨率集合;
根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;
所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:
将所述预设的第二帧率作为第一帧率。
可选的,所述根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率,包括:
获取当前的视频码流中第一视频数据所占的第一比例;其中,所述视频码流包括所述第一视频数据、FEC冗余数据和/或重传数据;
确定所述当前的目标带宽估计值和所述第一比例的乘积,得到第一码率。
可选的,所述数据传输信息还包括往返时间RTT和丢包率,所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT大于预设的第二往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
按照所述第一FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
可选的,所述数据传输信息还包括往返时间RTT和丢包率;
所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT小于预设的第二往返阈值且大于预设的第一往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
确定所述第一FEC冗余度和预设的冗余系数的乘积,得到第二FEC冗余度;
按照所述第二FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
可选的,所述传输包含所述FEC冗余数据和所述第一视频数据的视频码流,包括:
当接收到重传请求时,确定所述重传请求对应的重传数据;
传输包含所述FEC冗余数据、所述重传数据和所述第一视频数据的视频码流。
可选的,所述数据传输信息还包括往返时间RTT,所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT小于预设的第一往返阈值,则当接收到重传请求时,确定所述重传请求对应的重传数据;
传输包含所述第一视频数据和所述重传数据的视频码流。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一视频码流的传输方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一视频码流的传输方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种视频码流的传输方法,其特征在于,所述方法应用于发送端,所述方法包括:
当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息,所述数据传输信息包括单向路径时延变化值;
根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值;
根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率;
根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,传输包含所述第一视频数据的视频码流;
所述根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据,包括:
根据预设的档位划分表,确定预先存储的上一处理周期中确定出的码率和所述第一码率所属的档位,所述档位划分表包括多个档位,及各档位对应的码率区间、帧率和分辨率,相邻的档位对应的码率区间具有重叠部分;
如果所述上一处理周期中确定出的码率所属的档位,与所述第一码率所属的档位中,不存在相同的档位,则根据所述档位划分表,确定所述第一码率对应的第一分辨率,并根据所述档位划分表,确定所述第一码率对应的第一帧率;
如果所述上一处理周期中确定出的码率所属的档位,与所述第一码率所属的档位中,存在相同的档位,则将所述上一处理周期中确定出的分辨率和所述上一处理周期中确定出的帧率分别作为第一分辨率和第一帧率;
根据所述第一码率、所述第一分辨率和所述第一帧率对待发送的源视频数据进行编码,得到编码后的第一视频数据;
所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率不相同;所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:确定所述第一码率所属的档位对应的分辨率集合;根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:确定所述第一码率所属的档位对应的帧率集合;根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率;
或者,
所述档位划分表中各档位对应的分辨率均为预设的第二分辨率,所述档位划分表中各档位对应的帧率不相同;所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:将所述预设的第二分辨率作为第一分辨率;所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:确定所述第一码率所属的档位对应的帧率集合;根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率;
或者,
所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率均为预设第二帧率;所述根据所述档位划分表,确定所述第一码率对应的第一分辨率,包括:确定所述第一码率所属的档位对应的分辨率集合;根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;所述根据所述档位划分表,确定所述第一码率对应的第一帧率,包括:将所述预设的第二帧率作为第一帧率;
其中,所述第一分辨率为所述分辨率集合中最接近上一处理周期中确定出的分辨率的分辨率,所述第一帧率为所述帧率集合中最接近上一处理周期中确定出的帧率的帧率。
2.根据权利要求1所述的方法,其特征在于,所述根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值,包括:
根据所述单向路径时延变化值和预设的计算公式,计算网络排队延迟值;
根据预设的各延迟区间与带宽使用状态的对应关系,确定所述网络排队延迟值所属的延迟区间对应的带宽使用状态,并将所述网络排队延迟值所属的延迟区间对应的带宽使用状态作为当前的带宽使用状态;其中,预设的各延迟区间与带宽使用状态的对应关系包括至少一个预设的带宽使用状态和与其对应的一个延迟区间;
根据所述当前的带宽使用状态和预设的迁移趋势确定算法,确定当前的带宽迁移趋势;
根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值。
3.根据权利要求2所述的方法,其特征在于,所述数据传输信息还包括丢包率,所述根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定当前的目标带宽估计值,包括:
根据所述当前的带宽迁移趋势和预先存储的上一处理周期中计算出的目标带宽估计值,确定第一带宽估计值;
响应于所述丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数;
计算所述权重参数与所述上一处理周期中计算出的目标带宽估计值的积,得到第二带宽估计值;
将所述第一带宽估计值和所述第二带宽估计值中的最小值作为当前的目标带宽估计值。
4.根据权利要求3所述的方法,其特征在于,所述响应于所述丢包率与预设的基准丢包率区间的上限和下限的比较,确定权重参数,包括:
若所述丢包率小于所述预设的基准丢包率的下限,则确定权重参数大于1;
若所述丢包率大于预设基准丢包率的下限且小于预设基准丢包率的上限,则确定所述权重参数等于1;
若所述丢包率大于预设基准丢包率的上限,则确定所述权重参数小于1。
5.根据权利要求1所述的方法,其特征在于,所述根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率,包括:
获取当前的视频码流中第一视频数据所占的第一比例;其中,所述视频码流包括所述第一视频数据、FEC冗余数据和/或重传数据;
确定所述当前的目标带宽估计值和所述第一比例的乘积,得到第一码率。
6.根据权利要求5所述的方法,其特征在于,所述数据传输信息还包括往返时间RTT和丢包率,所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT大于预设的第二往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
按照所述第一FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
7.根据权利要求5所述的方法,其特征在于,所述数据传输信息还包括往返时间RTT和丢包率;
所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT小于预设的第二往返阈值且大于预设的第一往返阈值,则根据所述丢包率、预设的恢复率和预设的前向纠错FEC冗余度计算公式,计算第一FEC冗余度;
确定所述第一FEC冗余度和预设的冗余系数的乘积,得到第二FEC冗余度;
按照所述第二FEC冗余度对所述第一视频数据进行FEC编码,生成FEC冗余数据;
传输包含所述FEC冗余数据和所述第一视频数据的视频码流。
8.根据权利要求7所述的方法,其特征在于,所述传输包含所述FEC冗余数据和所述第一视频数据的视频码流,包括:
当接收到重传请求时,确定所述重传请求对应的重传数据;
传输包含所述FEC冗余数据、所述重传数据和所述第一视频数据的视频码流。
9.根据权利要求5所述的方法,其特征在于,所述数据传输信息还包括往返时间RTT,所述传输包含所述第一视频数据的视频码流,包括:
如果所述RTT小于预设的第一往返阈值,则当接收到重传请求时,确定所述重传请求对应的重传数据;
传输包含所述第一视频数据和所述重传数据的视频码流。
10.一种视频码流的传输装置,其特征在于,所述装置应用于发送端,所述装置包括:
接收模块,用于当到达预设的处理周期时,获取视频码流传输过程中的数据传输信息,所述数据传输信息包括单向路径时延变化值;
估计模块,用于根据所述单向路径时延变化值和预设的带宽估计算法,确定当前的目标带宽估计值;
分配模块,用于根据所述当前的目标带宽估计值和预设的码率分配算法,确定第一码率;
编码模块,用于根据所述第一码率对待发送的源视频数据进行编码,得到编码后的第一视频数据;
传输模块,用于传输包含所述第一视频数据的视频码流;
所述编码模块,包括:
第四确定单元,用于根据预设的档位划分表,确定预先存储的上一处理周期中确定出的码率和所述第一码率所属的档位,所述档位划分表包括多个档位,及各档位对应的码率区间、帧率和分辨率,相邻的档位对应的码率区间具有重叠部分;
第五确定单元,用于如果所述上一处理周期中确定出的码率所属的档位,与所述第一码率所属的档位中,不存在相同的档位,则根据所述档位划分表,确定所述第一码率对应的第一分辨率,并根据所述档位划分表,确定所述第一码率对应的第一帧率;如果所述上一处理周期中确定出的码率所属的档位,与所述第一码率所属的档位中,存在相同的档位,则将所述上一处理周期中确定出的分辨率和所述上一处理周期中确定出的帧率分别作为第一分辨率和第一帧率;
第六确定单元,用于根据所述第一码率、所述第一分辨率和所述第一帧率对待发送的源视频数据进行编码,得到编码后的第一视频数据;
所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率不相同;所述第五确定单元 ,具体用于:确定所述第一码率所属的档位对应的分辨率集合;根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;确定所述第一码率所属的档位对应的帧率集合;根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率;
或者,
所述档位划分表中各档位对应的分辨率均为预设的第二分辨率,所述档位划分表中各档位对应的帧率不相同;所述第五确定单元,具体用于:将所述预设的第二分辨率作为第一分辨率;确定所述第一码率所属的档位对应的帧率集合;根据所述帧率集合和预先存储的上一处理周期中确定出的帧率,确定第一帧率;
或者,
所述档位划分表中各档位对应的分辨率不相同,所述档位划分表中各档位对应的帧率均为预设第二帧率;所述第五确定单元,具体用于:确定所述第一码率所属的档位对应的分辨率集合;根据所述分辨率集合和预先存储的上一处理周期中确定出的分辨率,确定第一分辨率;将所述预设的第二帧率作为第一帧率;
其中,所述第一分辨率为所述分辨率集合中最接近上一处理周期中确定出的分辨率的分辨率,所述第一帧率为所述帧率集合中最接近上一处理周期中确定出的帧率的帧率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910312659.3A CN111836079B (zh) | 2019-04-18 | 2019-04-18 | 一种视频码流的传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910312659.3A CN111836079B (zh) | 2019-04-18 | 2019-04-18 | 一种视频码流的传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111836079A CN111836079A (zh) | 2020-10-27 |
CN111836079B true CN111836079B (zh) | 2022-09-02 |
Family
ID=72915523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910312659.3A Active CN111836079B (zh) | 2019-04-18 | 2019-04-18 | 一种视频码流的传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111836079B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629826B (zh) * | 2020-12-14 | 2024-05-28 | 京东方科技集团股份有限公司 | 一种网络最大带宽估计方法、装置、电子设备及存储介质 |
CN112272313B (zh) * | 2020-12-23 | 2021-04-16 | 深圳乐播科技有限公司 | 基于hid的音视频传输方法、装置及计算机可读存储介质 |
CN113079347B (zh) * | 2021-03-15 | 2021-12-24 | 中移智行网络科技有限公司 | 一种远程驾驶的实现方法及实现装置 |
CN113747194B (zh) * | 2021-03-18 | 2023-04-07 | 上海达龙信息科技有限公司 | 远程视频传输方法、传输装置、存储介质及电子设备 |
CN113207017B (zh) * | 2021-07-07 | 2021-09-17 | 北京蔚领时代科技有限公司 | 用于云游戏的流媒体数据传输系统 |
CN113596370A (zh) * | 2021-07-26 | 2021-11-02 | 杭州叙简科技股份有限公司 | 一种执法记录仪基于地域网格的码流自适应方法 |
CN113747202B (zh) * | 2021-08-05 | 2023-09-15 | 杭州网易智企科技有限公司 | 一种通过带宽估计发送数据的方法、装置、设备及介质 |
CN113992967B (zh) * | 2021-10-25 | 2022-11-01 | 北京字节跳动网络技术有限公司 | 一种投屏数据传输方法、装置、电子设备及存储介质 |
CN114222169B (zh) * | 2021-12-14 | 2023-10-20 | 咪咕互动娱乐有限公司 | 一种视频流传输方法、通信设备及计算机可读存储介质 |
CN114448569A (zh) * | 2022-01-27 | 2022-05-06 | 阿里巴巴(中国)有限公司 | 数据传输方法、设备及计算机存储介质 |
CN114513474B (zh) * | 2022-02-08 | 2024-03-05 | 聚好看科技股份有限公司 | 视频发送方法、视频发送终端、媒体服务器及存储介质 |
CN114390320B (zh) * | 2022-02-18 | 2024-02-13 | 百果园技术(新加坡)有限公司 | 数据编码码率自适应调节方法、装置、设备和存储介质 |
CN117278444A (zh) * | 2022-06-13 | 2023-12-22 | 维沃移动通信有限公司 | 数据包集合时延的处理方法、装置及通信设备 |
CN117412072A (zh) * | 2022-07-06 | 2024-01-16 | 北京字跳网络技术有限公司 | 一种视频资源管理方法、装置、电子设备及存储介质 |
CN117294851A (zh) * | 2023-11-23 | 2023-12-26 | 此芯科技(上海)有限公司 | 一种视频串流处理装置及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047845A (zh) * | 2006-03-29 | 2007-10-03 | 腾讯科技(深圳)有限公司 | 一种调节视频通讯数据码率的装置和方法 |
CN104159166A (zh) * | 2014-08-07 | 2014-11-19 | 西安交通大学 | 基于移动网络丢包状态的直播视频数据传输差错控制方法 |
CN104618195A (zh) * | 2015-02-16 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 带宽估测方法和装置 |
CN107438031A (zh) * | 2017-08-07 | 2017-12-05 | 成都三零凯天通信实业有限公司 | 多信道自适应网络带宽的音视频流传输控制方法及系统 |
CN109587073A (zh) * | 2019-01-07 | 2019-04-05 | 北京三体云联科技有限公司 | 网络拥塞控制方法、装置及终端设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9762899B2 (en) * | 2011-10-04 | 2017-09-12 | Texas Instruments Incorporated | Virtual memory access bandwidth verification (VMBV) in video coding |
US9906815B2 (en) * | 2011-11-08 | 2018-02-27 | Texas Instruments Incorporated | Delayed duplicate I-picture for video coding |
CN106357453A (zh) * | 2016-09-30 | 2017-01-25 | 邦彦技术股份有限公司 | 一种带宽自适应控制系统及方法 |
-
2019
- 2019-04-18 CN CN201910312659.3A patent/CN111836079B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047845A (zh) * | 2006-03-29 | 2007-10-03 | 腾讯科技(深圳)有限公司 | 一种调节视频通讯数据码率的装置和方法 |
CN104159166A (zh) * | 2014-08-07 | 2014-11-19 | 西安交通大学 | 基于移动网络丢包状态的直播视频数据传输差错控制方法 |
CN104618195A (zh) * | 2015-02-16 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 带宽估测方法和装置 |
CN107438031A (zh) * | 2017-08-07 | 2017-12-05 | 成都三零凯天通信实业有限公司 | 多信道自适应网络带宽的音视频流传输控制方法及系统 |
CN109587073A (zh) * | 2019-01-07 | 2019-04-05 | 北京三体云联科技有限公司 | 网络拥塞控制方法、装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111836079A (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111836079B (zh) | 一种视频码流的传输方法及装置 | |
EP2888844B1 (en) | Device and method for adaptive rate multimedia communications on a wireless network | |
WO2017157303A1 (zh) | 实时通信中的抗丢包方法、装置和系统 | |
EP2888845B1 (en) | Device and method for adaptive rate multimedia communications on a wireless network | |
CN113271316B (zh) | 多媒体数据的传输控制方法和装置、存储介质及电子设备 | |
CN109951254B (zh) | 一种数据处理方法及装置、计算机可读存储介质 | |
US8588093B2 (en) | Streaming communication device, streaming communication method, and streaming communication system | |
JP3231941B2 (ja) | 輻輳防止方法およびパケット通信システム | |
US20080084821A1 (en) | Method and devices for adapting the transmission rate of a data stream when there is interference | |
RU2009116472A (ru) | Динамическая модификация свойств видео | |
US9781488B2 (en) | Controlled adaptive rate switching system and method for media streaming over IP networks | |
CN111741249B (zh) | 一种网络拥塞检测方法及装置 | |
CN110996103A (zh) | 一种根据网络情况对视频编码码率进行调节的方法 | |
CN111263192A (zh) | 视频处理方法及相关设备 | |
CN108322286B (zh) | 一种获得前向纠错fec参数的方法、装置 | |
JP2017076892A (ja) | バッファサイズ決定装置、システム、バッファサイズ決定方法、映像データ再生方法およびプログラム | |
CN115378832B (zh) | 拥塞检测方法、装置及流媒体传输系统、电子设备和介质 | |
US20050138529A1 (en) | Method of and system for video fast update | |
CN114143271B (zh) | 一种基于拥塞检测的带宽估算方法及装置 | |
JP6203026B2 (ja) | レート制御装置及びレート制御プログラム | |
CN113612649B (zh) | 往返估计 | |
CN116980713A (zh) | 一种带宽检测方法、装置、电子设备及存储介质 | |
CN116866676A (zh) | 一种跨网投屏方法及系统 | |
CN117220838A (zh) | 数据包的传输方法、装置、设备及存储介质 | |
Danmusa | Methods of Transmission of High Audio and Video Information on the Network |
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 |