CN115037701A - 视频处理方法、装置、服务器及介质 - Google Patents

视频处理方法、装置、服务器及介质 Download PDF

Info

Publication number
CN115037701A
CN115037701A CN202210722584.8A CN202210722584A CN115037701A CN 115037701 A CN115037701 A CN 115037701A CN 202210722584 A CN202210722584 A CN 202210722584A CN 115037701 A CN115037701 A CN 115037701A
Authority
CN
China
Prior art keywords
frame
duration
picture
time
video
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.)
Granted
Application number
CN202210722584.8A
Other languages
English (en)
Other versions
CN115037701B (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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202210722584.8A priority Critical patent/CN115037701B/zh
Publication of CN115037701A publication Critical patent/CN115037701A/zh
Application granted granted Critical
Publication of CN115037701B publication Critical patent/CN115037701B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/25Management 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/266Channel 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/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本公开关于一种视频处理方法、装置、服务器及介质,属于互联网技术领域。本公开实施例中,针对服务器缓存队列中待传输的每一个视频帧,判断继续传输该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,进而在继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加的情况下,按照各个视频帧的帧类型来进行丢帧处理,如此,一方面,通过预测画面卡顿时长和画面冻结时长的变化情况,不仅参考了画面卡顿时长还参考了画面冻结时长,增加了丢帧处理所参考的信息量,另一方面,按照各个视频帧的帧类型来进行丢帧处理,提供了一种细粒度的丢帧方式,在避免视频的画面冻结的同时,还提高了视频丢帧处理的准确性。

Description

视频处理方法、装置、服务器及介质
技术领域
本公开涉及互联网技术领域,尤其涉及一种视频处理方法、装置、服务器及介质。
背景技术
随着互联网技术的飞速发展,视频逐渐成为一种主流的媒体形式。然而,在网络条件不理想的情况下,视频的播放画面可能会出现卡顿,从而造成用户的体验感不佳,为了避免这种现象的发生,通常会对视频数据进行丢帧处理。
目前,对视频数据进行丢帧处理的方式通常为:服务器实时检测服务器缓存队列的队列积压长度,该服务器缓存队列用于存储待传输的多个视频帧,服务器缓存队列的队列积压长度也即是该服务器缓存队列所存储的多个视频帧的数据量,若该服务器缓存队列的队列积压长度超过该服务器缓存队列的积压长度阈值,则丢弃该服务器缓存队列中的第一个图像组(Group Of Pictures,GOP)。
在上述技术方案中,基于积压长度阈值来进行丢帧处理,视频丢帧处理的准确性较低。
发明内容
本公开提供一种视频处理方法、装置、服务器及介质,提高了视频丢帧处理的准确性。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种视频处理方法,该方法包括:
对于服务器缓存队列中的视频帧,若所述服务器缓存队列的队列积压长度未达到所述视频帧对应的积压长度阈值,则获取所述视频帧的第一帧预测结果,所述服务器缓存队列用于存储待传输的多个视频帧,所述第一帧预测结果用于指示继续传输所述视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
若所述视频帧的第一帧预测结果指示继续传输所述视频帧会造成画面卡顿时长或画面冻结时长的增加,则基于所述多个视频帧的帧类型,对所述多个视频帧进行丢帧处理。
本公开实施例中,针对服务器缓存队列中待传输的每一个视频帧,判断继续传输该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,进而在继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加的情况下,按照各个视频帧的帧类型来进行丢帧处理,如此,一方面,通过预测画面卡顿时长和画面冻结时长的变化情况,不仅参考了画面卡顿时长还参考了画面冻结时长,增加了丢帧处理所参考的信息量,另一方面,按照各个视频帧的帧类型来进行丢帧处理,提供了一种细粒度的丢帧方式,在避免视频的画面冻结的同时,还提高了视频丢帧处理的准确性。
在一些实施例中,所述视频帧对应的积压长度阈值的确定过程包括:
若所述视频帧的帧类型为第一类型,确定所述帧类型对应的积压长度阈值为第一积压长度阈值,所述第一类型表示关键参考帧;或,
若所述视频帧的帧类型为第二类型,确定所述帧类型对应的积压长度阈值为第二积压长度阈值,所述第二类型表示普通参考帧或非参考帧;
其中,所述第一积压长度阈值大于所述第二积压长度阈值。
本公开实施例中,根据关键参考帧、普通参考帧以及非参考帧的特性,设置了第一类型和第二类型,并且分类型设置了不同的积压长度阈值,为关键参考帧设置较大的第一积压长度阈值,为普通参考帧和非参考帧设置较小的第二积压长度阈值,进而在决定是否丢弃第一类型的视频帧时,判断服务器缓存队列的队列积压长度是否超过第一积压长度阈值,在决定是否丢弃第二类型的视频帧时,判断服务器缓存队列的队列积压长度是否超过第二积压长度阈值,考虑了不同类型的视频帧的传输优先级,能够确保不同视频帧按照不同的传输优先级到达终端,进而避免因丢帧过多而造成的画面冻结现象,提高了视频丢帧处理的准确性。
在一些实施例中,获取所述视频帧的第一帧预测结果包括下述至少一项:
获取所述视频帧在第一传输场景下的第一帧预测结果,所述第一传输场景表示在不丢弃所述视频帧的情况下,继续传输视频帧的时长达到第一时长;
获取所述视频帧在第二传输场景下的第一帧预测结果,所述第二传输场景表示在不丢弃所述视频帧的情况下,将所述视频帧所在的图像组以及所述图像组之后的至少一个图像组传输完成。
本公开实施例中,通过判断继续传输一段时长是否会造成画面卡顿时长或画面冻结时长的增加,或者,通过判断传输整个图像组以及之后的至少一个图像组之后是否会造成画面卡顿时长或画面冻结时长的增加,来决定是否执行丢帧处理,充分考虑到了视频帧的画面卡顿和画面冻结,能够在丢帧处理时实现画面卡顿和画面冻结的动态平衡,提升了视频丢帧处理的准确性,从而提升了视频的播放效果。
在一些实施例中,获取所述视频帧在第一传输场景下的第一帧预测结果包括:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第一时刻的画面卡顿时长、画面冻结时长,所述第一时刻为继续传输视频帧的时长达到第一时长的时刻;
基于所述当前时刻的画面卡顿时长、画面冻结时长以及所述第一时刻的画面卡顿时长、画面冻结时长,确定所述视频帧在所述第一传输场景下的第一帧预测结果。
本公开实施例中,通过预测传输一段时长之后所在时刻的画面卡顿时长、画面冻结时长,结合当前时刻的画面卡顿时长、画面冻结时长,对当前时刻和传输一段时长之后所在时刻的画面卡顿时长、画面冻结时长进行比较,以获得该视频帧在该第一传输场景下的第一帧预测结果,能够快速获得该视频帧在该第一传输场景下的第一帧预测结果,提高了获取第一帧预测结果的效果。
在一些实施例中,所述第二传输场景表示在不丢弃所述视频帧的情况下,将所述图像组之后的至少一个图像组中的关键参考帧以及所述视频帧所在的图像组传输完成。
本公开实施例中,考虑到每个图像组内部的关键参考帧所包含的数据最多,将继续传输下一个图像组转换为传输下一个图像组中的关键参考帧,既减少了服务器的计算数据量,还能够避免下一个图像组内的视频帧没有全部到达而造成的干扰。
在一些实施例中,获取所述视频帧在第二传输场景下的第一帧预测结果包括:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第二时刻的画面卡顿时长、画面冻结时长,所述第二时刻为所述视频帧所在的图像组以及所述图像组之后的至少一个图像组均传输完成的时刻;
基于所述当前时刻的画面卡顿时长、画面冻结时长以及所述第二时刻的画面卡顿时长、画面冻结时长,确定所述视频帧在所述第二传输场景下的第一帧预测结果。
本公开实施例中,通过预测当前图像组以及后续图像组均传输完成所在时刻的画面卡顿时长、画面冻结时长,结合当前时刻的画面卡顿时长、画面冻结时长,对当前时刻和传输完成所在时刻的画面卡顿时长、画面冻结时长进行比较,以获得该视频帧在该第二传输场景下的第一帧预测结果,能够快速获得该视频帧在该第二传输场景下的第一帧预测结果,提高了获取第一帧预测结果的效果。
在一些实施例中,基于所述多个视频帧的帧类型,对所述多个视频帧进行丢帧处理包括:
在所述视频帧所在的图像组中,按照所述图像组中多个非参考帧的顺序,依次丢弃所述多个非参考帧,直至所述画面卡顿时长和所述画面冻结时长不再增加;
若所述画面卡顿时长和所述画面冻结时长仍在增加,按照所述图像组中多个普通参考帧的倒序,依次丢弃所述多个普通参考帧,直至所述画面卡顿时长和所述画面冻结时长不再增加。
本公开实施例中,引入了一种更细粒度的丢帧策略,考虑到丢弃任意一个非参考帧都不会对视频的播放质量产生影响,而丢弃任意一个普通参考帧都会导致图像组内后续所有帧的解码,因此优先正序丢弃图像组内的非参考帧,再倒序丢弃普通参考帧,以确保在尽量不影响用户观看质量的同时,还能够降低视频画面的卡顿。
在一些实施例中,所述方法还包括:
对于所述图像组中待丢弃的视频帧,获取所述视频帧的第二帧预测结果,所述第二帧预测结果用于指示丢弃所述视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
若所述视频帧的第二帧预测结果指示丢弃所述视频帧不会造成画面卡顿时长或画面冻结时长的增加,则丢弃所述视频帧,若所述视频帧的第二帧预测结果指示丢弃所述视频帧会造成画面卡顿时长或画面冻结时长的增加,则停止所述丢帧处理。
本公开实施例中,针对图像组中待丢弃的的每一个视频帧,判断丢弃该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,进而在丢弃该视频帧会造成画面卡顿时长或画面冻结时长的增加的情况下,不执行丢帧处理,在丢弃该视频帧不会造成画面卡顿时长或画面冻结时长的增加的情况下,执行丢帧处理,如此,能够进一步提高视频丢帧处理的准确性。
在一些实施例中,任一时刻的画面冻结时长的预测过程包括:
对所述时刻正在传输的图像组进行预测,得到第一图像组;
基于所述第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定所述时刻的画面冻结时长,所述第二图像组为所述第一图像组的后一图像组。
本公开实施例中,利用上述第一传输场景或第二传输场景所指示的信息,预测未来时刻正在传输的第一图像组,进而利用该第一图像组中的最后一个普通参考帧的显示时间戳以及下一个图像组中的关键参考帧的显示时间戳,确定该时刻的画面冻结时长,能够快速确定出该时刻的画面冻结时长,提高了预测画面冻结时长的效率。
在一些实施例中,任一时刻的画面卡顿时长的预测过程包括:
对所述时刻正在传输的图像组进行预测,得到第一图像组,对终端在所述时刻的缓冲区时长以及期望数据时长进行预测,所述缓冲区时长表示所述终端允许接收数据的时长,所述期望数据时长表示所述终端预期接收数据的时长;
基于所述第一图像组的下载时长、所述缓冲区时长以及所述期望数据时长,确定所述时刻的画面卡顿时长,所述下载时长表示所述终端下载所述第一图像组所需的时长,其中,所述画面卡顿时长与所述下载时长成正相关,所述画面卡顿时长与所述缓冲区时长、所述期望数据时长成负相关。
本公开实施例中,利用上述第一传输场景或第二传输场景所指示的信息,预测未来时刻正在传输的第一图像组,并预测终端在该时刻的缓冲区时长以及期望数据时长,进而利用该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该时刻的画面卡顿时长,能够快速确定出该时刻的画面卡顿时长,提高了预测画面卡顿时长的效率。
在一些实施例中,所述第一图像组的下载时长的预测过程包括:
获取所述时刻的网络平均带宽;
基于所述第一图像组的总下载数据量与所述时刻的网络平均带宽,确定所述第一图像组的下载时长。
本公开实施例中,通过预测未来时刻的网络平均带宽,进而利用第一图像组的总下载数据量与该时刻的网络平均带宽,来确定该第一图像组的下载时长,能够快速确定出该第一图像组的下载时长,提高了预测第一图像组的下载时长的效率。
在一些实施例中,所述终端在所述时刻的缓冲区时长的预测过程包括:
基于所述终端在历史时刻所发送的历史缓冲区时长、所述历史时刻与所述时刻的间隔时长以及所述终端在所述间隔时长内的期望数据时长,确定所述终端在所述时刻的缓冲区时长,其中,所述缓冲区时长与所述历史缓冲区时长、所述期望数据时长成正相关,所述缓冲区时长与所述间隔时长成负相关。
本公开实施例中,通过缓冲区时长与该历史缓冲区时长、该期望数据时长之间的正相关关系以及该缓冲区时长与该间隔时长之间的负相关关系,来确定终端的缓冲区时长,能够快速确定出该终端的缓冲区时长,提高了预测缓冲区时长的效率。
在一些实施例中,所述终端在所述时刻的期望数据时长的预测过程包括:
获取所述时刻的平均丢包率;
基于服务器发送时长与所述时刻的平均丢包率,确定所述终端在所述时刻的期望数据时长,所述服务器发送时长表示服务器预期发送数据的时长,其中,所述期望数据时长与所述服务器发送时长成正相关,所述期望数据时长与所述平均丢包率成负相关。
本公开实施例中,通过期望数据时长与该服务器发送时长之间的正相关关系以及该期望数据时长与该平均丢包率之间的负相关关系,来确定终端的期望数据时长,能够快速确定出该终端的期望数据时长,提高了预测期望数据时长的效率。
在一些实施例中,基于所述第一图像组的下载时长、所述缓冲区时长以及所述期望数据时长,确定所述时刻的画面卡顿时长之前,所述方法还包括:
利用多种网络预测算法,基于历史时间段内的网络带宽与丢包率,对未来时间段内的网络带宽与丢包率进行预测,得到所述多种网络预测算法对应的网络带宽预测结果与丢包率预测结果;
在所述多种网络预测算法对应的网络带宽预测结果与丢包率预测结果中,选取预测误差最小的网络带宽预测结果与丢包率预测结果;
基于所述预测误差最小的网络带宽预测结果,确定所述第一图像组的下载时长,基于所述预测误差最小的丢包率预测结果,确定所述第一图像组的期望数据时长。
本公开实施例中,同时以多种网络预测算法进行预测,并实时根据不同网络预测算法的预测误差选出一个精度最高的预测结果,相比较基于固定策略的预测算法,提升了网络的预测能力,确保了网络预测的鲁棒性。
在一些实施例中,在所述多种网络预测算法对应的网络带宽预测结果与丢包率预测结果中,选取预测误差最小的网络带宽预测结果与丢包率预测结果包括:
每间隔第二时长,在所述多种网络预测算法中,选取预测误差最小的网络预测算法;
将所述网络预测算法在下一时刻的网络带宽预测结果与丢包率预测结果,确定为所述下一时刻的网络带宽与丢包率。
本公开实施例中,同时以多种网络预测算法进行预测,并实时根据预测时间窗口内不同网络预测算法的预测误差选出一个精度最高的算法来预测下一时刻的网络情况,相比较基于固定策略的预测算法,提升了网络的预测能力,确保了网络预测的鲁棒性。
在一些实施例中,所述方法还包括:
若所述服务器缓存队列的队列积压长度达到所述积压长度阈值,则丢弃所述服务器缓存队列的第一个图像组。
本公开实施例中,在该服务器缓存队列的队列积压长度达到该积压长度阈值的情况下,直接丢弃该服务器缓存队列的第一个图像组,以避免视频画面的卡顿。
根据本公开实施例的第二方面,提供一种视频处理装置,该装置包括:
获取单元,被配置为执行对于服务器缓存队列中的视频帧,若所述服务器缓存队列的队列积压长度未达到所述视频帧对应的积压长度阈值,则获取所述视频帧的第一帧预测结果,所述第一帧预测结果用于指示继续传输所述视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
处理单元,被配置为执行若所述视频帧的第一帧预测结果指示继续传输所述视频帧会造成画面卡顿时长或画面冻结时长的增加,则基于所述多个视频帧的帧类型,对所述多个视频帧进行丢帧处理。
在一些实施例中,所述装置还包括确定单元,被配置为执行:
若所述视频帧的帧类型为第一类型,确定所述帧类型对应的积压长度阈值为第一积压长度阈值,所述第一类型表示关键参考帧;或,
若所述视频帧的帧类型为第二类型,确定所述帧类型对应的积压长度阈值为第二积压长度阈值,所述第二类型表示普通参考帧或非参考帧;
其中,所述第一积压长度阈值大于所述第二积压长度阈值。
在一些实施例中,获取单元,包括下述至少一项:
第一获取子单元,被配置为执行获取所述视频帧在第一传输场景下的第一帧预测结果,所述第一传输场景表示在不丢弃所述视频帧的情况下,继续传输视频帧的时长达到第一时长;
第二获取子单元,被配置为执行获取所述视频帧在第二传输场景下的第一帧预测结果,所述第二传输场景表示在不丢弃所述视频帧的情况下,将所述视频帧所在的图像组以及所述图像组之后的至少一个图像组传输完成。
在一些实施例中,第一获取子单元,被配置为执行:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第一时刻的画面卡顿时长、画面冻结时长,所述第一时刻为继续传输视频帧的时长达到第一时长的时刻;
基于所述当前时刻的画面卡顿时长、画面冻结时长以及所述第一时刻的画面卡顿时长、画面冻结时长,确定所述视频帧在所述第一传输场景下的第一帧预测结果。
在一些实施例中,所述第二传输场景表示在不丢弃所述视频帧的情况下,将所述图像组之后的至少一个图像组中的关键参考帧以及所述视频帧所在的图像组传输完成。
在一些实施例中,第二获取子单元,被配置为执行:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第二时刻的画面卡顿时长、画面冻结时长,所述第二时刻为所述视频帧所在的图像组以及所述图像组之后的至少一个图像组均传输完成的时刻;
基于所述当前时刻的画面卡顿时长、画面冻结时长以及所述第二时刻的画面卡顿时长、画面冻结时长,确定所述视频帧在所述第二传输场景下的第一帧预测结果。
在一些实施例中,所述处理单元,被配置为执行:
在所述视频帧所在的图像组中,按照所述图像组中多个非参考帧的顺序,依次丢弃所述多个非参考帧,直至所述画面卡顿时长和所述画面冻结时长不再增加;
若所述画面卡顿时长和所述画面冻结时长仍在增加,则按照所述图像组中多个普通参考帧的倒序,依次丢弃所述多个普通参考帧,直至所述画面卡顿时长和所述画面冻结时长不再增加。
在一些实施例中,所述处理单元,还被配置为执行:
对于所述图像组中待丢弃的视频帧,获取所述视频帧的第二帧预测结果,所述第二帧预测结果用于指示丢弃所述视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
若所述视频帧的第二帧预测结果指示丢弃所述视频帧不会造成画面卡顿时长或画面冻结时长的增加,则丢弃所述视频帧,若所述视频帧的第二帧预测结果指示丢弃所述视频帧会造成画面卡顿时长或画面冻结时长的增加,则停止所述丢帧处理。
在一些实施例中,所述装置还包括预测单元,被配置为执行任一时刻的画面冻结时长的预测过程:
对所述时刻正在传输的图像组进行预测,得到第一图像组;
基于所述第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定所述时刻的画面冻结时长,所述第二图像组为所述第一图像组的后一图像组。
在一些实施例中,所述预测单元,还被配置为执行任一时刻的画面卡顿时长的预测过程:
对所述时刻正在传输的图像组进行预测,得到第一图像组,对终端在所述时刻的缓冲区时长以及期望数据时长进行预测,所述缓冲区时长表示所述终端允许接收数据的时长,所述期望数据时长表示所述终端预期接收数据的时长;
基于所述第一图像组的下载时长、所述缓冲区时长以及所述期望数据时长,确定所述时刻的画面卡顿时长,所述下载时长表示所述终端下载所述第一图像组所需的时长,其中,所述画面卡顿时长与所述下载时长成正相关,所述画面卡顿时长与所述缓冲区时长、所述期望数据时长成负相关。
在一些实施例中,所述预测单元,还被配置为执行第一图像组的下载时长的预测过程:
获取所述时刻的网络平均带宽;
基于所述第一图像组的总下载数据量与所述时刻的网络平均带宽,确定所述第一图像组的下载时长。
在一些实施例中,所述预测单元,还被配置为执行终端在所述时刻的缓冲区时长的预测过程:
基于所述终端在历史时刻所发送的历史缓冲区时长、所述历史时刻与所述时刻的间隔时长以及所述终端在所述间隔时长内的期望数据时长,确定所述终端在所述时刻的缓冲区时长,其中,所述缓冲区时长与所述历史缓冲区时长、所述期望数据时长成正相关,所述缓冲区时长与所述间隔时长成负相关。
在一些实施例中,所述预测单元,还被配置为执行终端在所述时刻的期望数据时长的预测过程:
获取所述时刻的平均丢包率;
基于服务器发送时长与所述时刻的平均丢包率,确定所述终端在所述时刻的期望数据时长,所述服务器发送时长表示服务器预期发送数据的时长,其中,所述期望数据时长与所述服务器发送时长成正相关,所述期望数据时长与所述平均丢包率成负相关。
在一些实施例中,所述预测单元,包括:
预测子单元,被配置为执行利用多种网络预测算法,基于历史时间段内的网络带宽与丢包率,对未来时间段内的网络带宽与丢包率进行预测,得到所述多种网络预测算法对应的网络带宽预测结果与丢包率预测结果;
选取子单元,被配置为执行在所述多种网络预测算法对应的网络带宽预测结果与丢包率预测结果中,选取预测误差最小的网络带宽预测结果与丢包率预测结果;
确定子单元,被配置为执行基于所述预测误差最小的网络带宽预测结果,确定所述第一图像组的下载时长,基于所述预测误差最小的丢包率预测结果,确定所述第一图像组的期望数据时长。
在一些实施例中,所述选取子单元,被配置为执行:
每间隔第二时长,在所述多种网络预测算法中,选取预测误差最小的网络预测算法;
将所述网络预测算法在下一时刻的网络带宽预测结果与丢包率预测结果,确定为所述下一时刻的网络带宽与丢包率。
在一些实施例中,所述装置还包括丢弃单元,被配置为执行:
若所述服务器缓存队列的队列积压长度达到所述积压长度阈值,则丢弃所述服务器缓存队列的第一个图像组。
根据本公开实施例的第三方面,提供一种服务器,该服务器包括:
一个或多个处理器;
用于存储该处理器可执行程序代码的存储器;
其中,该处理器被配置为执行该程序代码,以实现上述的视频处理方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质包括:当该计算机可读存储介质中的程序代码由服务器的处理器执行时,使得服务器能够执行上述的视频处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的视频处理方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种视频处理方法的实施环境示意图;
图2是根据一示例性实施例示出的一种视频处理方法的流程图;
图3是根据一示例性实施例示出的一种视频处理方法的流程图;
图4是根据一示例性实施例示出的一种服务器缓存队列的示意图;
图5是根据一示例性实施例示出的一种服务器与终端之间的交互流程图;
图6是根据一示例性实施例示出的一种智能丢帧的效果示意图;
图7是根据一示例性实施例示出的一种丢帧处理流程的示意图;
图8是根据一示例性实施例示出的一种视频处理装置的框图;
图9是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
需要说明的是,本公开实施例所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本公开实施例所涉及到的画面卡顿时长或画面冻结时长等都是在充分授权的情况下获取的。
图1是根据一示例性实施例示出的一种视频处理方法的实施环境示意图,参见图1,该实施环境中包括:服务器101。
服务器101可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式文件系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。在一些实施例中,上述服务器101的数量可以更多或更少,本公开实施例对此不加以限定。当然,服务器101还可以包括其他功能服务器,以便提供更全面且多样化的服务。
在一些实施例中,该实施环境中还包括:终端102。在一些实施例中,服务器101与终端102通过有线或无线通信方式进行直接或间接的连接,本公开实施例对此不作限定。
终端102可以为智能手机、智能手表、台式电脑、手提电脑、虚拟现实终端、增强现实终端、无线终端和膝上型便携计算机等设备中的至少一种。终端102具有通信功能,可以接入有线网络或无线网络。终端102可以泛指多个终端中的一个,本实施例仅以终端102来举例说明。本领域技术人员可以知晓,上述终端的数量可以更多或更少。在一些实施例中,终端102运行有具备视频播放功能的应用程序,如视频播放应用程序或短视频应用程序等等。
在一些实施例中,终端102响应于用户对视频的播放操作,向服务器101发送视频播放请求,则服务器101接收该视频播放请求后,获取该视频播放请求所对应的视频,将该视频传输至终端102,在视频传输的过程中,服务器101利用本公开实施例所提供的视频处理方法,对视频中待传输的视频帧进行丢帧处理,以避免后续视频播放过程中的画面卡顿和画面冻结。在一些实施例中,该视频为直播视频,相应地,终端102响应于用户对直播间的访问操作,向服务器101发送直播间访问请求,则服务器101接收该直播间访问请求后,获取该直播间的直播视频,将该直播视频传输至终端102,在视频传输的过程中,服务器101利用本公开实施例所提供的视频处理方法,对视频中待传输的视频帧进行丢帧处理,以避免后续视频播放过程中的画面卡顿和画面冻结。
图2是根据一示例性实施例示出的一种视频处理方法的流程图,如图2所示,该方法由服务器执行,包括以下步骤:
在步骤201中,服务器对于服务器缓存队列中的视频帧,若该服务器缓存队列的队列积压长度未达到该视频帧对应的积压长度阈值,则获取该视频帧的第一帧预测结果,该服务器缓存队列用于存储待传输的多个视频帧,该第一帧预测结果用于指示继续传输该视频帧是否会造成画面卡顿时长或画面冻结时长的增加。
在步骤202中,若该视频帧的第一帧预测结果指示继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加,则服务器基于该多个视频帧的帧类型,对该多个视频帧进行丢帧处理。
本公开实施例提供的技术方案,针对服务器缓存队列中待传输的每一个视频帧,判断继续传输该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,进而在继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加的情况下,按照各个视频帧的帧类型来进行丢帧处理,如此,一方面,通过预测画面卡顿时长和画面冻结时长的变化情况,不仅参考了画面卡顿时长还参考了画面冻结时长,增加了丢帧处理所参考的信息量,另一方面,按照各个视频帧的帧类型来进行丢帧处理,提供了一种细粒度的丢帧方式,在避免视频的画面冻结的同时,还提高了视频丢帧处理的准确性。
在一些实施例中,该视频帧对应的积压长度阈值的确定过程包括:
若该视频帧的帧类型为第一类型,确定该帧类型对应的积压长度阈值为第一积压长度阈值,该第一类型表示关键参考帧;或,
若该视频帧的帧类型为第二类型,确定该帧类型对应的积压长度阈值为第二积压长度阈值,该第二类型表示普通参考帧或非参考帧;
其中,该第一积压长度阈值大于该第二积压长度阈值。
在一些实施例中,获取该视频帧的第一帧预测结果包括下述至少一项:
获取该视频帧在第一传输场景下的第一帧预测结果,该第一传输场景表示在不丢弃该视频帧的情况下,继续传输视频帧的时长达到第一时长;
获取该视频帧在第二传输场景下的第一帧预测结果,该第二传输场景表示在不丢弃该视频帧的情况下,将该视频帧所在的图像组以及该图像组之后的至少一个图像组传输完成。
在一些实施例中,获取该视频帧在第一传输场景下的第一帧预测结果包括:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第一时刻的画面卡顿时长、画面冻结时长,该第一时刻为继续传输视频帧的时长达到第一时长的时刻;
基于该当前时刻的画面卡顿时长、画面冻结时长以及该第一时刻的画面卡顿时长、画面冻结时长,确定该视频帧在该第一传输场景下的第一帧预测结果。
在一些实施例中,该第二传输场景表示在不丢弃该视频帧的情况下,将该图像组之后的至少一个图像组中的关键参考帧以及该视频帧所在的图像组传输完成。
在一些实施例中,获取该视频帧在第二传输场景下的第一帧预测结果包括:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第二时刻的画面卡顿时长、画面冻结时长,该第二时刻为该视频帧所在的图像组以及该图像组之后的至少一个图像组均传输完成的时刻;
基于该当前时刻的画面卡顿时长、画面冻结时长以及该第二时刻的画面卡顿时长、画面冻结时长,确定该视频帧在该第二传输场景下的第一帧预测结果。
在一些实施例中,基于该多个视频帧的帧类型,对该多个视频帧进行丢帧处理包括:
在该视频帧所在的图像组中,按照该图像组中多个非参考帧的顺序,依次丢弃该多个非参考帧,直至该画面卡顿时长和该画面冻结时长不再增加;
若该画面卡顿时长和该画面冻结时长仍在增加,按照该图像组中多个普通参考帧的倒序,依次丢弃该多个普通参考帧,直至该画面卡顿时长和该画面冻结时长不再增加。
在一些实施例中,该方法还包括:
对于该图像组中待丢弃的视频帧,获取该视频帧的第二帧预测结果,该第二帧预测结果用于指示丢弃该视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
若该视频帧的第二帧预测结果指示丢弃该视频帧不会造成画面卡顿时长或画面冻结时长的增加,则丢弃该视频帧,若该视频帧的第二帧预测结果指示丢弃该视频帧会造成画面卡顿时长或画面冻结时长的增加,则停止该丢帧处理。
在一些实施例中,任一时刻的画面冻结时长的预测过程包括:
对该时刻正在传输的图像组进行预测,得到第一图像组;
基于该第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定该时刻的画面冻结时长,该第二图像组为该第一图像组的后一图像组。
在一些实施例中,任一时刻的画面卡顿时长的预测过程包括:
对该时刻正在传输的图像组进行预测,得到第一图像组,对终端在该时刻的缓冲区时长以及期望数据时长进行预测,该缓冲区时长表示该终端允许接收数据的时长,该期望数据时长表示该终端预期接收数据的时长;
基于该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该时刻的画面卡顿时长,该下载时长表示该终端下载该第一图像组所需的时长,其中,该画面卡顿时长与该下载时长成正相关,该画面卡顿时长与该缓冲区时长、该期望数据时长成负相关。
在一些实施例中,该第一图像组的下载时长的预测过程包括:
获取该时刻的网络平均带宽;
基于该第一图像组的总下载数据量与该时刻的网络平均带宽,确定该第一图像组的下载时长。
在一些实施例中,该终端在该时刻的缓冲区时长的预测过程包括:
基于该终端在历史时刻所发送的历史缓冲区时长、该历史时刻与该时刻的间隔时长以及该终端在该间隔时长内的期望数据时长,确定该终端在该时刻的缓冲区时长,其中,该缓冲区时长与该历史缓冲区时长、该期望数据时长成正相关,该缓冲区时长与该间隔时长成负相关。
在一些实施例中,该终端在该时刻的期望数据时长的预测过程包括:
获取该时刻的平均丢包率;
基于服务器发送时长与该时刻的平均丢包率,确定该终端在该时刻的期望数据时长,该服务器发送时长表示服务器预期发送数据的时长,其中,该期望数据时长与该服务器发送时长成正相关,该期望数据时长与该平均丢包率成负相关。
在一些实施例中,基于该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该时刻的画面卡顿时长之前,该方法还包括:
利用多种网络预测算法,基于历史时间段内的网络带宽与丢包率,对未来时间段内的网络带宽与丢包率进行预测,得到该多种网络预测算法对应的网络带宽预测结果与丢包率预测结果;
在该多种网络预测算法对应的网络带宽预测结果与丢包率预测结果中,选取预测误差最小的网络带宽预测结果与丢包率预测结果;
基于该预测误差最小的网络带宽预测结果,确定该第一图像组的下载时长,基于该预测误差最小的丢包率预测结果,确定该第一图像组的期望数据时长。
在一些实施例中,在该多种网络预测算法对应的网络带宽预测结果与丢包率预测结果中,选取预测误差最小的网络带宽预测结果与丢包率预测结果包括:
每间隔第二时长,在该多种网络预测算法中,选取预测误差最小的网络预测算法;
将该网络预测算法在下一时刻的网络带宽预测结果与丢包率预测结果,确定为该下一时刻的网络带宽与丢包率。
在一些实施例中,该方法还包括:
若该服务器缓存队列的队列积压长度达到该积压长度阈值,则丢弃该服务器缓存队列的第一个图像组。
上述图2所示仅为本公开的基本流程,下面基于一种具体实施方式,来对本公开提供的方案进行进一步阐述,图3是根据一示例性实施例示出的一种视频处理方法的流程图,参见图3,该方法包括:
在步骤301中,服务器对于服务器缓存队列中的视频帧,确定该视频帧对应的积压长度阈值,该服务器缓存队列用于存储待传输的多个视频帧。
本公开实施例中,对于服务器缓存队列中每一个待传输的视频帧,均需执行确定该视频帧对应的积压长度阈值的步骤,进而基于所确定的积压长度阈值执行后续步骤302至步骤307的视频处理过程。其中,积压长度阈值是指该服务器缓存队列所允许存储的最大数据长度。
在一些实施例中,服务器基于视频帧的帧类型,来确定该视频帧对应的积压长度阈值,相应过程包括:若该视频帧的帧类型为第一类型,确定该帧类型对应的积压长度阈值为第一积压长度阈值,该第一类型表示关键参考帧;或,若该视频帧的帧类型为第二类型,确定该帧类型对应的积压长度阈值为第二积压长度阈值,该第二类型表示普通参考帧或非参考帧,其中,该第一积压长度阈值大于该第二积压长度阈值。
其中,关键参考帧也称作基础帧,该关键参考帧包含视频画面的完整数据,在一些实施例中,在对关键参考帧进行解码时,基于该关键参考帧所包含的完整数据就能够独立完成解码,从而得到该关键参考帧的视频画面。普通参考帧也称作变化帧,该普通参考帧表示当前帧的视频画面相对于前一帧的视频画面的变化(或差别),在一些实施例中,在对普通参考帧进行解码时,需要利用前一帧(如一个关键参考帧或一个其他普通参考帧)的视频画面的数据叠加该普通参考帧所指示的变化,来生成该普通参考帧也即当前帧的视频画面。非参考帧表示当前帧的视频画面相对于相邻帧的视频画面的变化(或差别),在一些实施例中,在对非参考帧进行解码时,需要利用相邻帧(如一个关键参考帧和一个普通参考帧,或,两个普通参考帧)的视频画面的数据叠加该非参考帧所指示的变化,来生成该非参考帧也即当前帧的视频画面。第一积压长度阈值与第二积压长度阈值均为预先设定的固定阈值,如50或其他数值,本公开实施例对第一积压长度阈值与第二积压长度阈值的数值不作限定。
需要说明的是,关键参考帧需要为普通参考帧和非参考帧提供参考,也就是说,普通参考帧的解码、非参考帧的解码均需要依赖该关键参考帧,进一步地,普通参考帧需要为非参考帧提供参考,也就是说,非参考帧的解码需要依赖该普通参考帧。在一些实施例中,该关键参考帧提供为I帧(参考帧),该普通参考帧提供为P帧(前向预测编码帧),该非参考帧提供为B帧(双向预测编码帧)。当然,在另一些实施例中,该关键参考帧、该普通参考帧、该非参考帧还能够提供为其他具备上述特性的帧,本公开实施例对此不作限定。本公开实施例后续以该I帧、P帧、B帧为例对方案进行说明。
在上述实施例中,根据关键参考帧、普通参考帧以及非参考帧的特性,设置了第一类型和第二类型,并且分类型设置了不同的积压长度阈值,为关键参考帧设置较大的第一积压长度阈值,为普通参考帧和非参考帧设置较小的第二积压长度阈值,进而在决定是否丢弃第一类型的视频帧时,判断服务器缓存队列的队列积压长度是否超过第一积压长度阈值,在决定是否丢弃第二类型的视频帧时,判断服务器缓存队列的队列积压长度是否超过第二积压长度阈值,考虑了不同类型的视频帧的传输优先级,能够确保不同视频帧按照不同的传输优先级到达终端,进而避免因丢帧过多而造成的画面冻结现象,提高了视频丢帧处理的准确性。
在步骤302中,服务器判断该服务器缓存队列的队列积压长度是否达到该视频帧对应的积压长度阈值,若该服务器缓存队列的队列积压长度未达到该视频帧对应的积压长度阈值,则执行后续步骤303至步骤307。
其中,队列积压长度是指该服务器缓存队列在当前时刻所存储的数据长度。在一些实施例中,该队列积压长度为服务器缓存队列在当前时刻的队列积压字节数,或者,该队列积压长度为服务器缓存队列在当前时刻所存储的音视频内容长度。本公开实施例以队列积压长度作为参考来判断是否达到积压长度阈值,而在另一些实施例中,服务器还获取能够表示服务器缓存队列的积压程度的参数,进而基于该参数来执行步骤302中的判断过程,本公开实施例对此不作限定。
本公开实施例中,采用积压长度阈值来判断当前时刻是否达到视频帧的丢弃阈值,例如,若该服务器缓存队列的队列积压长度达到该积压长度阈值,则表示当前时刻达到视频帧的丢弃阈值,此时触发执行丢帧处理,若该服务器缓存队列的队列积压长度未达到该积压长度阈值,则表示当前时刻未达到视频帧的丢弃阈值,则无需执行丢帧处理。
在一些实施例中,若该服务器缓存队列的队列积压长度达到该积压长度阈值,则服务器丢弃该服务器缓存队列的第一个图像组。在该实施例中,在该服务器缓存队列的队列积压长度达到该积压长度阈值的情况下,直接丢弃该服务器缓存队列的第一个图像组,以避免视频画面的卡顿。其中,图像组也称作画面组,在一些实施例中,服务器缓存队列中的多个视频帧划分为若干图像组。通常地,图像组以关键参考帧作为起点。
示例地,图4是根据一示例性实施例示出的一种服务器缓存队列的示意图,参见图4,图4以I帧、P帧、B帧为例,在一些实施例中,服务器从数据源站接收数据(也就是图4所示出的多个视频帧)之后,将所接收到的该多个视频帧存储至该服务器缓存队列中,进而依次将该多个视频帧发送至终端,在视频帧传输的过程中,对于每一个待传输的视频帧,均需要进行丢帧决策。
在一些实施例中,基于上述步骤302确定该服务器缓存队列的队列积压长度未达到该视频帧对应的积压长度阈值的情况下,服务器获取该视频帧的第一帧预测结果,该第一帧预测结果用于指示继续传输该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,进而基于第一帧预测结果所指示的内容来进行丢帧处理。其中,画面卡顿时长是指视频在终端进行播放的过程中出现画面卡顿的时长,画面卡顿是指画面定格不动的情况。画面冻结时长是指视频在终端进行播放的过程中出现画面冻结的时长,画面冻结是指画面场景没有变化而画面的时间流有变化的情况。需要说明的是,画面卡顿是由于网络带宽不足无法传输视频帧所造成的,画面冻结是由于在视频传输过程中丢弃视频帧过多,或者因丢弃关键参考帧而导致后续普通参考帧或非参考帧无法解码等原因造成的。下面基于步骤303至步骤307,对服务器基于第一帧预测结果所指示的内容来进行丢帧处理的过程进行说明。
在步骤303中,服务器获取该视频帧在第一传输场景下的第一帧预测结果,该第一传输场景表示在不丢弃该视频帧的情况下,继续传输视频帧的时长达到第一时长。
其中,第一时长为预先设定的时长,如1秒。在一些实施例中,服务器获取该视频帧在第一传输场景下的第一帧预测结果的过程包括:获取当前时刻的画面卡顿时长、画面冻结时长以及预测第一时刻的画面卡顿时长、画面冻结时长,该第一时刻为继续传输视频帧的时长达到第一时长的时刻;基于该当前时刻的画面卡顿时长、画面冻结时长以及该第一时刻的画面卡顿时长、画面冻结时长,确定该视频帧在该第一传输场景下的第一帧预测结果。
在本公开实施例中,服务器对任一时刻的画面冻结时长的预测过程包括:服务器对该时刻正在传输的图像组进行预测,得到第一图像组,基于该第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定该时刻的画面冻结时长,该第二图像组为该第一图像组的后一图像组。
相应地,在一些实施例中,服务器获取当前时刻的画面冻结时长的过程包括:服务器基于该当前时刻正在传输的图像组(也即是该视频帧所在的图像组)中的最后一个普通参考帧的显示时间戳以及下一图像组中的关键参考帧的显示时间戳,确定该当前时刻的画面冻结时长。在一些实施例中,服务器预测第一时刻的画面冻结时长的过程包括:服务器对该第一时刻正在传输的图像组进行预测,得到第一图像组,基于该第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定该第一时刻的画面冻结时长。其中,在一些实施例中,服务器预测第一时刻正在传输的第一图像组的过程为:服务器基于当前时刻待传输的至少一个图像组的传输时长以及该第一时长,确定第一时刻正在传输的第一图像组。
针对上述基于第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定画面冻结时长的过程,在一些实施例中,以关键参考帧为I帧、普通参考帧为P帧为例,服务器基于该第一图像组中的最后一个P帧的显示时间戳、第二图像组中的I帧的显示时间戳以及下述公式(1),确定画面冻结时长。
Tfreeze=PTSnext_I-PTSlatest_P (1)
式中,Tfreeze表示画面冻结时长;PTSnext_I表示该第二图像组中的I帧的显示时间戳;PTSlatest_P表示该第一图像组中的最后一个P帧的显示时间戳。
在该实施例中,利用上述第一传输场景所指示的信息,预测未来时刻正在传输的第一图像组,进而利用该第一图像组中的最后一个普通参考帧的显示时间戳以及下一个图像组中的关键参考帧的显示时间戳,确定该时刻的画面冻结时长,能够快速确定出该时刻的画面冻结时长,提高了预测画面冻结时长的效率。
在本公开实施例中,服务器对任一时刻的画面卡顿时长的预测过程包括:服务器对该时刻正在传输的图像组进行预测,得到第一图像组,对终端在该时刻的缓冲区时长以及期望数据时长进行预测,基于该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该时刻的画面卡顿时长。
其中,缓冲区时长表示终端的缓冲区允许接收数据的时长,该缓冲区是指终端的播放器的缓冲区。期望数据时长表示该终端预期接收数据的时长。下载时长表示该终端下载该第一图像组所需的时长。在一些实施例中,该画面卡顿时长与该下载时长成正相关,该画面卡顿时长与该缓冲区时长、该期望数据时长成负相关。
相应地,在一些实施例中,服务器获取当前时刻的画面卡顿时长的过程包括:服务器基于该当前时刻正在传输的图像组(也即是该视频帧所在的图像组)的下载时长、该终端在该当前时刻的缓冲区时长以及该终端在该当前时刻的期望数据时长,确定该当前时刻的画面卡顿时长。在一些实施例中,服务器预测第一时刻的画面卡顿时长的过程包括:服务器对该第一时刻正在传输的图像组进行预测,得到第一图像组,对终端在该第一时刻的缓冲区时长以及期望数据时长进行预测,基于该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该第一时刻的画面卡顿时长。
针对上述基于第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定画面卡顿时长的过程,在一些实施例中,服务器基于该第一图像组的下载时长、该缓冲区时长、该期望数据时长以及下述公式(2),确定画面卡顿时长。
Trebuffer=[Tdownload-Tto_send-qt]+ (2)
式中,Trebuffer表示画面卡顿时长;Tdownload表示第一图像组的下载时长;Tto_send表示该期望数据时长;qt表示该缓冲区时长。其中,[x]+=max(x,0],表示该终端的画面卡顿时长大于或等于0。
在该实施例中,利用上述第一传输场景所指示的信息,预测未来时刻正在传输的第一图像组,并预测终端在该时刻的缓冲区时长以及期望数据时长,进而利用该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该时刻的画面卡顿时长,能够快速确定出该时刻的画面卡顿时长,提高了预测画面卡顿时长的效率。
在上述实施例中,通过预测传输一段时长之后所在时刻的画面卡顿时长、画面冻结时长,结合当前时刻的画面卡顿时长、画面冻结时长,对当前时刻和传输一段时长之后所在时刻的画面卡顿时长、画面冻结时长进行比较,以获得该视频帧在该第一传输场景下的第一帧预测结果,能够快速获得该视频帧在该第一传输场景下的第一帧预测结果,提高了获取第一帧预测结果的效果。
针对上述任一时刻正在传输的第一图像组的下载时长,在一些实施例中,服务器对该第一图像组的下载时长的预测过程包括:服务器获取该时刻的网络平均带宽,基于该第一图像组的总下载数据量与该时刻的网络平均带宽,确定该第一图像组的下载时长。其中,网络平均带宽是指在一段时间内网络带宽的平均值,该网络带宽是指视频码率,表示单位时间内传输的比特数目。在一些实施例中,服务器基于该第一图像组的总下载数据量、该时刻的网络平均带宽以及下述公式(3),确定该第一图像组的下载时长。
Tdownload=B/Ct (3)
式中,Tdownload表示第一图像组的下载时长;B表示该第一图像组的总下载数据量;Ct表示该时刻的网络平均带宽。
在该实施例中,通过预测未来时刻的网络平均带宽,进而利用第一图像组的总下载数据量与该时刻的网络平均带宽,来确定该第一图像组的下载时长,能够快速确定出该第一图像组的下载时长,提高了预测第一图像组的下载时长的效率。
针对上述终端在任一时刻的缓冲区时长,本公开实施例还提供了一种基于反馈的用户缓冲区推断机制,在一些实施例中,服务器预测该终端的缓冲区时长的过程包括:服务器基于该终端在历史时刻所发送的历史缓冲区时长、该历史时刻与该时刻的间隔时长以及该终端在该间隔时长内的期望数据时长,确定该终端在该时刻的缓冲区时长,其中,该缓冲区时长与该历史缓冲区时长、该期望数据时长成正相关,该缓冲区时长与该间隔时长成负相关。
在一些实施例中,服务器基于该终端在历史时刻所发送的历史缓冲区时长、该历史时刻与该时刻的间隔时长、该终端在该间隔时长内的期望数据时长以及下述公式(4),确定该终端在该时刻的缓冲区时长。
qt=[qt-△t-△t+△Tsend]+ (4)
式中,qt表示该缓冲区时长;qt-△t表示终端在历史时刻(t-△t)所发送的历史缓冲区时长;△t表示该历史时刻与该时刻的间隔时长;△Tsend表示该终端在该间隔时长内的期望数据时长。其中,[x]+=max(x,0],表示该终端的缓冲区时长大于或等于0。
在上述实施例中,通过缓冲区时长与该历史缓冲区时长、该期望数据时长之间的正相关关系以及该缓冲区时长与该间隔时长之间的负相关关系,来确定终端的缓冲区时长,能够快速确定出该终端的缓冲区时长,提高了预测缓冲区时长的效率,且,考虑到在弱网情况下,若服务器通过终端的定时上报来获取缓冲区时长,很可能会产生终端上报延迟的问题,提供了一种基于反馈的用户缓冲区推断机制,能够避免使用过时的缓冲区时长而导致引入额外误差,提升了获取缓冲区时长的准确性。
针对该终端在任一时刻的期望数据时长,在一些实施例中,服务器预测该终端在该时刻的期望数据时长的过程包括:服务器获取该时刻的平均丢包率,基于服务器发送时长与该时刻的平均丢包率,确定该终端在该时刻的期望数据时长。
其中,服务器发送时长表示服务器预期发送数据的时长。丢包率是指传输过程中所丢失的数据包数量占所发送的数据包总量的比率。在一些实施例中,该期望数据时长与该服务器发送时长成正相关,该期望数据时长与该平均丢包率成负相关。在该实施例中,基于服务器预期发送数据的时长以及丢包率,能够预测出有多少数据能够及时到达终端的缓冲区,也即得到了该终端的期望数据时长。
在一些实施例中,针对上述公式(2)中所示出的期望数据时长(Tto_send),服务器基于服务器发送时长、该时刻的平均丢包率以及下述公式(5),确定该终端在该时刻的期望数据时长。
Tto_send=T′to_send(1-Rloss) (5)
式中,Tto_send表示终端在该时刻的期望数据时长;T′to_send表示服务器在该时刻的服务器发送时长;Rloss表示该时刻的平均丢包率。
在一些实施例中,针对上述公式(4)中所示出的终端在该间隔时长内的期望数据时长(△Tsend),服务器基于服务器在该间隔时长内的服务器发送时长、该时刻的平均丢包率以及下述公式(6),确定该终端在该间隔时长内的期望数据时长。
△Tsend=△T′send(1-Rloss) (6)
式中,△Tsend表示终端在该间隔时长内的期望数据时长;△T′send表示该服务器在该间隔时长内的服务器发送时长;Rloss表示该时刻的平均丢包率。
在该实施例中,通过期望数据时长与该服务器发送时长之间的正相关关系以及该期望数据时长与该平均丢包率之间的负相关关系,来确定终端的期望数据时长,能够快速确定出该终端的期望数据时长,提高了预测期望数据时长的效率。需要说明的是,上述终端的缓冲区时长和期望数据时长均以音频时长为统计单位,以避免视频丢帧策略的影响。
针对上述过程所涉及到的网络平均带宽与平均丢包率,在一些实施例中,服务器还利用多种网络预测算法,基于历史时间段内的网络带宽与丢包率,对未来时间段内的网络带宽与丢包率进行预测,得到该多种网络预测算法对应的网络带宽预测结果与丢包率预测结果;在该多种网络预测算法对应的网络带宽预测结果与丢包率预测结果中,选取预测误差最小的网络带宽预测结果与丢包率预测结果;基于该预测误差最小的网络带宽预测结果,确定该第一图像组的下载时长,基于该预测误差最小的丢包率预测结果,确定该第一图像组的期望数据时长。
其中,该多种网络预测算法为预先设定的多种网络预测算法,在一些实施例中,该多种网络预测算法包括线性回归预测算法、指数加权移动回归预测算法以及调和平均预测算法等。预测误差是指在每一次网络预测结束后,基于本次的网络带宽预测结果与丢包率预测结果所反馈的实时误差。在一些实施例中,预测误差基于平均绝对误差(MAE)、平均绝对误差比例(MAE_Ratio)以及预测准确次数(Acc_times)中的至少一项确定。
在一些实施例中,服务器每间隔第二时长,在该多种网络预测算法中,选取预测误差最小的网络预测算法,将该网络预测算法在下一时刻的网络带宽预测结果与丢包率预测结果,确定为该下一时刻的网络带宽与丢包率。其中,第二时长为预先设定的固定时长,如5秒。
在一些实施例中,服务器利用下述在线预测算法(7),来执行上述基于多种预测算法来预测网络带宽和丢包率的过程。
Figure BDA0003703807190000221
式中,algot*表示预测误差最小的网络预测算法;A表示多个网络预测算法的集合;criteria表示网络预测算法的预测误差的衡量标准,在一些实施例中,该criteria包括平均绝对误差、平均绝对误差比例以及预测准确次数等;errorcriteria(algot)表示各个网络预测算法对应的预测误差;Na表示预测时间窗口(或称作滑动窗口)。如此,基于上述在线预测算法(7),在预测时间窗口内,选取预测误差最小的网络预测算法,作为下一次预测时使用的网络预测算法,在该实施例中,提供了一种基于在线学习的网络预测方法,能够同时以多种网络预测算法进行预测,并实时根据预测时间窗口内不同网络预测算法的预测误差选出一个精度最高的算法来预测下一时刻的网络情况,相比较基于固定策略的预测算法,提升了网络的预测能力,确保了网络预测的鲁棒性。
针对上述过程所涉及的网络带宽(如应用层传输码率、实际传输码率等)、丢包率等网络信息以及终端的缓冲区时长,在一些实施例中,在视频传输的过程中,终端实时向服务器发送该终端的缓冲区时长和该终端的网络信息,以供服务器基于所发送的缓冲区时长和网络信息执行上述步骤303。示例地,图5是根据一示例性实施例示出的一种服务器与终端之间的交互流程图,参见图5,服务器从数据源站接收数据后(也即上述多个视频帧),将所接收到的多个视频帧传输至终端,在视频传输过程中,终端实时向服务器上报该终端的缓冲区时长,并且,终端实时向服务器上报网络信息,则服务器基于终端所上报的缓冲区时长和网络信息进行丢帧处理,进而将丢帧处理后的视频帧下发至终端,以供终端进行视频播放。
在步骤304中,若该视频帧在第一传输场景下的第一帧预测结果指示继续传输该视频帧不会造成画面卡顿时长或画面冻结时长的增加,则执行步骤305;若该视频帧在第一传输场景下的第一帧预测结果指示继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加,则执行步骤307。
在一些实施例中,服务器获取该视频帧在第一传输场景下的第一帧预测结果之后,获取该视频帧在第一传输场景下的第一帧预测结果所指示的内容,若该视频帧在第一传输场景下的第一帧预测结果指示继续传输该视频帧不会造成画面卡顿时长或画面冻结时长的增加,则继续执行后续步骤的判断过程,若该视频帧在第一传输场景下的第一帧预测结果指示继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加,则触发执行步骤307的丢帧处理过程。
在步骤305中,服务器获取该视频帧在第二传输场景下的第一帧预测结果,该第二传输场景表示在不丢弃该视频帧的情况下,将该视频帧所在的图像组以及该图像组之后的至少一个图像组传输完成。
在一些实施例中,该第二传输场景表示在不丢弃该视频帧的情况下,将该图像组之后的至少一个图像组中的关键参考帧以及该视频帧所在的图像组传输完成。以关键参考帧为I帧为例,该第二传输场景表示在不丢弃该视频帧的情况下,将该图像组之后的至少一个图像组中的I帧以及该视频帧所在的图像组传输完成。如此,考虑到每个图像组内部的关键参考帧所包含的数据最多,将继续传输下一个图像组转换为传输下一个图像组中的关键参考帧,既减少了服务器的计算数据量,还能够避免下一个图像组内的视频帧没有全部到达而造成的干扰。
在一些实施例中,服务器获取该视频帧在第二传输场景下的第一帧预测结果的过程包括:获取当前时刻的画面卡顿时长、画面冻结时长以及预测第二时刻的画面卡顿时长、画面冻结时长,该第二时刻为该视频帧所在的图像组以及该图像组之后的至少一个图像组均传输完成的时刻;基于该当前时刻的画面卡顿时长、画面冻结时长以及该第二时刻的画面卡顿时长、画面冻结时长,确定该视频帧在该第二传输场景下的第一帧预测结果。
在一些实施例中,服务器获取当前时刻的画面冻结时长的过程参见步骤303中的内容,不再赘述。在一些实施例中,服务器预测第二时刻的画面冻结时长的过程包括:服务器对该第二时刻正在传输的图像组进行预测,得到第一图像组,基于该第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定该第一时刻的画面冻结时长。其中,在一些实施例中,服务器预测第二时刻正在传输的第一图像组的过程为:服务器将传输完成的图像组的下一个图像组,确定为该第一图像组。在该实施例中,利用上述第二传输场景所指示的信息,预测未来时刻正在传输的第一图像组,进而利用该第一图像组中的最后一个普通参考帧的显示时间戳以及下一个图像组中的关键参考帧的显示时间戳,确定该时刻的画面冻结时长,能够快速确定出该时刻的画面冻结时长,提高了预测画面冻结时长的效率。
在一些实施例中,服务器获取当前时刻的画面卡顿时长的过程参见步骤303中的内容,不再赘述。在一些实施例中,服务器预测第二时刻的画面卡顿时长的过程包括:服务器对该第二时刻正在传输的图像组进行预测,得到第一图像组,对终端在该第二时刻的缓冲区时长以及期望数据时长进行预测,基于该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该第二时刻的画面卡顿时长。在该实施例中,利用上述第二传输场景所指示的信息,预测未来时刻正在传输的第一图像组,并预测终端在该时刻的缓冲区时长以及期望数据时长,进而利用该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该时刻的画面卡顿时长,能够快速确定出该时刻的画面卡顿时长,提高了预测画面卡顿时长的效率。
在上述实施例中,通过预测当前图像组以及后续图像组均传输完成所在时刻的画面卡顿时长、画面冻结时长,结合当前时刻的画面卡顿时长、画面冻结时长,对当前时刻和传输完成所在时刻的画面卡顿时长、画面冻结时长进行比较,以获得该视频帧在该第二传输场景下的第一帧预测结果,能够快速获得该视频帧在该第二传输场景下的第一帧预测结果,提高了获取第一帧预测结果的效果。
在步骤306中,若该视频帧在第二传输场景下的第一帧预测结果指示继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加,则执行步骤307。
在一些实施例中,服务器获取该视频帧在第二传输场景下的第一帧预测结果之后,获取该视频帧在第二传输场景下的第一帧预测结果所指示的内容,若该视频帧在第二传输场景下的第一帧预测结果指示继续传输该视频帧不会造成画面卡顿时长或画面冻结时长的增加,则无需执行后续步骤,若该视频帧在第二传输场景下的第一帧预测结果指示继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加,则触发执行步骤307的丢帧处理过程。
在上述步骤303至步骤306中,针对每一个即将传输的视频帧,服务器均需要判断该视频帧是否被丢弃,也即是在t时刻,服务器对视频帧i有丢弃(xt i=0)以及不丢弃(xt i=1)两种决策,且每一次的决策的目的均是最小化画面冻结时长与画面卡顿时长。基于此,本公开实施例还提供了一种结合画面卡顿时长和画面冻结时长的多目标联合优化方程,如下:
Figure BDA0003703807190000251
Figure BDA0003703807190000252
式中,
Figure BDA0003703807190000253
表示服务器缓存队列的第一个图像组中多个视频帧的最优丢帧决策集合;Ct表示当前时刻的网络状况(即网络平均带宽);qt表示终端在当前时刻的缓冲区时长;
Figure BDA0003703807190000254
表示在当前网络状况与缓冲区状况下,采取丢帧决策集合Xt传输该第一个图像组所引发的画面卡顿时长,相对应地,
Figure BDA0003703807190000255
则对应着以相同方式传输该第一个图像组所引发的画面冻结时长;
Figure BDA0003703807190000256
表示在当前网络状况与缓冲区状况下,采取丢帧决策集合Xt传输第一个图像组后,如果不丢帧继续传输第二个图像组所引发的画面卡顿时长,相对应地,
Figure BDA0003703807190000257
表示在当前网络状况与缓冲区状况下,采取丢帧决策集合Xt传输第一个图像组后,如果不丢帧继续传输第二个图像组所引发的画面冻结时长。在一些实施例中,若当前视频帧的参考帧已被丢弃
Figure BDA0003703807190000258
则后续所有依赖该当前视频帧的其他视频帧也都需要进行丢弃
Figure BDA0003703807190000259
在上述实施例中,通过判断继续传输一段时长是否会造成画面卡顿时长或画面冻结时长的增加,或者,通过判断传输整个图像组以及之后的至少一个图像组之后是否会造成画面卡顿时长或画面冻结时长的增加,来决定是否执行丢帧处理,充分考虑到了视频帧的画面卡顿和画面冻结,能够在丢帧处理时实现画面卡顿和画面冻结的动态平衡,提升了视频丢帧处理的准确性,从而提升了视频的播放效果。
在步骤307中,服务器基于该多个视频帧的帧类型,对该多个视频帧进行丢帧处理。
在一些实施例中,服务器在该视频帧(即待传输的视频帧)所在的图像组中,按照该图像组中多个非参考帧的顺序,依次丢弃该多个非参考帧,直至该画面卡顿时长和该画面冻结时长不再增加,若该画面卡顿时长和该画面冻结时长仍在增加,则按照该图像组中多个普通参考帧的倒序,依次丢弃该多个普通参考帧,直至该画面卡顿时长和该画面冻结时长不再增加。
在一些实施例中,以普通参考帧为P帧、非参考帧为B帧为例,服务器在该视频帧所在的图像组中,按照该图像组中多个B帧的顺序,依次丢弃该多个B帧,直至该画面卡顿时长和该画面冻结时长不再增加,若该画面卡顿时长和该画面冻结时长仍在增加,则按照该图像组中多个P帧的倒序,依次丢弃该多个P帧,直至该画面卡顿时长和该画面冻结时长不再增加。
在上述实施例中,提供了一种先正序丢弃B帧再倒序丢弃P帧的智能丢帧方式,相比较相关技术中一旦触发积压长度阈值则丢弃整个图像组的方式,该智能丢帧方式引入了更细粒度的丢帧策略,考虑到丢弃任意一个非参考帧(B帧)都不会对视频的播放质量产生影响,而丢弃任意一个普通参考帧(P帧)都会导致图像组内后续所有帧的解码,因此,智能丢帧算法会在网络较弱的情况下,优先正序丢弃图像组内的非参考帧,再倒序丢弃普通参考帧,以确保在尽量不影响用户观看质量的同时,还能够降低视频画面的卡顿。示例地,图6是根据一示例性实施例示出的一种智能丢帧的效果示意图,参见图6,在网络较弱的情况下,针对服务器缓存队列中第一个图像组,服务器会先正序丢弃该图像组中的B帧,此时画面冻结时长不会产生变化,也即视频播放画面并不会引发画面冻结,同时,画面卡顿时长也在逐渐降低。进一步地,服务器会倒序丢弃该图像组中的P帧,此时画面冻结时长会不断增加,但画面卡顿时长在不断降低。基于图6中的最大积压长度阈值,能够确定服务端的丢帧决策空间也即是图6中的阴影区域,此时,服务器在满足画面卡顿时长不超过最大积压长度阈值的前提下,画面卡顿时长与画面冻结时长这两项用户体验指标能够实现动态平衡,从而达到图6中的最优点。
在一些实施例中,对于该图像组中待丢弃的视频帧,获取该视频帧的第二帧预测结果,若该视频帧的第二帧预测结果指示丢弃该视频帧不会造成画面卡顿时长或画面冻结时长的增加,则丢弃该视频帧,若该视频帧的第二帧预测结果指示丢弃该视频帧会造成画面卡顿时长或画面冻结时长的增加,则停止该丢帧处理。
其中,第二帧预测结果用于指示丢弃该视频帧是否会造成画面卡顿时长或画面冻结时长的增加。在一些实施例中,服务器获取该视频帧的第二帧预测结果的过程包括:在该图像组包括该视频帧的情况下,预测画面卡顿时长和画面冻结时长,在该图像组不包括该视频帧的情况下,预测画面卡顿时长和画面冻结时长,基于两种情况所预测得到的画面卡顿时长和画面冻结时长进行比对,判断丢弃该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,从而得到该视频帧的第二帧预测结果。需要说明的是,关于画面卡顿时长与画面冻结时长的预测过程参见步骤303中的内容,不再赘述。
在一些实施例中,针对该图像组中待丢弃的非参考帧,获取该非参考帧的第二帧预测结果,若该非参考帧的第二帧预测结果指示丢弃该非参考帧不会造成画面卡顿时长或画面冻结时长的增加,则丢弃该非参考帧,若该非参考帧的第二帧预测结果指示丢弃该非参考帧会造成画面卡顿时长或画面冻结时长的增加,则停止该丢帧处理。在另一些实施例中,针对该图像组中待丢弃的普通参考帧,获取该普通参考帧的第二帧预测结果,若该普通参考帧的第二帧预测结果指示丢弃该普通参考帧不会造成画面卡顿时长或画面冻结时长的增加,则丢弃该普通参考帧,若该普通参考帧的第二帧预测结果指示丢弃该普通参考帧会造成画面卡顿时长或画面冻结时长的增加,则停止该丢帧处理。如此,针对图像组中待丢弃的的每一个视频帧,判断丢弃该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,进而在丢弃该视频帧会造成画面卡顿时长或画面冻结时长的增加的情况下,不执行丢帧处理,在丢弃该视频帧不会造成画面卡顿时长或画面冻结时长的增加的情况下,执行丢帧处理,如此,能够进一步提高视频丢帧处理的准确性。
在上述实施例中,提供了一种基于贪心算法的快速丢帧策略,在每个时刻,均采取轮询的方式,按照先丢弃B帧后丢弃P帧的丢帧方式,判定当前帧丢弃后是否会引起画面卡顿时长或画面冻结时长的增加,如果当前帧丢弃后会引起画面卡顿时长或画面冻结时长的增加,则表明此时继续丢帧会降低网络服务质量(Quality of Service,QoS)和用户观看体验(Quality of Experience,QoE),则无需丢帧;如果当前帧丢弃后不会引起画面卡顿时长或画面冻结时长的增加,则表明此时继续丢帧不会影响到网络服务质量和用户观看体验,则继续丢帧。
示例地,图7是根据一示例性实施例示出的一种丢帧处理流程的示意图,参见图7,针对每一个待传输的视频帧,服务器均需要执行一次如图7所示出的丢帧处理流程,首先,服务器会确定服务器缓存队列中的首部视频帧的帧类型,如果该视频帧为第二类型的视频帧(B帧或P帧),则服务器确定该第二类型对应的第二积压长度阈值。然后,服务器判断当前时刻的队列积压长度是否超出该第二积压长度阈值,如果超出则直接丢弃服务器缓存队列的头部图像组(也即第一个图像组),此次丢帧执行结束,直到下一个视频帧需要传输时重新执行丢帧处理流程;如果未超出,则服务器需要执行两种判断:在不丢弃当前帧的情况下继续传输一段时长(如1秒)后,是否会引起画面卡顿时长或画面冻结时长的增加(或者说,是否会引起网络服务质量和用户体验的降低),在不丢弃当前帧的情况下,继续传输整个图像组与下一个图像组的I帧,是否会引起画面卡顿时长或画面冻结时长的增加。进而,如果上述两种判断中任一项的判断结果指示会引起画面卡顿时长或画面冻结时长的增加,表示丢弃当前帧后会提升网络服务质量和用户体验,则执行丢帧处理,如果上述两种判断的判断结果均指示不会引起画面卡顿时长或画面冻结时长的增加,则无需丢帧。其中,在执行丢帧处理时,服务器需要基于当前帧的帧类型来进行丢帧处理,如果当前帧是B帧,则持续正序丢弃图像组中所有的B帧,直到画面卡顿时长或画面冻结时长不再增加为止,如果画面卡顿时长或画面冻结时长仍在增加,则持续倒序丢弃图像组中的P帧,直到画面卡顿时长或画面冻结时长不再增加为止。
相对应地,如果服务器缓存队列中的首部视频帧的帧类型为第一类型(I帧),则服务器确定该第一类型对应的第一积压长度阈值,然后,服务器判断当前时刻的队列积压长度是否超出该第一积压长度阈值,如果超出则直接丢弃服务器缓存队列的头部图像组(也即第一个图像组),此次丢帧执行结束,直到下一个视频帧需要传输时重新执行丢帧处理流程;如果未超出,则服务器需要执行上述两种判断,以判断相比较只传输I帧,丢弃I帧是否会引起画面卡顿时长或画面冻结时长的增加,如果会,则丢弃该I帧,否则保留该I帧,进而通过后续丢B帧或P帧即可实现用户观看质量的最大化。
本公开实施例提供的技术方案,针对服务器缓存队列中待传输的每一个视频帧,判断继续传输该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,进而在继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加的情况下,按照各个视频帧的帧类型来进行丢帧处理,如此,一方面,通过预测画面卡顿时长和画面冻结时长的变化情况,不仅参考了画面卡顿时长还参考了画面冻结时长,增加了丢帧处理所参考的信息量,另一方面,按照各个视频帧的帧类型来进行丢帧处理,提供了一种细粒度的丢帧方式,在避免视频的画面冻结的同时,还提高了视频丢帧处理的准确性。
基于本公开实施例所提供的视频处理方法,与相关技术中的丢帧算法相比,本公开实施例所提供的智能丢帧算法在真实AB实验中取得了较大收益,其中,智能丢帧算法在A应用初次上线后即实现了卡顿率正向下降3.39%、去除开播失败的卡顿率正向下降4.89%、百秒卡顿时长正向下降12.11%、百秒卡顿次数正向下降9.74%、百秒重试次数正向下降4.89%的显著成果,且,在B应用中实现了百秒卡顿时长正向下降4.817%、百秒卡顿次数正向下降5.211%、卡顿率正向下降3.99%的显著收益。
图8是根据一示例性实施例示出的一种视频处理装置的框图。参见图8,该装置包括获取单元801和处理单元802。
获取单元801,被配置为执行对于服务器缓存队列中的视频帧,若该服务器缓存队列的队列积压长度未达到该视频帧对应的积压长度阈值,则获取该视频帧的第一帧预测结果,该第一帧预测结果用于指示继续传输该视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
处理单元802,被配置为执行若该视频帧的第一帧预测结果指示继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加,则基于该多个视频帧的帧类型,对该多个视频帧进行丢帧处理。
本公开实施例提供的技术方案,针对服务器缓存队列中待传输的每一个视频帧,判断继续传输该视频帧是否会造成画面卡顿时长或画面冻结时长的增加,进而在继续传输该视频帧会造成画面卡顿时长或画面冻结时长的增加的情况下,按照各个视频帧的帧类型来进行丢帧处理,如此,一方面,通过预测画面卡顿时长和画面冻结时长的变化情况,不仅参考了画面卡顿时长还参考了画面冻结时长,增加了丢帧处理所参考的信息量,另一方面,按照各个视频帧的帧类型来进行丢帧处理,提供了一种细粒度的丢帧方式,在避免视频的画面冻结的同时,还提高了视频丢帧处理的准确性。
在一些实施例中,该装置还包括确定单元,被配置为执行:
若该视频帧的帧类型为第一类型,确定该帧类型对应的积压长度阈值为第一积压长度阈值,该第一类型表示关键参考帧;或,
若该视频帧的帧类型为第二类型,确定该帧类型对应的积压长度阈值为第二积压长度阈值,该第二类型表示普通参考帧或非参考帧;
其中,该第一积压长度阈值大于该第二积压长度阈值。
在一些实施例中,获取单元801,包括下述至少一项:
第一获取子单元,被配置为执行获取该视频帧在第一传输场景下的第一帧预测结果,该第一传输场景表示在不丢弃该视频帧的情况下,继续传输视频帧的时长达到第一时长;
第二获取子单元,被配置为执行获取该视频帧在第二传输场景下的第一帧预测结果,该第二传输场景表示在不丢弃该视频帧的情况下,将该视频帧所在的图像组以及该图像组之后的至少一个图像组传输完成。
在一些实施例中,第一获取子单元,被配置为执行:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第一时刻的画面卡顿时长、画面冻结时长,该第一时刻为继续传输视频帧的时长达到第一时长的时刻;
基于该当前时刻的画面卡顿时长、画面冻结时长以及该第一时刻的画面卡顿时长、画面冻结时长,确定该视频帧在该第一传输场景下的第一帧预测结果。
在一些实施例中,该第二传输场景表示在不丢弃该视频帧的情况下,将该图像组之后的至少一个图像组中的关键参考帧以及该视频帧所在的图像组传输完成。
在一些实施例中,第二获取子单元,被配置为执行:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第二时刻的画面卡顿时长、画面冻结时长,该第二时刻为该视频帧所在的图像组以及该图像组之后的至少一个图像组均传输完成的时刻;
基于该当前时刻的画面卡顿时长、画面冻结时长以及该第二时刻的画面卡顿时长、画面冻结时长,确定该视频帧在该第二传输场景下的第一帧预测结果。
在一些实施例中,该处理单元802,被配置为执行:
在该视频帧所在的图像组中,按照该图像组中多个非参考帧的顺序,依次丢弃该多个非参考帧,直至该画面卡顿时长和该画面冻结时长不再增加;
若该画面卡顿时长和该画面冻结时长仍在增加,则按照该图像组中多个普通参考帧的倒序,依次丢弃该多个普通参考帧,直至该画面卡顿时长和该画面冻结时长不再增加。
在一些实施例中,该处理单元802,还被配置为执行:
对于该图像组中待丢弃的视频帧,获取该视频帧的第二帧预测结果,该第二帧预测结果用于指示丢弃该视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
若该视频帧的第二帧预测结果指示丢弃该视频帧不会造成画面卡顿时长或画面冻结时长的增加,则丢弃该视频帧,若该视频帧的第二帧预测结果指示丢弃该视频帧会造成画面卡顿时长或画面冻结时长的增加,则停止该丢帧处理。
在一些实施例中,该装置还包括预测单元,被配置为执行任一时刻的画面冻结时长的预测过程:
对该时刻正在传输的图像组进行预测,得到第一图像组;
基于该第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定该时刻的画面冻结时长,该第二图像组为该第一图像组的后一图像组。
在一些实施例中,该预测单元,还被配置为执行任一时刻的画面卡顿时长的预测过程:
对该时刻正在传输的图像组进行预测,得到第一图像组,对终端在该时刻的缓冲区时长以及期望数据时长进行预测,该缓冲区时长表示该终端允许接收数据的时长,该期望数据时长表示该终端预期接收数据的时长;
基于该第一图像组的下载时长、该缓冲区时长以及该期望数据时长,确定该时刻的画面卡顿时长,该下载时长表示该终端下载该第一图像组所需的时长,其中,该画面卡顿时长与该下载时长成正相关,该画面卡顿时长与该缓冲区时长、该期望数据时长成负相关。
在一些实施例中,该预测单元,还被配置为执行第一图像组的下载时长的预测过程:
获取该时刻的网络平均带宽;
基于该第一图像组的总下载数据量与该时刻的网络平均带宽,确定该第一图像组的下载时长。
在一些实施例中,该预测单元,还被配置为执行终端在该时刻的缓冲区时长的预测过程:
基于该终端在历史时刻所发送的历史缓冲区时长、该历史时刻与该时刻的间隔时长以及该终端在该间隔时长内的期望数据时长,确定该终端在该时刻的缓冲区时长,其中,该缓冲区时长与该历史缓冲区时长、该期望数据时长成正相关,该缓冲区时长与该间隔时长成负相关。
在一些实施例中,该预测单元,还被配置为执行终端在该时刻的期望数据时长的预测过程:
获取该时刻的平均丢包率;
基于服务器发送时长与该时刻的平均丢包率,确定该终端在该时刻的期望数据时长,该服务器发送时长表示服务器预期发送数据的时长,其中,该期望数据时长与该服务器发送时长成正相关,该期望数据时长与该平均丢包率成负相关。
在一些实施例中,该预测单元,包括:
预测子单元,被配置为执行利用多种网络预测算法,基于历史时间段内的网络带宽与丢包率,对未来时间段内的网络带宽与丢包率进行预测,得到该多种网络预测算法对应的网络带宽预测结果与丢包率预测结果;
选取子单元,被配置为执行在该多种网络预测算法对应的网络带宽预测结果与丢包率预测结果中,选取预测误差最小的网络带宽预测结果与丢包率预测结果;
确定子单元,被配置为执行基于该预测误差最小的网络带宽预测结果,确定该第一图像组的下载时长,基于该预测误差最小的丢包率预测结果,确定该第一图像组的期望数据时长。
在一些实施例中,该选取子单元,被配置为执行:
每间隔第二时长,在该多种网络预测算法中,选取预测误差最小的网络预测算法;
将该网络预测算法在下一时刻的网络带宽预测结果与丢包率预测结果,确定为该下一时刻的网络带宽与丢包率。
在一些实施例中,该装置还包括丢弃单元,被配置为执行:
若该服务器缓存队列的队列积压长度达到该积压长度阈值,则丢弃该服务器缓存队列的第一个图像组。
需要说明的是:上述实施例提供的视频处理装置在视频处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频处理装置与视频处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是根据一示例性实施例示出的一种服务器的框图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)901和一个或多个的存储器902,其中,该一个或多个存储器902中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器901加载并执行以实现上述各个方法实施例提供的视频处理方法中服务器执行的过程。当然,该服务器900还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器900还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括程序代码的计算机可读存储介质,例如包括程序代码的存储器902,上述程序代码可由服务器900的处理器901执行以完成上述视频处理方法。可选地,计算机可读存储介质可以是ROM(Read-Only Memory,只读内存)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact-Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的视频处理方法。
在一些实施例中,本公开实施例所涉及的计算机程序可被部署在一个服务器上执行,或者在位于一个地点的多个服务器上执行,又或者,在分布在多个地点且通过通信网络互连的多个服务器上执行,分布在多个地点且通过通信网络互连的多个服务器可以组成区块链系统。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (15)

