CN118870050A - 视频平滑播放方法和装置 - Google Patents
视频平滑播放方法和装置 Download PDFInfo
- Publication number
- CN118870050A CN118870050A CN202310678013.3A CN202310678013A CN118870050A CN 118870050 A CN118870050 A CN 118870050A CN 202310678013 A CN202310678013 A CN 202310678013A CN 118870050 A CN118870050 A CN 118870050A
- Authority
- CN
- China
- Prior art keywords
- frame rate
- jitter buffer
- video
- video frames
- target frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000005540 biological transmission Effects 0.000 claims abstract description 28
- 230000008878 coupling Effects 0.000 claims description 10
- 238000010168 coupling process Methods 0.000 claims description 10
- 238000005859 coupling reaction Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 238000009877 rendering Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000003860 storage Methods 0.000 description 12
- 238000012805 post-processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000009432 framing Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请实施例提供了一种视频平滑播放方法,该方法应用于视频传输系统中,视频传输系统包括发送端和接收端,接收端包括抖动缓冲器和显示设备,该方法包括:抖动缓冲器获取目标帧率和图像到达帧率;所述抖动缓冲器根据所述目标帧率和所述图像到达帧率的大小,确定所述抖动缓冲器中存储的视频帧数量;所述抖动缓冲器向所述显示设备发送所述抖动缓冲器中保留的视频帧,其中,所述发送所述抖动缓冲器中保留的视频帧的时间间隔为所述显示设备的垂直同步周期的N倍,N为大于或者等于1的整数。本申请技术方案能够提升接收端的播放体验。
Description
技术领域
本申请实施例涉及视频领域,具体涉及一种视频平滑播放方法和装置。
背景技术
视频传输系统中,视频从发送端经过采集、前处理、编码、分包,再经过网络传输到接收端,在接收端经过组帧、解码、后处理再输出到显示设备进行渲染。
然而,大部分设备显示的频率是固定的,比如60赫兹(hertz,Hz)、120Hz。若同一时刻输入到渲染管道的帧太多,会引起视频帧的丢失、离屏缓冲的拷贝阻塞或者排队现象,输入帧少了也会丧失平滑的作用。这些情况都会降低实际的播放体验。
因此,如何提升接收端的播放体验,是一个亟待解决的技术问题。
发明内容
本申请实施例提供一种视频平滑播放方法和装置,抖动缓冲器能够通过目标帧率和图像到达帧率实时确定向显示设备发送的视频帧数量,并以显示设备垂直同步周期的倍数为时间间隔向显示设备发送视频帧,减少了视频帧丢失带来的播放抖动问题,提高了接收端的播放体验。
第一方面,提供了一种视频平滑播放方法,该方法应用于视频传输系统中,所述视频传输系统包括发送端和接收端,所述接收端包括抖动缓冲器和显示设备,所述方法包括:所述抖动缓冲器获取目标帧率和图像到达帧率,所述目标帧率为所述发送端传输多个视频帧的帧率,所述图像到达帧率为所述抖动缓冲器在预设时段内接收所述多个视频帧的频率,所述预设时段的结束时刻为所述抖动缓冲器接收到第一视频帧的时刻,所述第一视频帧为所述多个视频帧中的任一个;所述抖动缓冲器根据所述目标帧率和所述图像到达帧率的大小,确定所述抖动缓冲器中存储的视频帧数量;所述抖动缓冲器向所述显示设备发送所述抖动缓冲器中保留的视频帧,其中,所述发送所述抖动缓冲器中保留的视频帧的时间间隔为所述显示设备的垂直同步周期的N倍,N为大于或者等于1的整数。
本申请实施例提供一种视频平滑播放方法,抖动缓冲器能够通过目标帧率和图像到达帧率实时确定向显示设备发送的视频帧数量,并以显示设备垂直同步周期的倍数为时间间隔向显示设备发送视频帧,减少了视频帧丢失带来的播放抖动问题,提高了接收端的播放体验。
应理解,发送端也可以称为视频采集端,接收端也可以称为视频播放端,抖动缓冲器也可以称为抖动缓冲区。本申请对具体的名称不做限制。
目标帧率可以是视频在发送端经过编码后传输的帧率,接收端可以通过信令协商获得此信息。
示例性地,预设时段的时长可以是1秒、0.5秒、0.8秒、1.5秒等,本申请对具体的时长不做限定。例如,每当抖动缓冲器接收到一张待显示的图像,计算此刻往前预设时长内图像到达的频率,作为图像到达帧率,这张待显示的图像即为第一视频帧。
垂直同步周期为显示设备屏幕刷新率的倒数。示例性地,显示设备的屏幕刷新率为90Hz,则垂直同步周期约为11毫秒(ms)。应理解,抖动缓冲器向显示设备发送抖动缓冲器中保留的视频帧的时间间隔为显示设备的垂直同步周期的N倍,这样开启垂直同步之后,显卡实际渲染的帧数就不会超过显示器的刷新率,解决了屏幕撕裂和抖动的问题。
结合第一方面,在第一方面的某些实现方式中,所述抖动缓冲器根据所述目标帧率和所述图像到达帧率的大小,确定所述抖动缓冲器中存储的视频帧数量,包括:若所述图像到达帧率大于所述目标帧率,所述抖动缓冲器丢弃M个视频帧,N等于1,M为大于或者等于1的整数。
示例性地,目标帧率为60Hz,实时到达帧率为70Hz,表示抖动缓冲器每秒收到的图像比期望的多了10个,这意味着之前视频播放存在延迟,实时延迟约为(70-60)×(1000/60)=167ms,并且表明此刻视频帧聚集到达。一旦视频帧聚集到达,可以加速播放,示例性地,可以丢弃1至10个视频帧。
本申请实施例提供了一种视频平滑播放方法,当图像的实时到达帧率大于目标帧率时,能够通过主动丢弃部分视频帧来加速播放,避免了输送到渲染管道的视频帧数量过多造成的渲染抖动。
结合第一方面,在第一方面的某些实现方式中,在所述抖动缓冲器丢弃M个视频帧之前,所述方法还包括:所述抖动缓冲器获取所述显示设备的应用的延迟收敛周期,所述延迟收敛周期为所述应用预设的能够等待播放的最长延迟时间;所述抖动缓冲器根据所述延迟收敛周期确定M的取值。
示例性地, 为向上取整符号,X为所述图像到达帧率,Y为所述目标帧率,Z为所述延迟收敛周期,X和Y的单位为赫兹,Z的单位为毫秒。当Z的单位为秒时,示例性地,应用设置的延迟收敛周期为134ms,表示最多容忍134ms的延迟,目标帧率为60Hz,实时到达帧率为70Hz,则根据之前的延迟计算结果,需要丢弃2帧图像来追帧。
可选的,抖动缓冲器根据延迟收敛周期确定丢弃视频帧的数量的公式也可以是或等,该具体公式不应理解为对本申请的限制。
本申请实施例提供了一种视频平滑播放方法,可定义期望延迟来调整抖动缓冲器的输出/丢帧策略,保证了视频的平滑播放,提高了接收端的播放体验。
结合第一方面,在第一方面的某些实现方式中,所述图像到达帧率小于所述目标帧率,N大于1。
如果图像到达帧率比目标帧率要小,表示此时正在慢放,为了提升视频播放体验,也需要基于垂直同步周期时间进行渲染,保证每帧的渲染间隔为垂直同步周期的倍数,即抖动缓冲器向显示设备发送视频帧的时间间隔为显示设备的垂直同步周期的N倍。
本申请实施例提供了一种视频平滑播放方法,当图像的实时到达帧率小于目标帧率时,抖动缓冲器向显示设备发送视频帧的时间间隔为显示设备的垂直同步周期的N倍,N大于1,保证每帧的渲染间隔为垂直同步周期的倍数,减少了屏幕撕裂和抖动的问题,提高了接收端的播放体验。
结合第一方面,在第一方面的某些实现方式中,所述第一视频帧包括经过解码后的视频帧。
应理解,现有技术在接收端视频帧组合成功之后不会立即将视频帧送到解码器,而是送到抖动缓冲器中,本申请提供的技术方案则是将视频帧直接输送到解码器进行解码。即本申请实施例中的抖动缓冲器可以位于接收端渲染模块之前、解码器和后处理模块之后,存储的是经过解码后的视频帧,例如可以是亮度色度YUV格式或者红绿蓝RGB格式的视频帧,降低了解码和后处理过程中抖动带来的影响,提高了接收端的播放体验。
第二方面,本申请实施例提供一种计算机装置,该计算机装置包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
第三方面,本申请实施例提供一种计算机装置,该计算机装置包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式。
可选地,该处理器可以是通用处理器,可以通过硬件来实现也可以通过软件来实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
第四方面,本申请实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。
作为示例,这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasablePROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。
可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。
第六方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。
附图说明
图1是现有技术中RTP传输系统的示例性结构图。
图2是本申请实施例提供的一种视频平滑播放方法的示例性流程图。
图3是本申请实施例提供的RTP传输系统的示例性结构图。
图4是本申请实施例提供的另一种视频平滑播放方法的示例性流程图。
图5是本申请实施例提供的一种控制加速播放的示例图。
图6是本申请实施例提供的一种控制减速播放的示例图。
图7是本申请实施例提供的一种计算机装置的结构示例图。
图8是本申请实施例提供的另一种计算机装置的结构示例图。
图9是本申请实施例提供的一种计算机程序产品的示例图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。显然,所描述的实施例是本申请的一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本申请保护的范围。
在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例描述的业务场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:包括单独存在A,同时存在A和B,以及单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
为便于理解本申请实施例,首先对本申请中涉及的一些定义做简单说明。
1.帧率(frame rate):视频每秒包含的以帧为单位的图像的数量,是视频的重要属性。
2.目标帧率(target frame rate):视频在发送端编码后的帧率,接收端由信令协商获得此信息。
3.实时传输协议(real-time transport protocol,RTP)数据包:由发送端按照RTP协议格式封装而成,包含了音频或视频等实时数据和相应的元数据信息,如时间戳和序列号等。
4.屏幕刷新率:单位为赫兹Hz,表示每秒可以刷新的屏幕数。屏幕刷新率是屏幕的客观属性,表示该屏幕可以达到的最高帧速率。
5.图形渲染速率:表示图形处理器(graphic processing unit,GPU)每秒可渲染新图像的次数,通常以每秒传输帧数(frames per second,FPS)表示。
本申请提供的视频平滑播放方法可以应用于各种视频传输系统,以系统的实时传输协议(real-time transport protocol,RTP)为例,RTP主要用于音视频流式传输。RTP采用的是用户数据报协议(user datagram protocol,UDP),可以带有序号、时间戳、来源标识等元数据信息,供接收方进行时序校验、抖动缓冲和数据解包等操作,以实现音视频数据的正常渲染或播放。RTP在音视频领域的应用十分广泛,从实时音频和视频的在线直播,到移动通信、电视传输等方面都有应用。
RTP协议本身并没有提供任何语义的可靠性机制,而其使用的UDP协议也没有数据包完整性检查、错包重传等机制。所以在传输过程中,一些网络因素例如网络延迟、拥塞等原因,会导致音视频数据包的接收时间相比发送时间存在一定的抖动,同时数据包还有可能丢失。这就导致接收端收到的音视频数据存在多种不同时间戳、不同序号的数据,就造成了音视频的抖动问题。
为了解决RTP传输过程中的音视频抖动问题,抖动缓冲器技术应运而生。抖动缓冲器是一个中间件,它的主要功能是缓存一定时间范围内的数据包,将接收端收到的抖动数据包缓存到队列中,再根据数据包的时间戳或者序号进行排序,最终输出按照一定的频率或速率来保证音视频播放的流畅度。抖动缓冲器调整数据包的排序,可以处理音视频的播放时间和抖动问题,使用户能够更好地观看到无卡顿的视频画面或听到稳定的音质,具有重要的应用价值。
图1是现有技术中RTP传输系统的示例性结构图。
RTP传输系统中,视频从发送端经过采集、前处理、编码、分包,再经过网络传输到接收端,在接收端经过组帧、解码、后处理再输出到显示设备进行渲染。目前的抖动缓冲器(jitter buffer,JB)技术(静态/动态)主要都是在组帧之后实现,只考虑到了网络传输所带来抖动。但是在大部分情况下,解码、后处理、渲染都存在抖动的可能,现有的JB技术无法处理上述步骤所带来的不确定的延迟,尤其在高帧率并且对延迟要求很高的应用场景,如云游戏,现有技术并不能很好地提升视频播放的体验。
大部分设备显示的频率是固定的,比如60Hz、120Hz。若同一时刻输入到渲染管道的帧太多,会引起视频帧的丢失、离屏缓冲的拷贝阻塞或者排队现象,输入帧少了也会丧失平滑的作用。这些情况都会降低实际的播放体验。当屏幕刷新率和显卡的图形渲染速率不成倍数关系时,比如屏幕刷新率为60Hz、显卡渲染速率为200FPS,可能就会出现屏幕闪烁的问题。
本申请实施例利用垂直同步(vertical synchronization,Vsync)技术来完成对视频的平滑播放。垂直同步是一种显示技术,用于同步显示设备的刷新速率与图形渲染速率,以防止屏幕撕裂和抖动,显示设备的刷新频率一般是由垂直同步信号所控制。开启垂直同步之后,显示器会在显示完一整个屏幕的内容之后,给显卡发一个同步信号,这个时候显卡才渲染下一帧,这样显卡实际渲染的帧数就不会超过显示器的刷新率,解决了屏幕撕裂和抖动的问题。
图2是本申请实施例提供的一种视频平滑播放方法的示例性流程图。
210,获取目标帧率和图像到达帧率。
图2所示的视频平滑播放方法应用于视频传输系统中,该视频传输系统包括发送端和接收端,接收端包括抖动缓冲器和显示设备。
抖动缓冲器获取目标帧率和图像到达帧率,目标帧率为发送端传输多个视频帧的帧率,图像到达帧率为抖动缓冲器在预设时段内接收该多个视频帧的频率。预设时段的结束时刻为抖动缓冲器接收到第一视频帧的时刻,第一视频帧为多个视频帧中的任一个。
目标帧率可以是视频在发送端经过编码后传输的帧率,接收端可以通过信令协商获得此信息。
示例性地,预设时段的时长可以是1秒、0.5秒、0.8秒、1.5秒等,本申请对具体的时长不做限定。例如,每当抖动缓冲器接收到一张待显示的图像,计算此刻往前预设时长内图像到达的频率,作为图像到达帧率,这张待显示的图像即为第一视频帧。
220,确定抖动缓冲器中存储的视频帧数量。
抖动缓冲器根据目标帧率和图像到达帧率的大小,确定抖动缓冲器中存储的视频帧数量。
若图像到达帧率大于目标帧率,抖动缓冲器丢弃至少一个视频帧。若图像到达帧率小于目标帧率,抖动缓冲器不对视频帧进行丢弃操作。
示例性地,目标帧率为60Hz,实时到达帧率为70Hz,表示抖动缓冲器每秒收到的图像比期望的多了10个,这意味着之前视频播放存在延迟,实时延迟约为(70-60)×(1000/60)=167ms,并且表明此刻视频帧聚集到达。一旦视频帧聚集到达,可以加速播放,示例性地,可以丢弃1至10个视频帧。
230,向显示设备发送抖动缓冲器中保留的视频帧。
抖动缓冲器向显示设备发送抖动缓冲器中保留的视频帧,其中,发送抖动缓冲器中保留的视频帧的时间间隔为显示设备的垂直同步周期的N倍,N为大于或者等于1的整数。
应理解,若图像到达帧率大于目标帧率,N等于1。若图像到达帧率小于目标帧率,N大于1。
图3是本申请实施例提供的RTP传输系统的示例性结构图。
本申请实施例提供的RTP传输系统中,视频从发送端310经过采集、前处理、编码、分包,再经过网络传输到接收端,在接收端320经过组帧、解码、后处理再输出到显示设备进行渲染。
应理解,图1所示的现有技术在接收端视频帧组合成功之后不会立即将视频帧送到解码器,而是送到抖动缓冲器中,即现有技术的抖动缓冲器中存储的是未经过解码的视频帧。本申请提供的技术方案可以将视频帧直接输送到解码器进行解码。即本申请实施例中的抖动缓冲器321可以位于接收端320渲染模块之前、解码器和后处理模块之后,存储的是经过解码后的视频帧,例如可以是YUV格式或者RGB格式的视频帧,降低了解码和后处理过程中抖动带来的影响,提高了接收端的播放体验。
图4是本申请实施例提供的另一种视频平滑播放方法的示例性流程图。
410,组帧后将视频帧送到解码器。
接收端320通过网络接收到RTP数据包,解析RTP头部获取基本信息,例如序列号和时间戳等,再解析RTP包的负载,负载中包含视频的原始数据。接收端320依据数据包的序列号和时间戳排序,通过乱序重排、丢包补偿等一系列步骤将有序的RTP包组成一个个完整的视频帧。
现有技术在视频帧组合成功之后不会立即将视频帧送到解码器,而是送到抖动缓冲器中,即现有技术的抖动缓冲器中存储的是未经过解码的视频帧。本申请提供的技术方案则是将视频帧直接输送到解码器进行解码,抖动缓冲器位于解码器之后,降低了解码过程中抖动带来的影响,提高了接收端的播放体验。
420,解码和后处理。
解码器将视频帧解码,得到经过解码的图像,如YUV或者RGB等格式的图像,经过后处理之后,发送至抖动缓冲器321。本申请提供的技术方案降低了解码和后处理过程中抖动带来的影响,提高了接收端的播放体验。
430,获取垂直同步周期。
垂直同步周期为显示设备屏幕刷新率的倒数。示例性地,显示设备的屏幕刷新率为90Hz,则垂直同步周期约为11毫秒(ms)。
440,根据图像到达帧率控制渲染速率。
本申请实施例中,每当抖动缓冲器321接收到一张待显示的图像,计算此刻往前预设时长内图像到达的频率,作为实时的图像到达帧率。示例性地,可以将此刻往前1秒内图像到达的频率作为图像到达帧率。应理解,1秒仅为示例,也可以是0.5秒、0.8秒、1.5秒等,该时间数值不应理解为对本申请的限制。
目标帧率指的是视频在发送端310编码后的帧率。图5是本申请实施例提供的一种控制加速播放的示例图。如果图像到达帧率比目标帧率要大,比如目标帧率为60Hz,图像到达帧率为70Hz,表示抖动缓冲器每秒收到的图像比期望的多了10个,这意味着之前视频播放存在延迟,实时延迟约为(70-60)×(1000/60)=167ms,并且表明此刻视频帧聚集到达。一旦视频帧聚集到达,则需要加速播放,可以丢弃1至(X-Y)个视频帧,X为图像到达帧率,Y为目标帧率。示例性地,可以丢弃1至10个视频帧。
本申请提供的方法还可定义期望延迟来调整抖动缓冲器的输出/丢帧策略,当应用设置了延迟收敛周期,抖动缓冲器可以丢弃M个视频帧,示例性地, 为向上取整符号,X为图像到达帧率,Y为目标帧率,Z为延迟收敛周期,X和Y的单位为赫兹,Z的单位为毫秒。
示例性地,应用设置最多容忍134ms的延迟收敛周期,则根据之前的延迟计算结果,可以丢掉帧图像来追帧。应理解,图5所示丢弃编号为1、3的视频帧仅为示例,具体丢弃的视频帧可以根据预设的规则来指定,该示例不应理解为对本申请的限制。本申请实施例在加速播放的同时,可以令抖动缓冲器向显示设备输出图像的时间间隔以垂直同步周期为粒度,每一帧的渲染间隔等于显示设备的垂直同步周期,防止渲染设备的渲染管道因为垂直同步原因出现排队,产生不可控的延迟与卡顿,保证了视频的平滑播放,提高了接收端的播放体验。
图6是本申请实施例提供的一种控制减速播放的示例图。如果实时到达帧率比目标帧率要小,表示此时正在慢放,为了提升视频播放体验,也需要基于垂直同步周期时间进行渲染,保证每帧的渲染间隔为垂直同步周期的倍数。
经过图5和图6加速与减速的播放控制,可以在提升视频播放平滑度的同时保证渲染的实时性,在高帧率的场景下对播放体验的提升尤为明显。
应理解,图1所示的RTP传输系统也可以应用本申请实施例提供的视频平滑播放方法,即抖动缓冲器可以位于组帧之后、解码器之前,只要抖动缓冲器可以根据目标帧率和图像到达帧率实时调整向显示设备发送的视频帧数量即可,图3所示的RTP传输系统不应理解为对本申请的限制。
本申请提供的方法可用于各种实时视频传输应用程序中,包括但不限于视频会议应用、网络电话应用、流媒体应用等。相关的技术产品可以包括编解码器、视频会议软件、流媒体服务器等。本申请提供的方法可以通过硬件设备或者软件产品实现,也可能是以服务形式提供的软件平台或者云服务配套的软件开发工具包(software development kit,SDK)。
以上描述了根据本申请实施例的视频平滑播放方法,下面分别结合图7和图8描述根据本申请实施例的装置和设备。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,所述程序执行时可包括如图2-6对应实施例中的视频平滑播放方法的部分或全部步骤。
图7为本申请实施例提供的一种计算机装置700的结构示例图。该计算机装置700包括获取模块710、处理模块720和发送模块730。
其中,获取模块710,用于获取目标帧率、图像到达帧率和垂直同步周期,执行图2方法中的210、图4方法中的430。
处理模块720,用于根据目标帧率和图像到达帧率的大小,确定抖动缓冲器中存储的视频帧数量,执行图2-6的方法中的部分或全部步骤。
发送模块730,用于向显示设备发送抖动缓冲器中保留的视频帧,执行图2方法中的230、图4方法中的440。
图8为本申请实施例提供的另一种计算机装置800的结构示例图。计算机装置800包括处理器802、通信接口803和存储器804。计算机装置800的一种示例为芯片。计算机装置800的另一种示例为计算设备。
上述本申请实施例揭示的方法可以应用于处理器802中,或者由处理器802实现。处理器802可以是中央处理器(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。在实现过程中,上述方法的各步骤可以通过处理器802中的硬件的集成逻辑电路或者软件形式的指令完成。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。
存储器804可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。应注意,本文描述的方法和装置的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
处理器802、存储器804和通信接口803之间可以通过总线通信。存储器804中存储有可执行代码,处理器802读取存储器804中的可执行代码以执行对应的方法。存储器804中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。
例如,存储器804中的可执行代码用于实现图2-6所示的方法,处理器802读取存储器804中的该可执行代码以执行图2-6所示的方法。
在本申请的一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图9示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品900是使用信号承载介质901来提供的。所述信号承载介质901可以包括一个或多个程序指令902,其当被一个或多个处理器运行时可以提供以上针对图2-6所示的方法中描述的功能或者部分功能。因此,例如,参考图2-6中所示的实施例,其中的一个或多个特征可以由与信号承载介质901相关联的一个或多个指令来承担。
在一些示例中,信号承载介质901可以包含计算机可读介质903,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等等。在一些实施方式中,信号承载介质901可以包含计算机可记录介质904,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质901可以包含通信介质905,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质901可以由无线形式的通信介质905(例如,遵守IEEE 802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令902可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,前述的计算设备可以被配置为,响应于通过计算机可读介质903、计算机可记录介质904、和/或通信介质905中的一个或多个传达到计算设备的程序指令902,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种视频平滑播放方法,其特征在于,应用于视频传输系统中,所述视频传输系统包括发送端和接收端,所述接收端包括抖动缓冲器和显示设备,所述方法包括:
所述抖动缓冲器获取目标帧率和图像到达帧率,所述目标帧率为所述发送端传输多个视频帧的帧率,所述图像到达帧率为所述抖动缓冲器在预设时段内接收所述多个视频帧的频率,所述预设时段的结束时刻为所述抖动缓冲器接收到第一视频帧的时刻,所述第一视频帧为所述多个视频帧中的任一个;
所述抖动缓冲器根据所述目标帧率和所述图像到达帧率的大小,确定所述抖动缓冲器中存储的视频帧数量;
所述抖动缓冲器向所述显示设备发送所述抖动缓冲器中保留的视频帧,其中,所述发送所述抖动缓冲器中保留的视频帧的时间间隔为所述显示设备的垂直同步周期的N倍,N为大于或者等于1的整数。
2.根据权利要求1所述的方法,其特征在于,所述抖动缓冲器根据所述目标帧率和所述图像到达帧率的大小,确定所述抖动缓冲器中存储的视频帧数量,包括:
若所述图像到达帧率大于所述目标帧率,所述抖动缓冲器丢弃M个视频帧,N等于1,M为大于或者等于1的整数。
3.根据权利要求2所述的方法,其特征在于,在所述抖动缓冲器丢弃M个视频帧之前,所述方法还包括:
所述抖动缓冲器获取所述显示设备的应用的延迟收敛周期,所述延迟收敛周期为所述应用预设的能够等待播放的最长延迟时间;
所述抖动缓冲器根据所述延迟收敛周期确定M的取值。
4.根据权利要求1所述的方法,其特征在于,所述图像到达帧率小于所述目标帧率,N大于1。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述第一视频帧包括经过解码后的视频帧。
6.一种计算机装置,其特征在于,所述装置包括:
获取模块,用于获取目标帧率和图像到达帧率,所述目标帧率为所述发送端传输多个视频帧的帧率,所述图像到达帧率为所述抖动缓冲器在预设时段内接收所述多个视频帧的频率,所述预设时段的结束时刻为所述抖动缓冲器接收到第一视频帧的时刻,所述第一视频帧为所述多个视频帧中的任一个;
处理模块,用于根据所述目标帧率和所述图像到达帧率的大小,确定所述抖动缓冲器中存储的视频帧数量;
发送模块,还用于向所述显示设备发送所述抖动缓冲器中保留的视频帧,其中,所述发送所述抖动缓冲器中保留的视频帧的时间间隔为所述显示设备的垂直同步周期的N倍,N为大于或者等于1的整数。
7.根据权利要求6所述的装置,其特征在于,所述处理模块,具体用于:
若所述图像到达帧率大于所述目标帧率,所述抖动缓冲器丢弃M个视频帧,N等于1,M为大于或者等于1的整数。
8.根据权利要求7所述的装置,其特征在于,所述获取模块,还用于获取所述显示设备的应用的延迟收敛周期,所述延迟收敛周期为所述应用预设的能够等待播放的最长延迟时间;
所述处理模块,还用于根据所述延迟收敛周期确定M的取值。
9.根据权利要求6所述的装置,其特征在于,所述图像到达帧率小于所述目标帧率,N大于1。
10.根据权利要求6至9任一项所述的装置,其特征在于,所述第一视频帧包括经过解码后的视频帧。
11.一种计算机设备,其特征在于,包括:处理器,所述处理器用于与存储器耦合,读取并执行所述存储器中的指令和/或程序代码,以执行如权利要求1-5中任一项所述的方法。
12.一种芯片系统,其特征在于,包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行如权利要求1-5中任一项所述的方法。
13.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-5中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2023104838657 | 2023-04-28 | ||
CN202310483865 | 2023-04-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118870050A true CN118870050A (zh) | 2024-10-29 |
Family
ID=93162677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310678013.3A Pending CN118870050A (zh) | 2023-04-28 | 2023-06-08 | 视频平滑播放方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118870050A (zh) |
-
2023
- 2023-06-08 CN CN202310678013.3A patent/CN118870050A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111294634B (zh) | 直播方法、装置、系统、设备及计算机可读存储介质 | |
CN109714634B (zh) | 一种直播数据流的解码同步方法、装置及设备 | |
CN113225598B (zh) | 移动端音视频同步的方法、装置、设备及存储介质 | |
US10659721B2 (en) | Method of processing a sequence of coded video frames | |
US11343560B2 (en) | Systems and methods for synchronizing audio and video | |
CN108495152B (zh) | 一种视频直播方法、装置、电子设备及介质 | |
US10638180B1 (en) | Media timeline management | |
US9143810B2 (en) | Method for manually optimizing jitter, delay and synch levels in audio-video transmission | |
US11128894B2 (en) | Method and mobile terminal for processing data | |
CN112291498B (zh) | 音视频数据传输的方法、装置和存储介质 | |
WO2021082642A1 (zh) | 视频播放控制方法和系统 | |
CN114546308A (zh) | 应用界面投屏方法、装置、设备以及存储介质 | |
CN114554277B (zh) | 多媒体的处理方法、装置、服务器及计算机可读存储介质 | |
US20070217505A1 (en) | Adaptive Decoding Of Video Data | |
CN111131874A (zh) | 一种解决h.256码流随机接入点播放卡顿的方法及设备 | |
US10382810B2 (en) | Method and device for implementing synchronous playing | |
CN112073823B (zh) | 丢帧处理方法、视频播放终端及计算机可读存储介质 | |
CN114268830A (zh) | 云导播同步方法、装置、设备及存储介质 | |
CN113691862B (zh) | 视频处理方法、用于视频播放的电子设备和视频播放系统 | |
CN118870050A (zh) | 视频平滑播放方法和装置 | |
CN110351576B (zh) | 一种在工业场景下进行实时视频流快速显示的方法及其系统 | |
JPWO2014115389A1 (ja) | ビデオ表示装置及びビデオ表示方法 | |
JP6711120B2 (ja) | 映像再生装置、映像再生方法および映像再生プログラム | |
CN107852523B (zh) | 用于在终端之间同步媒体渲染的方法、终端和设备 | |
CN114449344A (zh) | 视频流传输方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |