CN112073751A - 视频播放方法、装置、设备及可读存储介质 - Google Patents

视频播放方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN112073751A
CN112073751A CN202010996648.4A CN202010996648A CN112073751A CN 112073751 A CN112073751 A CN 112073751A CN 202010996648 A CN202010996648 A CN 202010996648A CN 112073751 A CN112073751 A CN 112073751A
Authority
CN
China
Prior art keywords
decoding
time
video
display delay
time length
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
CN202010996648.4A
Other languages
English (en)
Other versions
CN112073751B (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.)
Suzhou Keda Technology Co Ltd
Original Assignee
Suzhou Keda 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 Suzhou Keda Technology Co Ltd filed Critical Suzhou Keda Technology Co Ltd
Priority to CN202010996648.4A priority Critical patent/CN112073751B/zh
Publication of CN112073751A publication Critical patent/CN112073751A/zh
Application granted granted Critical
Publication of CN112073751B publication Critical patent/CN112073751B/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/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 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, manipulating MPEG-4 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/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440281Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. 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/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/64746Control signals issued by the network directed to the server or the client
    • H04N21/64761Control signals issued by the network directed to the server or the client directed to the server
    • H04N21/64769Control signals issued by the network directed to the server or the client directed to the server for rate control

Abstract

本发明公开了一种视频播放方法、装置、设备及可读存储介质,该方法包括:利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;获取本地解码缓冲中未解码视频帧所需的解码总时长;比对解码总时长和解码显示延迟时长,得到比对结果;按照与比对结果匹配的解码速度,对未解码视频帧进行解码,以播放视频。在该方法中,视频的播放速度依据网络状态而定,因此,即便在出现网络抖动或延迟的情况下,仍然可以平滑视频播放,避免出现视频卡顿或无法播放的情况,能够满足用户对实时视频播放的需求。

Description