1.一种视频处理方法,其特征在于,所述方法包括:
对于服务器缓存队列中的视频帧,若所述服务器缓存队列的队列积压长度未达到所述视频帧对应的积压长度阈值,则获取所述视频帧的第一帧预测结果,所述服务器缓存队列用于存储待传输的多个视频帧,所述第一帧预测结果用于指示继续传输所述视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
若所述视频帧的第一帧预测结果指示继续传输所述视频帧会造成画面卡顿时长或画面冻结时长的增加,则基于所述多个视频帧的帧类型,对所述多个视频帧进行丢帧处理。
2.根据权利要求1所述的视频处理方法,其特征在于,所述获取所述视频帧的第一帧预测结果包括下述至少一项:
获取所述视频帧在第一传输场景下的第一帧预测结果,所述第一传输场景表示在不丢弃所述视频帧的情况下,继续传输视频帧的时长达到第一时长;
获取所述视频帧在第二传输场景下的第一帧预测结果,所述第二传输场景表示在不丢弃所述视频帧的情况下,将所述视频帧所在的图像组以及所述图像组之后的至少一个图像组传输完成。
3.根据权利要求2所述的视频处理方法,其特征在于,所述获取所述视频帧在第一传输场景下的第一帧预测结果包括:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第一时刻的画面卡顿时长、画面冻结时长,所述第一时刻为继续传输视频帧的时长达到第一时长的时刻;
基于所述当前时刻的画面卡顿时长、画面冻结时长以及所述第一时刻的画面卡顿时长、画面冻结时长,确定所述视频帧在所述第一传输场景下的第一帧预测结果。
4.根据权利要求2所述的视频处理方法,其特征在于,所述第二传输场景表示在不丢弃所述视频帧的情况下,将所述图像组之后的至少一个图像组中的关键参考帧以及所述视频帧所在的图像组传输完成。
5.根据权利要求2所述的视频处理方法,其特征在于,所述获取所述视频帧在第二传输场景下的第一帧预测结果包括:
获取当前时刻的画面卡顿时长、画面冻结时长以及预测第二时刻的画面卡顿时长、画面冻结时长,所述第二时刻为所述视频帧所在的图像组以及所述图像组之后的至少一个图像组均传输完成的时刻;
基于所述当前时刻的画面卡顿时长、画面冻结时长以及所述第二时刻的画面卡顿时长、画面冻结时长,确定所述视频帧在所述第二传输场景下的第一帧预测结果。
6.根据权利要求1所述的视频处理方法,其特征在于,所述基于所述多个视频帧的帧类型,对所述多个视频帧进行丢帧处理包括:
在所述视频帧所在的图像组中,按照所述图像组中多个非参考帧的顺序,依次丢弃所述多个非参考帧,直至所述画面卡顿时长和所述画面冻结时长不再增加;
若所述画面卡顿时长和所述画面冻结时长仍在增加,按照所述图像组中多个普通参考帧的倒序,依次丢弃所述多个普通参考帧,直至所述画面卡顿时长和所述画面冻结时长不再增加。
7.根据权利要求6所述的视频处理方法,其特征在于,所述方法还包括:
对于所述图像组中待丢弃的视频帧,获取所述视频帧的第二帧预测结果,所述第二帧预测结果用于指示丢弃所述视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
若所述视频帧的第二帧预测结果指示丢弃所述视频帧不会造成画面卡顿时长或画面冻结时长的增加,则丢弃所述视频帧,若所述视频帧的第二帧预测结果指示丢弃所述视频帧会造成画面卡顿时长或画面冻结时长的增加,则停止所述丢帧处理。
8.根据权利要求3或5所述的视频处理方法,其特征在于,任一时刻的画面冻结时长的预测过程包括:
对所述时刻正在传输的图像组进行预测,得到第一图像组;
基于所述第一图像组中的最后一个普通参考帧的显示时间戳以及第二图像组中的关键参考帧的显示时间戳,确定所述时刻的画面冻结时长,所述第二图像组为所述第一图像组的后一图像组。
9.根据权利要求3或5所述的视频处理方法,其特征在于,任一时刻的画面卡顿时长的预测过程包括:
对所述时刻正在传输的图像组进行预测,得到第一图像组,对终端在所述时刻的缓冲区时长以及期望数据时长进行预测,所述缓冲区时长表示所述终端允许接收数据的时长,所述期望数据时长表示所述终端预期接收数据的时长;
基于所述第一图像组的下载时长、所述缓冲区时长以及所述期望数据时长,确定所述时刻的画面卡顿时长,所述下载时长表示所述终端下载所述第一图像组所需的时长,其中,所述画面卡顿时长与所述下载时长成正相关,所述画面卡顿时长与所述缓冲区时长、所述期望数据时长成负相关。
10.根据权利要求9所述的视频处理方法,其特征在于,所述终端在所述时刻的缓冲区时长的预测过程包括:
基于所述终端在历史时刻所发送的历史缓冲区时长、所述历史时刻与所述时刻的间隔时长以及所述终端在所述间隔时长内的期望数据时长,确定所述终端在所述时刻的缓冲区时长,其中,所述缓冲区时长与所述历史缓冲区时长、所述期望数据时长成正相关,所述缓冲区时长与所述间隔时长成负相关。
11.根据权利要求9所述的视频处理方法,其特征在于,所述基于所述第一图像组的下载时长、所述缓冲区时长以及所述期望数据时长,确定所述时刻的画面卡顿时长之前,所述方法还包括:
利用多种网络预测算法,基于历史时间段内的网络带宽与丢包率,对未来时间段内的网络带宽与丢包率进行预测,得到所述多种网络预测算法对应的网络带宽预测结果与丢包率预测结果;
在所述多种网络预测算法对应的网络带宽预测结果与丢包率预测结果中,选取预测误差最小的网络带宽预测结果与丢包率预测结果;
基于所述预测误差最小的网络带宽预测结果,确定所述第一图像组的下载时长,基于所述预测误差最小的丢包率预测结果,确定所述第一图像组的期望数据时长。
12.一种视频处理装置,其特征在于,所述装置包括:
获取单元,被配置为执行对于服务器缓存队列中的视频帧,若所述服务器缓存队列的队列积压长度未达到所述视频帧对应的积压长度阈值,则获取所述视频帧的第一帧预测结果,所述服务器缓存队列用于存储待传输的多个视频帧,所述第一帧预测结果用于指示继续传输所述视频帧是否会造成画面卡顿时长或画面冻结时长的增加;
处理单元,被配置为执行若所述视频帧的第一帧预测结果指示继续传输所述视频帧会造成画面卡顿时长或画面冻结时长的增加,则基于所述多个视频帧的帧类型,对所述多个视频帧进行丢帧处理。
13.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
用于存储所述处理器可执行程序代码的存储器;
其中,所述处理器被配置为执行所述程序代码,以实现如权利要求1至11中任一项所述的视频处理方法。
14.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的程序代码由服务器的处理器执行时,使得服务器能够执行如权利要求1至11中任一项所述的视频处理方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的视频处理方法。
CN202210722584.8A 2022-06-20 2022-06-20 视频处理方法、装置、服务器及介质 Active CN115037701B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210722584.8A CN115037701B (zh) 2022-06-20 2022-06-20 视频处理方法、装置、服务器及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210722584.8A CN115037701B (zh) 2022-06-20 2022-06-20 视频处理方法、装置、服务器及介质