视频播放方法、装置、设备及可读存储介质
技术领域
本发明涉及计算机视觉技术领域,特别是涉及一种视频播放方法、装置、设备及可读存储介质。
背景技术
现在用户对实时视频的需求越来越强烈,而由于网络带宽的不稳定,视频播放很容易卡顿、甚至无法播放。例如,在使用移动网络时,在经过隧道等网络较差的地区,以及在可以连接使用Wi-Fi时,因接入人数过多或信号遮挡等原因,出现网络延迟和网络抖动,使得实时视频播放出现卡顿、无法播放等问题。
综上所述,如何有效地解决实时视频播放等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种视频播放方法、装置、设备及可读存储介质,通过调整视频帧解码速度,可实现对实时视频进行平滑播放,能够解决因网络抖动、网络延迟等造成的视频卡顿、无法播放等问题。
为解决上述技术问题,本发明提供如下技术方案:
一种视频播放方法,包括:
利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;
获取本地解码缓冲中未解码视频帧所需的解码总时长;
比对所述解码总时长和所述解码显示延迟时长,得到比对结果;
按照与所述比对结果匹配的解码速度,对所述未解码视频帧进行解码,以播放视频。
优选地,所述利用视频流,确定出与当前网络状态匹配的解码显示延迟时长,包括:
获取所述视频流的帧率;
创建与所述帧率对应且先进先出的时间队列;
在所述时间队列中记录所述视频流中每相邻两视频帧的系统时间差;
利用所述时间队列中各个所述系统时间差,确定所述解码显示延迟时长。
优选地,在所述时间队列中记录所述视频流中每相邻两视频帧的系统时间差,包括:
在接收所述视频流时,记录当前视频帧到达的系统时间;
若所述当前视频帧为第一帧或所述当前视频帧与前一帧视频帧的ID不连续,则将所述系统时间赋值到第一接收时刻;
若所述当前视频帧非所述第一帧,且所述当前视频帧与所述前一帧视频帧的ID连续,则将所述系统时间赋值到第二接收时刻;
计算出当前的所述第一接收时刻和所述第二接收时刻的差值,并将所述差值确定为所述系统时间差;
将所述系统时间差写入所述时间队列中。
优选地,利用所述时间队列中各个所述系统时间差,确定所述解码显示延迟时长,包括:
利用所述时间队列中各个所述系统时间差,确定出待选时长;
判断所述待选时长与历史解码显示延迟时长的差值是否大于预设阈值;
如果否,则将所述待选时长确定为所述解码显示延迟时长;
如果是,则从所述历史解码显示延迟时长和所述待选时长构成的时长区间中选择至少一个平滑过渡时长;将所述平滑过渡时长和所述待选时长依次确定为所述解码显示延迟时长。
优选地,所述按照与所述比对结果匹配的解码速度,对所述未解码视频帧进行解码,以播放视频,包括:
获取所述解码显示延迟时长对应的加速范围和减速范围;
若所述解码总时长处于所述加速范围,则加快所述解码速度;
若所述解码总时长处于所述减速范围,则减缓所述解码速度;
按照所述解码速度,调整所述未解码视频帧的解码时刻;
按照所述解码时刻,对所述未解码视频帧进行解码,以播放视频。
优选地,所述获取所述解码显示延迟时长对应的加速范围和减速范围,包括:
将大于所述解码显示延迟时长的时长范围确定为所述加速范围,或将超出所述解码显示延迟时长指定比例或指定时长的时长范围确定为所述加速范围;
将小于所述解码显示延迟时长的时长范围确定为所述减速范围,或将低于所述解码显示延迟时长指定比例或指定时长的时长范围确定为所述减速范围。
优选地,所述按照所述解码速度,调整所述未解码视频帧的解码时刻,包括:
利用实时传输协议,获取所述未解码视频帧的解码时刻;
按照所述解码速度对所述解码时刻进行提前或延迟处理。
一种视频播放装置,包括:
解码显示延迟时长获取模块,用于利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;
解码总时长获取模块,用于获取本地解码缓冲中未解码视频帧所需的解码总时长;
时长比对模块,用于比对所述解码总时长和所述解码显示延迟时长,得到比对结果;
解码处理模块,用于按照与所述比对结果匹配的解码速度,对所述未解码视频帧进行解码,以播放视频。
一种视频播放设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述视频播放方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述视频播放方法的步骤。
应用本发明实施例所提供的方法,利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;获取本地解码缓冲中未解码视频帧所需的解码总时长;比对解码总时长和解码显示延迟时长,得到比对结果;按照与比对结果匹配的解码速度,对未解码视频帧进行解码,以播放视频。
视频流在一定程度上可以表征网络状态。因此,在本方法中,为了降低网络抖动、网络延迟对视频播放的影响,首先利用视频流确定出解码显示延迟时长。而本地解码缓冲中的未解码视频帧所需的解码总时长在一定程度上也可反映网络状态。因而,在方法中通过获取该解码总时长,进而得到解码显示延迟时长与解码本地解码缓冲中未解码视频帧所需的解码总时长的比对结果,然后按照与该比对结果匹配的解码速度对未解码视频帧进行解码,便可平滑播放视频。也就是说,在本方法中,视频的播放速度依据网络状态而定,因此,即便在出现网络抖动或延迟的情况下,仍然可以平滑视频播放,避免出现视频卡顿或无法播放的情况,能够满足用户对实时视频播放的需求。
相应地,本发明实施例还提供了与上述视频播放方法相对应的视频播放装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种视频播放方法的实施流程图;
图2为本发明实施例中一种解码示意图;
图3为本发明实施例中一种视频播放装置的结构示意图;
图4为本发明实施例中一种视频播放设备的结构示意图;
图5为本发明实施例中一种视频播放设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例中一种视频播放方法的流程图,该方法包括以下步骤:
S101、利用视频流,确定出与当前网络状态匹配的解码显示延迟时长。
其中,视频流指视频数据(即视频帧,或称图像帧)的传输。因为流动,客户端能够在整个视频文件被传输完成前显示实时视频。
视频流中的各个视频帧的到达时间,以及是否能够达到客户端,主要受网络延迟和网络抖动的影响。视频流出现丢帧、连续帧到达的时间间隔过长,便可确定当前网络不佳。
其中,延迟指数据从一个端点传输到另一个端点所需的时间。具体的,延迟可以理解为四个关键延迟成分的集合:处理延迟、排队延迟、传输延迟和传播延迟。处理延迟指系统对数据包报头进行分析和确定数据包被发送到哪里去所要花费的时间。这很大程度上取决于路由表中的条目数量、系统中数据结构的执行以及硬件的实现。排队延迟指数据包从进入发送队列到被发送之间经过的时间。这取决于流量大小、流量类型以及具体实现中采用什么路由器队列算法。不同的算法效果不一样,有的可以根据系统参数调整延迟时间,或者对所有流量设定相同的延迟时间。传输延迟指将包中的数据位传入线路所需要的时间。根据数据包的大小和带宽的不同而有所变化。但并不取决于传输线路的距离,因为它仅仅是指将包的数据位传入线路的时间,而不是沿传输线路到达接收端点的时间。传播延迟是指数据包的第一个比特位从发送端到达接收端的时间。通常也被称为距离的延迟,受数据传输距离和传播速度的影响。这些延迟组合在一起构成了网络中的总延迟。而往返时间则是指这些延迟的组合,加上数据包从发送端到达接收端的时间,和发送端接收到终端的返回信息的时间。网络延迟会导致延迟主要影响用户体验。举例说明:在严格的音频通话中,当延迟达到150毫秒,延迟会变得很明显并影响用户体验。在严格的视频通话中,延迟达到400毫秒就很容易被用户感知。如果将音频和视频两种通话的功能结合在一起,音频和视频的通话应该保持同步,并保证低于150毫秒的延迟以保障用户体验。
关于抖动,在网络上连续传输的数据包,即使选择相同的路径可能也会有不同的延迟,这是由分组交换网络中两个内在的关键原因造成的。首先,在路由器中数据包是被单独逐个传输的。第二,网络设备从队列中接收数据包,因此不能保证相同的延迟时间。每个数据包之间的这种延迟的差异被称为抖动。对于实时通信领域,像IP电话、视频会议和远程桌面分享基础服务等,抖动是一个相当大的问题。网络中的许多因素都可能导致抖动,而每个网络的延迟时间也不尽相同。网络抖动会导致出现数据包丢失、网络拥塞。
因此,视频流在一定程度上可以表征当前的网络的状态。因此,在本实施例中,利用视频流可以确定出与当前网络状态匹配的解码显示延迟时长。该解码显示延迟时长可以视为关于视频解码的调整参数。
具体的,可根据视频流中各个视频帧的连续情况和到达时间,便可体现出当前网络状态。即,可基于视频帧的连续情况和到达时间来确定出解码显示延迟时长。例如,可预先设置连续情况与解码显示延迟时长之间的对应关系,在获取到连续情况之后,基于该对应关系便可确定出解码显示延迟时长;可设置到达时间与解码显示延迟时长之间的对应关系,在得到到达时间后,基于该对应关系便可确定出解码显示延迟时长。当然,还可根据视频流中各个连续且相邻的视频帧之间到达时间之间的时间差值,来确定出解码显示延迟时长。
在本发明中的一种具体实施方式中,解码显示延迟时长的确定过程,包括:
步骤一、获取视频流的帧率。
可记录视频流的编码帧率(记为fps),并将该编码帧率作为视频流的帧率。也可根据帧信息中携带的该帧时间戳(timestamp_current_frame)与前一帧的帧时间戳(timestamp_prev_frame)的时间差值估算编码帧率,估算公式为:fps=1000(毫秒)/(timestamp_current_frame-timestamp_prev_frame)。
这两种方式可单独应用,也可结合起来进行应用。例如,如果网传已上报编码帧率,则采用网传上报的编码帧率。如果网传没上报,则根据帧信息中携带该帧时间戳与前一帧的时间差值来估算编码帧率。
步骤二、创建与帧率对应且先进先出的时间队列。
在确定出帧率之后,可创建出大小与帧率对应(如可以为m倍帧率,以便统计m秒内的视频流中各个视频帧的接收情况),并且为先进先出的时间队列(vecFifo)。
具体的,在获得帧率后,即获得每秒的视频帧数,可创建一个浮点型的,个数为编码帧数,且为先进先出的时间队列(或称之为数组队列),该时间队列内每个浮点型的成员代表2个相邻视频帧通过网络被接收到的时间差值。
步骤三、在时间队列中记录视频流中每相邻两视频帧的系统时间差。
在创建出时间队列之后,便可在该时间队列中记录视频流中每相邻2个视频帧的系统时间差。该系统时间差即指这2个相邻视频帧分别被接收时所对应的系统时间之间的差值。例如,存在2个相邻视频帧a和b,接收a时,对应系统时间t1,接收b时,对应系统时间t2,则a与b对应的系统时间差为|t2-t1|。
优选地,考虑到视频流中第一帧没有前一帧的情况,以及在发生丢包的情况下,数据帧的ID会不连续,此时可直接按照接收顺序来计算系统时间差可能会带来误差。因此,在本发明的一种具体实施例中,上述步骤3还可具体包括以下步骤:
步骤3-1、在接收视频流时,记录当前视频帧到达的系统时间。
步骤3-2、若当前视频帧为第一帧或当前视频帧与前一帧视频帧的ID不连续,则将系统时间赋值到第一接收时刻。
步骤3-3、若当前视频帧非第一帧,且当前视频帧与前一帧视频帧的ID连续,则将系统时间赋值到第二接收时刻。
步骤3-4、计算出当前的第一接收时刻和第二接收时刻的差值,并将差值确定为系统时间差。
步骤3-5、将系统时间差写入时间队列中。
为便于描述,下面将上述五个步骤结合起来进行说明。
为了便于计算,在本实施例中设置第一接收时刻(或称之为当前帧的前一帧接收时刻)和第二接收时刻(或称之为当前帧接收时刻)两个变量。
在接收视频流时,对当前接收的视频在到的系统时间进行记录。
然后,确定当前视频帧是否为第一帧,如果为第一帧,则直接将该系统时间赋值到第一接收时刻;若当前视频帧与前一视频帧ID不连续,也可将其视为第一帧,可直接将该系统时间赋值到第一接收时刻。
若当前视频帧既不是第一帧,也与前一视频帧的ID连续,则可将该系统时间赋值到第二接收时刻。特别地,当对第二接收时刻进行赋值时,可将原第二接收时刻对应的值赋予第一接收时刻。当对第一接收时刻进行赋值时,若第二接收时刻已赋值,可对第二接收时刻进行清零。
完成赋值后,便可计算第一接收时刻和第二接收时刻之间的差值,将该差值作为系统时间差,并记录在时间序列中。
举例说明:记录当前帧到达的系统时间(tmCur)。如果当前帧为收到的第一帧,或者当前帧与前一帧ID不连续(即发生过丢帧),那么tmCur赋值到第一接收时刻(tmLast),并置tmCur为0,然后继续接收下一帧;如果非第一帧且帧ID连续,那么用tmCur-tmLast取得差值(tmJitter),tmJitter即系统时间差。
得到系统时间差后,将其保存到时间队列中的最后一个位置。具体的,由于该时间队列是先入先出的队列,且时间队列的成员数量有限,因此,在时间队列已满的情况下,可保存相邻2帧的系统时间差到先进先出队列的最后一个位置,同时丢弃该时间队列最前面的值。
步骤四、利用时间队列中各个系统时间差,确定解码显示延迟时长。
该时间队列中的系统时间差越大,即表明当前网络不佳,出现了网络抖动或延迟;该时间队列中的系统时间差越小,即表明当前网络状态较好,没有影响到视频帧的传输。因此,可基于时间队列中的各个系统时间差,确定出解码显示延迟时长。具体的,可以从时间队列中随机选择一个系统时间差作为解码显示延迟时长;也可对时间队列中的各个系统时间差进行统计处理(如求均值、找众数、中位数、最大值、最小值等方式),确定出解码显示延迟时长(或称之为解码播放的延迟时间,用tmDecDelay表示)。
例如,可从时间队列中各个系统时间差中选出最大系统时间差;然后将将最大系统时间差确定为解码显示延迟时长。
优选地,考虑到在本实施例中解码显示延迟时长是用于调节视频解码的重要参数,为了避免因解码显示延迟时长骤变,导致解码速度产生骤变,从而引起用户的观看体验。在本实施例中,还可在确定解码显示延迟时长时,采用平缓过渡的方式来解决这一问题。具体的上述步骤4可具体包括:
步骤4-21、利用时间队列中各个系统时间差,确定出待选时长;
步骤4-22、判断待选时长与历史解码显示延迟时长的差值是否大于预设阈值;
步骤4-23、将待选时长确定为解码显示延迟时长;
步骤4-24、从历史解码显示延迟时长和待选时长构成的时长区间中选择至少一个平滑时长;将平滑时长和待选时长依次确定为解码显示延迟时长。
其中,待选时长可以是从时间队列中随机选出的一个系统时间差,也可以为对时间队列中各个系统时间差进行统计处理得到的一个具体数值。
在一个实施方式中,得到待选时长之后,可直接将待选时长作为解码显示延迟时长。
在另一个实施方式中,为了平滑过渡解码显示速度,在待选时长与历史解码显示延迟时长差异过大时,可基于待选时长多次确定解码显示延迟时长。具体的,即获得到待选时长之后,可计算出待选时长与历史解码显示延迟时长(即上一次确定出的解码显示延迟时长(tmDecDelayLast))的差值,若该差值大于预设阈值,则可至少分两次调节解码显示延迟时长。其中,预设阈值可根据实际传输协议、网络情况进行设置,本实施例不限定具体的数值大小。
调节方式可具体为首先从历史解码显示延迟时长和待选时长构成的时长区间中选择至少一个平滑过渡时长;然后依次将平滑时长和待选时长依次确定为解码显示延迟时长。即,多次调整解码显示延迟时长,以平缓过渡解码速度。
其中,平滑过渡时长的值落入历史解码显示延迟时长和待选时长构成的时长区间即可,例如可直接取历史解码显示延迟时长和待选时长的均值,也可取自历史解码显示延迟时长至待选时长等量梯度变化的各个梯度值。
举例说明:可获取vecFifo中最近fps个tmJiffter的最大值作为待选时长,为了让tmDecDelay不要快速降低,可以与上次获得的tmDecDelayLast比较,如果tmDecDelayLast比tmDecDelay大太多的话(如超出预设阈值),可分至少2次调整tmDecDelay,如按照等量梯度变化tmDecDelay,直到tmDecDelay与待选时长相等;或直接先后取tmDecDelayLast与待选时长的平均值,直到tmDecDelay与待选时长相等。
需要说明的是,对于上述步骤一和步骤二,可在视频解码开始时直到视频解码结束期间,执行一次,或者多次。也就是说,可仅根据帧率进行一次时间队列创建操作,也可根据帧率进行多次时间队列创建操作。特别地,若帧率变化幅度较小,则可仅创建一次时间队列,若帧率的变化幅度较大,则可多次创建时间队列。
S102、获取本地解码缓冲中未解码视频帧所需的解码总时长。
其中,本地解码缓冲包括未解码视频帧数据缓冲(tmLenUndecBuf)和空缓冲(空BUF)。未解码视频帧数据缓冲中保存的是一帧帧视频帧数据。该未解码视频帧数据缓冲类似水池一样,每接收一帧视频帧,未解码视频帧数据缓冲中未解码视频帧的数量就多一帧,解码显示完一视频帧,未解码视频帧数据缓冲中未解码视频帧的数量就少一帧,所以本地解码缓冲中未解码视频帧所需的解码总时长(可记为tmLenUndecBuf)是不断变化的。
具体来说,可以统计确定出一视频帧解码显示所需耗时,结合未解码视频帧的总数量,计算出解码总时长。
S103、比对解码总时长和解码显示延迟时长,得到比对结果。
在本发明实施例中比对解码总时长和解码显示延迟时长,指进行比对的二者之间的大小关系如大于、小于,等于,或这二者之间的数值关系,或谁比谁大/小的程度。
具体的,比对结果可以具体为表示二者之间谁大,谁小;当然比对结果还可以表示二者之间谁大具体大多少(如具体大1倍,还是0.5倍)。
S104、按照与比对结果匹配的解码速度,对未解码视频帧进行解码,以播放视频。
需要说明的是,在动态实时调节视频帧解码节奏并显示阶段。即,一帧解码后就立即显示,所以可以认为解码时刻就是显示时刻。请参考图2,本实施例即在该阶段根据本地缓冲的未解码视频帧的解码总时长与解码显示延迟时长做比较来控制解码(显示)节奏。
在解码总时长固定的情况下,解码显示延迟时长越大,表明网络状态越差,此时可采用较低的解码速度;解码显示延迟时长越短,表明网络状态越好,此时可采用较高的解码速度。在解码显示延迟时长固定的情况下,解码总时长越长,表明本地缓存中有较多的未解码视频帧,可支持较高的解码速度;解码总时长越短,表明本地缓存中未解码视频帧较少,难以支持较高的解码速度。
具体的,若比对结果表明解码总时长大于指定数值,且解码显示延迟时长小于指定数值,此时可认定当前的网络状态良好,能够和解码速度匹配,此时可无需调整当前的解码速度。若比对结果表明解码总时长小于解码显示延迟时长,此时可认定当前的网络状态出现问题,为了平滑过度,此时可降低解码速度。若比对结果表明解码总时长大于解码显示延迟时长,且多出指定时长,此时可认定当前的网络状态良好,为了平滑过度,此时可提高解码速度。
在本发明的一种具体实施方式中,上述步骤S104可具体包括以下步骤:
步骤一、获取解码显示延迟时长对应的加速范围和减速范围。
即,加速范围和减速范围由解码显示延迟时长所确定。
具体的,将大于解码显示延迟时长的时长范围确定为加速范围,或将超出解码显示延迟时长指定比例或指定时长的时长范围确定为加速范围;将小于解码显示延迟时长的时长范围确定为减速范围,或将低于解码显示延迟时长指定比例或指定时长的时长范围确定为减速范围。
也就是说,可将(tmDecDelay,∞)、(tmDecDelay+a,∞)或(tmDecDelay+tmDecDelay*b%,∞)作为加速范围;相应地,可将(0,tmDecDelay)、(0,tmDecDelay-a)或(0,tmDecDelay-tmDecDelay*b%)作为减速范围,其中a为指定时长,b%为指定比例。需要说明的是,对于确定加速范围和确定减速范围分别对应的指定时长、指定比例可以相同也可以不同。下面分别举例说明加速范围、减速范围如何确定:
对于加速范围的确定而言,其中,指定时长可以为预先设定,用于判定缓存的视频帧是否过多,缓存视频帧过多需要加速播放。例如指定时长可以为200毫秒(当然也可以为其他数值如210毫秒,190毫秒等)。
例如,如果未解码视频帧的解码总时长超过tmDecDelay+200毫秒,则认为缓存的视频帧过多了,需要加速播放,此时可加快解码速度。
对于减速范围的确定而言,指定比例可以为预先设定,用于判定缓存的视频帧是否过少,缓存视频帧过少需要减速播放。例如指定比例可以为50%(当然也可以为其他数值如40%等)。
即,当未解码视频帧的解码总时长(tmLenUndecBuf)小于tmDecDelay的一半时,可略微减缓解码速度。
步骤二、若解码总时长处于加速范围,则加快解码速度。
步骤三、若解码总时长处于减速范围,则减缓解码速度。
步骤四、按照解码速度,调整未解码视频帧的解码时刻。
其中,在未解码帧缓冲中,每一视频帧的显示时刻(tmRender)都可以计算出来。例如,可根据RTP里时间戳来转换出显示时刻。
当解码速度发生变化时,则需要对解码时刻进行调整。调整可包括提前或推迟。具体的,步骤三具体实现步骤,包括:
步骤1、利用实时传输协议,获取未解码视频帧的解码时刻;
步骤2、按照解码速度对解码时刻进行提前或延迟处理。
具体包括以下两种情况:
情况一、若解码速度被加快,则提前解码时刻;
情况二、若解码速度被减缓,则延迟解码时刻。
需要说明的是,对于解码时刻提前/延迟的程度可预先设置一个标准值,也可根据当前的解码总时长、解码显示延迟时长的具体数值而确定(例如,可设置提前/推迟量与解码总时长、解码显示延迟时长的对应关系,在确定出解码总时长、解码显示延迟时长之后,便可确定出提取或推迟的具体量)。
例如,比如该视频帧应该在当前系统时间(tmCurSys)+该视频帧显示时刻(tmRender)后显示,那么调整该视频帧在tmCurSys+tmRender-tmRender/6时刻来显示;比如该视频帧在tmCurSys+tmRender后显示,那么调整为tmCurSys+tmRender+tmRender/3时刻解码显示;当tmLenUndecBuf小于tmDecDelay,但大于tmDecDelay/2时,不调整当前视频帧的解码时刻。
步骤五、按照解码时刻,对未解码视频帧进行解码,以播放视频。
在调整解码时刻之后,便可在当前系统时间达到解码时刻,对相应地未解码视频帧进行解码并显示。如此便可实现平滑地进行视频播放。
应用本发明实施例所提供的方法,利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;获取本地解码缓冲中未解码视频帧所需的解码总时长;比对解码总时长和解码显示延迟时长,得到比对结果;按照与比对结果匹配的解码速度,对未解码视频帧进行解码,以播放视频。
视频流在一定程度上可以表征网络状态。因此,在本方法中,为了降低网络抖动、网络延迟对视频播放的影响,首先利用视频流确定出解码显示延迟时长。而本地解码缓冲中的未解码视频帧所需的解码总时长在一定程度上也可反映网络状态。因而,在方法中通过获取该解码总时长,进而得到解码显示延迟时长与解码本地解码缓冲中未解码视频帧所需的解码总时长的比对结果,然后按照与该比对结果匹配的解码速度对未解码视频帧进行解码,便可平滑播放视频。也就是说,在本方法中,视频的播放速度依据网络状态而定,因此,即便在出现网络抖动或延迟的情况下,仍然可以平滑视频播放,避免出现视频卡顿或无法播放的情况,能够满足用户对实时视频播放的需求。
相应于上面的方法实施例,本发明实施例还提供了一种视频播放装置,下文描述的视频播放装置与上文描述的视频播放方法可相互对应参照。
参见图3所示,该装置包括以下模块:
解码显示延迟时长获取模块101,用于利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;
解码总时长获取模块102,用于获取本地解码缓冲中未解码视频帧所需的解码总时长;
时长比对模块103,用于比对解码总时长和解码显示延迟时长,得到比对结果;
解码处理模块104,用于按照与比对结果匹配的解码速度,对未解码视频帧进行解码,以播放视频。
应用本发明实施例所提供的装置,利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;获取本地解码缓冲中未解码视频帧所需的解码总时长;比对解码总时长和解码显示延迟时长,得到比对结果;按照与比对结果匹配的解码速度,对未解码视频帧进行解码,以播放视频。
视频流在一定程度上可以表征网络状态。因此,在本装置中,为了降低网络抖动、网络延迟对视频播放的影响,首先利用视频流确定出解码显示延迟时长。而本地解码缓冲中的未解码视频帧所需的解码总时长在一定程度上也可反映网络状态。因而,在装置中通过获取该解码总时长,进而得到解码显示延迟时长与解码本地解码缓冲中未解码视频帧所需的解码总时长的比对结果,然后按照与该比对结果匹配的解码速度对未解码视频帧进行解码,便可平滑播放视频。也就是说,在本装置中,视频的播放速度依据网络状态而定,因此,即便在出现网络抖动或延迟的情况下,仍然可以平滑视频播放,避免出现视频卡顿或无法播放的情况,能够满足用户对实时视频播放的需求。
在本发明的一种具体实施方式中,解码显示延迟时长获取模块101,包括:
帧率获取单元,用于获取视频流的帧率;
时间队列创建单元,用于创建与帧率对应且先进先出的时间队列;
系统时间差记录单元,用于在时间队列中记录视频流中每相邻两视频帧的系统时间差;
解码显示延迟时长确定单元,用于利用时间队列中各个系统时间差,确定解码显示延迟时长。
在本发明的一种具体实施方式中,系统时间差记录单元,具体用于在接收视频流时,记录当前视频帧到达的系统时间;若当前视频帧为第一帧或当前视频帧与前一帧视频帧的ID不连续,则将系统时间赋值到第一接收时刻;若当前视频帧非第一帧,且当前视频帧与前一帧视频帧的ID连续,则将系统时间赋值到第二接收时刻;计算出当前的第一接收时刻和第二接收时刻的差值,并将差值确定为系统时间差;将系统时间差写入时间队列中。
在本发明的一种具体实施方式中,解码显示延迟时长确定单元,具体用于利用时间队列中各个系统时间差,确定出待选时长;判断待选时长与历史解码显示延迟时长的差值是否大于预设阈值;如果否,则将待选时长确定为解码显示延迟时长;如果是,则从历史解码显示延迟时长和待选时长构成的时长区间中选择至少一个平滑过渡时长;将平滑过渡时长和待选时长依次确定为解码显示延迟时长。
在本发明的一种具体实施方式中,解码处理模块104,具体用于获取解码显示延迟时长对应的加速范围和减速范围;若解码总时长处于加速范围,则加快解码速度;若解码总时长处于减速范围,则减缓解码速度;按照解码速度,调整未解码视频帧的解码时刻;按照解码时刻,对未解码视频帧进行解码,以播放视频。
在本发明的一种具体实施方式中,解码处理模块104,具体用于将大于解码显示延迟时长的时长范围确定为加速范围,或将超出解码显示延迟时长指定比例或指定时长的时长范围确定为加速范围;将小于解码显示延迟时长的时长范围确定为减速范围,或将低于解码显示延迟时长指定比例或指定时长的时长范围确定为减速范围。
在本发明的一种具体实施方式中,解码处理模块104,具体用于利用实时传输协议,获取未解码视频帧的解码时刻;按照解码速度对解码时刻进行提前或延迟处理。
相应于上面的方法实施例,本发明实施例还提供了一种视频播放设备,下文描述的一种视频播放设备与上文描述的一种视频播放方法可相互对应参照。
参见图4所示,该视频播放设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的视频播放方法的步骤。
具体的,请参考图5,图5为本实施例提供的一种视频播放设备的具体结构示意图,该视频播放设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在视频播放设备301上执行存储器332中的一系列指令操作。
视频播放设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的视频播放方法中的步骤可以由视频播放设备的结构实现。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种视频播放方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的视频播放方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

Claims (10)

1.一种视频播放方法,其特征在于,包括:
利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;
获取本地解码缓冲中未解码视频帧所需的解码总时长;
比对所述解码总时长和所述解码显示延迟时长,得到比对结果;
按照与所述比对结果匹配的解码速度,对所述未解码视频帧进行解码,以播放视频。
2.根据权利要求1所述的视频播放方法,其特征在于,所述利用视频流,确定出与当前网络状态匹配的解码显示延迟时长,包括:
获取所述视频流的帧率;
创建与所述帧率对应且先进先出的时间队列;
在所述时间队列中记录所述视频流中每相邻两视频帧的系统时间差;
利用所述时间队列中各个所述系统时间差,确定所述解码显示延迟时长。
3.根据权利要求2所述的视频播放方法,其特征在于,在所述时间队列中记录所述视频流中每相邻两视频帧的系统时间差,包括:
在接收所述视频流时,记录当前视频帧到达的系统时间;
若所述当前视频帧为第一帧或所述当前视频帧与前一帧视频帧的ID不连续,则将所述系统时间赋值到第一接收时刻;
若所述当前视频帧非所述第一帧,且所述当前视频帧与所述前一帧视频帧的ID连续,则将所述系统时间赋值到第二接收时刻;
计算出当前的所述第一接收时刻和所述第二接收时刻的差值,并将所述差值确定为所述系统时间差;
将所述系统时间差写入所述时间队列中。
4.根据权利要求2所述的视频播放方法,其特征在于,利用所述时间队列中各个所述系统时间差,确定所述解码显示延迟时长,包括:
利用所述时间队列中各个所述系统时间差,确定出待选时长;
判断所述待选时长与历史解码显示延迟时长的差值是否大于预设阈值;
如果否,则将所述待选时长确定为所述解码显示延迟时长;
如果是,则从所述历史解码显示延迟时长和所述待选时长构成的时长区间中选择至少一个平滑过渡时长;将所述平滑过渡时长和所述待选时长依次确定为所述解码显示延迟时长。
5.根据权利要求1至4任一项所述的视频播放方法,其特征在于,所述按照与所述比对结果匹配的解码速度,对所述未解码视频帧进行解码,以播放视频,包括:
获取所述解码显示延迟时长对应的加速范围和减速范围;
若所述解码总时长处于所述加速范围,则加快所述解码速度;
若所述解码总时长处于所述减速范围,则减缓所述解码速度;
按照所述解码速度,调整所述未解码视频帧的解码时刻;
按照所述解码时刻,对所述未解码视频帧进行解码,以播放视频。
6.根据权利要求5所述的视频播放方法,其特征在于,所述获取所述解码显示延迟时长对应的加速范围和减速范围,包括:
将大于所述解码显示延迟时长的时长范围确定为所述加速范围,或将超出所述解码显示延迟时长指定比例或指定时长的时长范围确定为所述加速范围;
将小于所述解码显示延迟时长的时长范围确定为所述减速范围,或将低于所述解码显示延迟时长指定比例或指定时长的时长范围确定为所述减速范围。
7.根据权利要求6所述的视频播放方法,其特征在于,所述按照所述解码速度,调整所述未解码视频帧的解码时刻,包括:
利用实时传输协议,获取所述未解码视频帧的解码时刻;
按照所述解码速度对所述解码时刻进行提前或延迟处理。
8.一种视频播放装置,其特征在于,包括:
解码显示延迟时长获取模块,用于利用视频流,确定出与当前网络状态匹配的解码显示延迟时长;
解码总时长获取模块,用于获取本地解码缓冲中未解码视频帧所需的解码总时长;
时长比对模块,用于比对所述解码总时长和所述解码显示延迟时长,得到比对结果;
解码处理模块,用于按照与所述比对结果匹配的解码速度,对所述未解码视频帧进行解码,以播放视频。
9.一种视频播放设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述视频播放方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述视频播放方法的步骤。
CN202010996648.4A 2020-09-21 2020-09-21 视频播放方法、装置、设备及可读存储介质 Active CN112073751B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010996648.4A CN112073751B (zh) 2020-09-21 2020-09-21 视频播放方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010996648.4A CN112073751B (zh) 2020-09-21 2020-09-21 视频播放方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN112073751A true CN112073751A (zh) 2020-12-11
CN112073751B CN112073751B (zh) 2023-03-28