Publications (2)

Publication Number Publication Date
CN115037701A true CN115037701A (zh) 2022-09-09
CN115037701B CN115037701B (zh) 2023-12-19

Family

ID=83127045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210722584.8A Active CN115037701B (zh) 2022-06-20 2022-06-20 视频处理方法、装置、服务器及介质

Country Status (1)

Country Link
CN (1) CN115037701B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104702968A (zh) * 2015-02-17 2015-06-10 华为技术有限公司 一种视频帧丢帧方法及视频发送装置
CN105916059A (zh) * 2016-04-29 2016-08-31 北京奇虎科技有限公司 视频传输处理方法及装置
CN114189711A (zh) * 2021-11-16 2022-03-15 北京金山云网络技术有限公司 视频处理方法和装置、电子设备、存储介质
CN114567796A (zh) * 2022-03-04 2022-05-31 北京字节跳动网络技术有限公司 一种丢帧方法、装置、服务器和介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104702968A (zh) * 2015-02-17 2015-06-10 华为技术有限公司 一种视频帧丢帧方法及视频发送装置
CN105916059A (zh) * 2016-04-29 2016-08-31 北京奇虎科技有限公司 视频传输处理方法及装置
CN114189711A (zh) * 2021-11-16 2022-03-15 北京金山云网络技术有限公司 视频处理方法和装置、电子设备、存储介质
CN114567796A (zh) * 2022-03-04 2022-05-31 北京字节跳动网络技术有限公司 一种丢帧方法、装置、服务器和介质