Family

ID=73681974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010996648.4A Active CN112073751B (zh) 2020-09-21 2020-09-21 视频播放方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN112073751B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473229A (zh) * 2021-06-25 2021-10-01 荣耀终端有限公司 一种动态调节丢帧阈值的方法及相关设备
CN114025233A (zh) * 2021-10-27 2022-02-08 网易(杭州)网络有限公司 数据处理方法及装置、电子设备、存储介质
CN114245197A (zh) * 2022-02-24 2022-03-25 广州市保伦电子有限公司 一种音视频互动低延迟传输方法及后台服务器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101466045A (zh) * 2007-12-20 2009-06-24 上海奇码数字信息有限公司 自适应解码同步装置、同步方法及视频解码和显示系统
CN104363411A (zh) * 2014-10-20 2015-02-18 福建星网锐捷安防科技有限公司 一种视频监控系统中的视频播放方法及装置
CN106713855A (zh) * 2016-12-13 2017-05-24 深圳英飞拓科技股份有限公司 一种视频播放方法及装置
CN108347645A (zh) * 2018-01-19 2018-07-31 浙江大华技术股份有限公司 一种视频帧解码显示的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101466045A (zh) * 2007-12-20 2009-06-24 上海奇码数字信息有限公司 自适应解码同步装置、同步方法及视频解码和显示系统
CN104363411A (zh) * 2014-10-20 2015-02-18 福建星网锐捷安防科技有限公司 一种视频监控系统中的视频播放方法及装置
CN106713855A (zh) * 2016-12-13 2017-05-24 深圳英飞拓科技股份有限公司 一种视频播放方法及装置
CN108347645A (zh) * 2018-01-19 2018-07-31 浙江大华技术股份有限公司 一种视频帧解码显示的方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473229A (zh) * 2021-06-25 2021-10-01 荣耀终端有限公司 一种动态调节丢帧阈值的方法及相关设备
CN113473229B (zh) * 2021-06-25 2022-04-12 荣耀终端有限公司 一种动态调节丢帧阈值的方法及相关设备
CN114025233A (zh) * 2021-10-27 2022-02-08 网易(杭州)网络有限公司 数据处理方法及装置、电子设备、存储介质
CN114025233B (zh) * 2021-10-27 2023-07-14 网易(杭州)网络有限公司 数据处理方法及装置、电子设备、存储介质
CN114245197A (zh) * 2022-02-24 2022-03-25 广州市保伦电子有限公司 一种音视频互动低延迟传输方法及后台服务器

Also Published As

Publication number Publication date
CN112073751B (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
CN112073751B (zh) 视频播放方法、装置、设备及可读存储介质
Laoutaris et al. Intrastream synchronization for continuous media streams: A survey of playout schedulers
US7948886B2 (en) System and method for the control of the transmission rate in packet-based digital communications
US7729391B2 (en) Transmitting device with discard control of specific media data
CN109644162B (zh) 媒体缓冲
US8588093B2 (en) Streaming communication device, streaming communication method, and streaming communication system
CN110381350B (zh) 基于webrtc的多路录像回放同步系统及其处理方法
CN108353074B (zh) 用于拥塞控制的方法、多点控制单元和计算机可读装置
US9426087B2 (en) Reduced system latency for dominant speaker
EP2250768A1 (en) Method for manually optimizing jitter, delay and synch levels in audio-video transmission
WO2021203829A1 (zh) 数据传输速率控制方法、系统和用户设备
US7675946B2 (en) System and method for managing playout time in packet communication network
US7283548B2 (en) Dynamic latency management for IP telephony
AU2002310383A1 (en) Dynamic latency management for IP telephony
CN113891172B (zh) 一种适于无线Mesh网络的基于RTT的自适应码率控制方法
US10382155B2 (en) Data processing
JP5018776B2 (ja) 通信装置および方法
JP2005322995A (ja) リアルタイム映像転送におけるバッファ制御方法、送信端末、受信端末、映像配信システム、およびプログラム
US8446823B2 (en) Method of managing the flow of time-sensitive data over packet networks
JP2014160911A (ja) パケット処理装置、方法及びプログラム
Wei et al. Prioritized retransmission for error protection of video streaming over WLANs
Arthur et al. The effects of packet reordering in a wireless multimedia environment
WO2008073610A1 (en) System and method for the control of the transmission rate in packet-based digital communications
KR102491033B1 (ko) 왕복 시간 추정
Ramaboli et al. MPEG video streaming solution for multihomed-terminals in heterogeneous wireless networks

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