Also Published As

Publication number Publication date
CN115037701B (zh) 2023-12-19

Similar Documents

Publication Publication Date Title
CN111628847B (zh) 数据传输方法及装置
US10271112B2 (en) System and method for dynamic adaptive video streaming using model predictive control
CN110178377B (zh) 用于视频传送会话的初始比特率选择
US9047236B2 (en) Client side stream switching
US11039179B2 (en) Use of simultaneously received videos by a system to generate a quality of experience value
Yahia et al. HTTP/2-based frame discarding for low-latency adaptive video streaming
US20140173055A1 (en) Media streaming method and device using the same
CN113992967B (zh) 一种投屏数据传输方法、装置、电子设备及存储介质
US10887363B1 (en) Streaming decision in the cloud
JP2015536594A (ja) 積極的なビデオフレームドロップ
CN113301392B (zh) 码率确定方法、装置、设备及存储介质
CN112752117B (zh) 一种视频缓存方法、装置、设备及存储介质
Burger et al. A generic approach to video buffer modeling using discrete-time analysis
CN113891175B (zh) 直播推流方法、装置及系统
JP2020507235A (ja) データバッファリング方法、ネットワーク機器、及び記憶媒体
CN107566795B (zh) 一种提高实时画面流畅度的方法、装置及系统
Ramamurthi et al. Using link awareness for HTTP adaptive streaming over changing wireless conditions
CN116962179A (zh) 网络传输优化方法、装置、计算机可读介质及电子设备
WO2015044104A1 (en) Video traffic management
CN112672227B (zh) 基于边缘节点的业务处理方法、装置、节点以及存储介质
Zhang et al. A QOE-driven approach to rate adaptation for dynamic adaptive streaming over http
CN115037701B (zh) 视频处理方法、装置、服务器及介质
CN111225243A (zh) 一种视频块调度方法及系统
CN116980662A (zh) 流媒体播放方法、装置、电子设备、存储介质及程序产品
CN114025190A (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