CN116320573A - 一种音视频同步方法、装置以及设备 - Google Patents
一种音视频同步方法、装置以及设备 Download PDFInfo
- Publication number
- CN116320573A CN116320573A CN202310338823.4A CN202310338823A CN116320573A CN 116320573 A CN116320573 A CN 116320573A CN 202310338823 A CN202310338823 A CN 202310338823A CN 116320573 A CN116320573 A CN 116320573A
- Authority
- CN
- China
- Prior art keywords
- audio
- video
- time stamp
- decoding time
- decoding
- 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 62
- 239000000872 buffer Substances 0.000 claims description 62
- 238000009877 rendering Methods 0.000 claims description 31
- 230000001360 synchronised effect Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 11
- 230000003044 adaptive effect Effects 0.000 claims description 5
- 230000006978 adaptation Effects 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims description 2
- 230000009471 action Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000006872 improvement Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000033764 rhythmic process Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/4302—Content synchronisation processes, e.g. decoder synchronisation
-
- 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/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本说明书实施例公开了一种音视频同步方法、装置以及设备。方案包括:在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;获取当前的所述音频解码时间戳;获取尚未解码的视频帧对应的视频解码时间戳;判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;若是,则将所述视频帧送去进行解码。
Description
技术领域
本说明书涉及视频处理技术领域,尤其涉及一种音视频同步方法、装置以及设备。
背景技术
音视频编码,就是将一种音视频格式,转换成另一种音视频格式,目的主要在于压缩,降低数据量,以便更低成本地存储或传输,之后需要播放时则要相应地进行音视频解码,常见的应用场景是实时通信(Real Time Communication,RTC),比如,网络直播、视频电话等。
对于实时通信除了实时性要求较高以外,还对音视频同步性的要求较高,音视频同步指的是:音频、视频(指图像部分)播放过程中,保证同一时刻产生的音频数据和视频数据能够在尽量在同一时间播放。尤其在网络直播的场景下,若音视频同步性不好,会造成直播内容的撕裂感,严重影响观众收看效果。
基于此,需要可靠性好的音视频同步方案。
发明内容
本说明书一个或多个实施例提供一种音视频同步方法、装置、设备以及存储介质,用以解决如下技术问题:需要可靠性好的音视频同步方案。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
本说明书一个或多个实施例提供的一种音视频同步方法,包括:
在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
获取当前的所述音频解码时间戳;
获取尚未解码的视频帧对应的视频解码时间戳;
判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
若是,则将所述视频帧送去进行解码。
本说明书一个或多个实施例提供的一种音视频同步装置,包括:
音频解码时间戳更新模块,在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
音频解码时间戳获取模块,获取当前的所述音频解码时间戳;
视频解码时间戳获取模块,获取尚未解码的视频帧对应的视频解码时间戳;
音视频解码时间戳比较模块,判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
视频帧解码追赶触发模块,若是,则将所述视频帧送去进行解码。
本说明书一个或多个实施例提供的一种音视频同步设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
获取当前的所述音频解码时间戳;
获取尚未解码的视频帧对应的视频解码时间戳;
判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
若是,则将所述视频帧送去进行解码。
本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
获取当前的所述音频解码时间戳;
获取尚未解码的视频帧对应的视频解码时间戳;
判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
若是,则将所述视频帧送去进行解码。
本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:扩展携带了能够确定的解码时间戳,以音频解码时间戳作为参考,通过比较对齐视频解码时间戳与音频解码时间戳,触发视频帧的解码动作及时地追赶最新解码的音频的解码动作,在解码层面上做到了高精度的同步,也有助于在解码后音视频渲染的进一步配合下实现音视频高精度的同步播放。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一种基于目标时延预测的音视频同步方法的流程示意图;
图2为本说明书一个或多个实施例提供的一种基于解码时间戳的音视频同步方法的流程示意图;
图3为本说明书一个或多个实施例提供的一种扩展解码时间戳的字段结构示意图;
图4为本说明书一个或多个实施例提供的一种扩展相对时间戳的字段结构示意图;
图5为本说明书一个或多个实施例提供的一种应用场景下,图2中方法的一种具体实施方案的流程示意图;
图6为本说明书一个或多个实施例提供的一种在检测到同步误差时音视频主动执行辅助动作的方案的流程示意图;
图7为本说明书一个或多个实施例提供的一种音视频同步装置的结构示意图;
图8为本说明书一个或多个实施例提供的一种音视频同步设备的结构示意图。
具体实施方式
本说明书实施例提供一种音视频同步方法、装置、设备以及存储介质。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
申请人在实际应用中尝试了一些方案通过RTC来拉取观看直播,但是难以精确保证音视频同步,造成体验上的不完美。更直观地,申请人之前采用的音视频同步方案之一如图1所示,图1为本说明书一个或多个实施例提供的一种基于目标时延预测的音视频同步方法的流程示意图。
在图1的流程中,涉及拉流模块、音频缓冲、视频缓冲、音视频同步模块。流程主要包括以下步骤:
拉流模块拉取音频数据,暂存至音频缓冲内,在音频缓冲内评估并更新对应的当前延迟、目标延迟。
拉流模块拉取视频数据,暂存至视频缓冲内,在视频缓冲内评估并更新对应的当前延迟、目标延迟。
音视频同步模块同步启动后,根据音视频的当前时延,目标时延,最近一对音视频包的相对时延来进行同步。
对于图1的方案,由于目标时延的值是预测出来的,本身存在不确定性,导致音频包从音频缓存内移出去的时间,与对应的视频帧从视频缓存内移出去的时间可能是不对齐的,从而导致音视频同步不精准,不适应于诸如视频直播等对音视频同步误差要求很高的应用场景。基于此,申请人进一步地改进了方案,删除了解码时间不确定性的部分,构造了解码时间戳RTP扩展,使用确定的音频解码时间戳和视频解码时间戳来对齐解码时间,以解决音视频包分别从各自对应的缓存移出去的时间存在不同步的问题,有效支持了本应该在特定时间解码的音视频帧能够在特定时间被解码,从而在解码层面做到同步,继而也支持到渲染模块依据显示时间戳进行音视频渲染,做到音视频高精度的同步。下面继续详细说明本申请的方案。
图2为本说明书一个或多个实施例提供的一种音视频同步方法的流程示意图。该流程可以具有视频解码需求的机器上执行,这些机器通常与编码模块或设备连接,用于对编码结果进行解码后使用,这些机器比如是,智能手机、平板电脑、监控摄像头后端连接的监控管理中心平台等。流程中的某些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。
图2中的流程包括以下步骤:
S202:在音频开始播放后,更新最新解码的音频对应的音频解码时间戳。
在本说明书一个或多个实施例中,在该流程执行前,音频和视频是已经编码过的数据,可以以数据包的形式封装好,传输、存储以及进行同步解码。
在封装的阶段,比如,基于RTP的协议封装成相应的RTP音频包和RTP视频包,由于视频本身已经按帧划分好了,因此,可以以视频帧为单位,与对应的音频包或音频包内的部分音频数据进行同步。对于音频(即声音)和视频(即画面)而言,解码后可以渲染播放,两者同步播放则实现了通常意义上的视频(这是广义的视频,包括了声音和画面)播放。
在本说明书一个或多个实施例中,为每个音频包或其中的每份音频数据记录对应的音频解码时间戳,音频解码时间戳指示了其对应的音频所应被解码的时刻,随着各音频按照音频解码时间戳有序地被送去解码进而播放,将当前最新解码(具体比如,最新送出去进行解码,或最新开始执行解码,或最新完成解码等,可以根据检测位置的不同预先定义)的音频对应的音频解码时间戳作为进行音视频同步的参考时刻,该参考时刻随着更新会向前推进,视频则参考该参考时刻,主动与音频对齐。
S204:获取当前的所述音频解码时间戳。
当前的音频解码时间戳即为最近一次更新的参考时刻,随着上述更新动作的持续进行,能够相应地持续获取到最新的参考时刻。
S206:获取尚未解码的视频帧对应的视频解码时间戳。
类似地,为每个视频包或其中的每份视频数据记录对应的视频解码时间戳,视频解码时间戳指示了其对应的视频所应被解码的时刻,为了便于处理,以视频帧为单位,则每个视频帧都有对应的视频解码时间戳。各视频帧应当按照视频解码时间戳的时序依次送去解码,则可以优先获取该时序靠前的一帧或多帧的视频解码时间戳,这一帧或多帧是当前更有可能需要尽快送去解码的视频帧。
S208:判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳。
在本说明书一个或多个实施例中,解码时间戳越小则对应的时序越靠前,越应当更早地送去解码,优先获取当前时序最靠前的一帧视频帧,执行该判断,该步骤中的判断动作实质上是在判断视频解码时间戳是否滞后于参考时间,有等于和小于两种情况。对于等于的情况,表明当前音频和视频是解码对齐状态,则可以立即将该视频帧送出去解码,继续保持对齐状态即可,而对于小于的情况,表明当前视频的解码已经滞后于音频的解码,且小得越多,表明滞后的程度越大,则除了需要立即将该视频帧(已滞后)送出去解码以外,还需要将随后的至少一帧(其中的最后一帧为原本应当与当前音频对齐的视频帧,称为同步帧)视频帧也尽快送出去解码,以便追赶上音频的解码进度,将解码时间重新对齐。可以对随后的帧也执行该判断,直至得到等于或大于的判断结果,以确定该至少一帧到底有几帧。
S210:若是,则将所述视频帧送去进行解码。
在本说明书一个或多个实施例中,随着按照视频解码时间戳的时序,对视频帧依次执行步骤S208的判断,在越过同步帧后,之后的视频帧对应的视频解码时间戳可能会大于当前的音频解码时间戳,那么该之后的视频帧可以暂时不送去进行解码,而是等待音频解码时间戳进一步更新后,再尽量同步地送去解码。
在解码时间对齐的基础上,若解码后的渲染工作正常进行,则渲染时间也是容易对齐的,尤其是在没有B帧的情况下,进而可以精准地同步渲染播放音视频,渲染工作可以由相应的渲染模块执行,根据渲染时间戳适时地对音视频进行渲染。
通过图2的方法,扩展携带了能够确定的解码时间戳,以音频解码时间戳作为参考,通过比较对齐视频解码时间戳与音频解码时间戳,触发视频帧的解码动作及时地追赶最新解码的音频的解码动作,在解码层面上做到了高精度的同步,也有助于在解码后音视频渲染的进一步配合下实现音视频高精度的同步播放。
基于图2的方法,本说明书还提供了该方法的一些具体实施方案和扩展方案,下面继续进行说明。
在本说明书一个或多个实施例中,为了便于获取音频解码时间戳和视频解码时间戳,在待播放的音频、视频(待解码的数据)携带对应的音频解码时间戳或视频解码时间戳,具体在对应封装的数据包里扩展字段以容纳解码时间戳。以RTP封装包为例,基于RTP协议,通过RTP头部扩展来定义相应的字段,参见图3、图4。
图3为本说明书一个或多个实施例提供的一种扩展解码时间戳的字段结构示意图。该字段结构属于RTP头部扩展,其中包括3个字段:标识(ID)字段、长度(len)字段和解码时间戳(decoding timestamp)字段,解码时间戳字段比如设定为4个字节。基于此,为为待播放的音频生成对应的第一RTP头部扩展,在第一RTP头部扩展内携带对应的音频解码时间戳,为待播放的视频生成对应的第二RTP头部扩展,在第二RTP头部扩展内携带对应的视频解码时间戳。
在解码完毕进行渲染时,尤其需要精确地控制对视频帧的渲染时刻,若渲染模块没有预先记录相对时间戳,或渲染时间戳(也可以称为显示时间戳),则也可以在RTP头部扩展内携带这些时间戳,以便解码模块或渲染模块使用,其中,渲染时间戳可以根据对应的解码时间戳和相对时间戳相加计算得到。以相对时间戳为例,图4为本说明书一个或多个实施例提供的一种扩展相对时间戳的字段结构示意图。该字段结构属于RTP头部扩展,其中包括3个字段:标识(ID)字段、长度(len)字段和相对时间戳(composition timestamp)字段,相对时间戳字段比如设定为3个字节。
在本说明书一个或多个实施例中,使携带了对应的解码时间戳的音频、视频进入对应的音频缓冲和视频缓冲内,以RTP的场景为例,比如,音频缓冲为Neteq,视频缓冲为Jitterbuffer。当需要解码时,将相应的音频或视频数据,从缓存中移出来,送至相应的解码器进行解码。
由于音频缓冲和视频缓冲为不同的缓存区域,甚至有可能在不同的机器上,为了提高效率,在执行图2中的流程时在两种缓存之间进行更精确的配合。
在更新音频时间戳时,具体地,确定从音频缓冲最新移出以解码播放的音频,作为当前的同步参考音频,获取当前的同步参考音频对应的音频解码时间戳,在音频缓冲内进行更新(在这种情况下,上述的检测位置为音频缓冲,最新解码可以定义为最新送出去进行解码),在同步启动后,周期性(周期可以尽量小,以降低误差,比如设定为毫秒级别)地将当前的音频解码时间戳,从音频缓冲更新到视频缓冲,以便针对视频缓冲执行上述的判断。
在获取尚未解码的视频帧对应的视频解码时间戳,具体地,确定视频缓冲内当前的移出顺序最靠前的视频帧,获取其对应的视频解码时间戳。若判断该视频解码时间戳小于当前的音频解码时间戳,则可以尽快从视频缓冲内获取下一帧视频帧,下一帧视频帧该下一帧可能是同步帧,也可能是滞后帧,无论那种情况,都可以将该下一帧视频帧也立即从视频缓冲内移出送去解码,若是滞后帧,则可以尽快从视频缓冲内获取再下一帧视频帧,并尽快执行上述的判断,而若是同步帧,则可以按照正常的节奏继续判断,同步推进后续的音视频移出缓存进行解码。
更直观地,本说明书一个或多个实施例提供的一种应用场景下,图2中方法的一种具体实施方案的流程示意图,如图3所示。在图3的流程中,涉及拉流模块、音频缓冲、视频缓冲、音视频同步模块。
图3的流程包括以下步骤:
拉流模块拉取音频数据,音频数据(封装为音频包形式)携带了RTP头部扩展,其中包含了本次音频对应的音频解码时间戳,音频包暂存至音频缓冲Neteq内。
拉流模块拉取视频数据,视频数据(以视频帧为单位封装为视频包形式)携带了RTP头部扩展,其中包含了本次视频帧对应的视频解码时间戳,视频帧暂存至视频缓冲Jitterbuffer内。
同步启动后,音频开始播放,音频包从Neteq送出去解码后更新最新解码的音频包对应的音频解码时间戳,记作dts_audio。
音视频同步模块周期性(比如,每10毫秒1次)往Neteq取dts_audio,并同步到Jitterbuffer。
视频帧的视频解码时间戳,记作dts_video,当dts_video<=audio_dts时,该帧被送去解码。
解码后都会送去渲染模块渲染,由于解码的时间序列是对齐的,所以如果渲染模块没有异常的话,渲染的时间也是对齐的,渲染时间戳PTS=CTS+DTS,从而达到高精度的音视频同步。
在本说明书一个或多个实施例中,在出现解码同步性不好的时候,除了尽快执行判断以及将滞后的视频帧送去解码以外,还可以主动地执行辅助动作,以缓解同步误差带来不好体验。辅助动作也包括从音频角度执行的和从视频角度执行的,分别进行说明。
在音频角度,音视频不同步时,观看人的直接感受就是不自然的断层感,对于录制视频而言,可以考虑手动延迟音频,但是,对于RTP场景,同步误差可能会动态变化,若不能精准延迟,则断层感仍然会很明显,为了提高容错性,不采用延迟音频的方式,而是对音频进行自适应的拉升播放处理,一方面使得该段音频覆盖更广的时域范围,另一方面使得音频出现一定的降频效果,从而音频之间或音频与空隙之间的接续处断层缓和,能够更平稳地过渡。
另外,需要注意的是视频帧中存在B帧的情况,B帧的解码需要参考其前后出现的帧的解码结果,假定当前处理的尚未解码的视频帧为B帧所依赖的后向帧,且该后向帧已经滞后(对应的视频解码时间戳小于当前的音频解码时间戳)了,那么该B帧相当于滞后更多,但是又需要先显示B帧,在这种情况下,尤其需要尽快重新同步。基于此,在滞后的时间差较大,且确定当前处理的尚未解码的视频帧为B帧所依赖的后向帧的情况下,尤其可以考虑对音频进行拉伸播放处理。
在视频角度,若滞后的时间差较大,则可以考虑适时地丢弃中间的一些滞后帧,称为中间帧,可以避免它们解码或渲染耗费时间,不过,在实际应用中,丢帧本身也容易带来不良体验,基于此,主动补充与当前视频帧状态较为和谐的已解码帧,使得画面的显示在人的视觉上更为连续平滑。
另外,具体在什么阶段丢弃中间帧可以考虑帧之间是否存在解码依赖关系,若存在解码依赖关系,则可以对中间帧解码完毕后再丢弃,在这种情况下,可能减少渲染耗费时间,而若不存在解码依赖关系,可以在中间帧尚未解码时即丢弃,则可以减少解码和渲染耗费时间。
基于上面的辅助动作思路,本说明书一个或多个实施例提供了一种在检测到同步误差时音视频主动执行辅助动作的方案的流程示意图,如图6所示。
S602:在所述判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳之后,确定是从音频角度和/或视频角度执行辅助动作。
两个角度分支可以择一执行,也可以都执行。对于音频角度,继续执行步骤S604、S606、S608。对于视频角度,继续执行步骤S610、S612、S614、S616。
S604:若是,则确定所述视频解码时间戳与所述当前的所述音频解码时间戳之间的时间差是否大于设定阈值。设定阈值不小于0。
若大于设定阈值,则表示当前存在滞后。
S606:若大于所述设定阈值,则确定已送去解码尚未播放的音频,作为自适应音频。
S608:根据所述时间差,对所述自适应音频进行拉伸播放处理。
在对自适应音频进行拉伸播放处理之前,可以确定该尚未解码的视频帧是否为B帧所依赖的后向帧,在是的情况下,尤其可以执行S608,或者可以加大拉伸播放处理力度。
S610:在已解码过的视频帧中检测分镜帧,生成与所述分镜帧适配的柔和帧。
可以预先生成柔和帧,柔和帧本身处于已解码状态,从而避免增加解码时间,柔和帧指颜色、纹理或纹理等视觉特征与分镜帧较为接近的帧,能够较为柔和地在分镜帧下的一组视频帧之间过渡。
S612:若是,则确定所述视频解码时间戳与所述当前的所述音频解码时间戳之间的时间差是否大于第一阈值,所述第一阈值不小于0。
若大于第一阈值,则表示当前存在滞后。
S614:若所述时间差大于所述第一阈值,则从尚未解码的视频帧中获取视频解码时间戳处于所述时间差的至少一个视频帧,作为中间帧。
S616:将所述中间帧丢弃而不进行解码和/或渲染,若所述时间差大于第二阈值,所述第二阈值大于所述第一阈值,则将所述柔和帧作为被丢弃的所述中间帧对应的解码结果或渲染结果,进行播放。
确定中间帧是否不为其他帧解码时所依赖的帧,若是,则可以尽快将中间帧丢弃而不进行解码,否则,可以将中间帧解码完毕后再丢弃,而不进行渲染。
若大于第二阈值,则表示当前不仅存在滞后,而且滞后程度较大难以容忍。可以尽量早地完成柔和帧对应的渲染过程,以更及时平滑地衔接前面的帧,减低渲染等待时间。
基于同样的思路,本说明书一个或多个实施例还提供了上述方法对应的装置和设备,如图7、图8所示。装置和设备能够相应执行上述方法及相关的可选方案。
图7为本说明书一个或多个实施例提供的一种音视频同步装置的结构示意图,所述装置包括:
音频解码时间戳更新模块702,在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
音频解码时间戳获取模块704,获取当前的所述音频解码时间戳;
视频解码时间戳获取模块706,获取尚未解码的视频帧对应的视频解码时间戳;
音视频解码时间戳比较模块708,判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
视频帧解码追赶触发模块710,若是,则将所述视频帧送去进行解码。
可选地,还包括:
解码时间戳扩展携带模块712,在所述更新最新解码的音频对应的音频解码时间戳之前,在待播放的音频、视频携带对应的音频解码时间戳或视频解码时间戳;
使所述携带了对应的解码时间戳的所述音频、所述视频进入对应的音频缓冲和视频缓冲内。
可选地,所述解码时间戳扩展携带模块712,为待播放的音频生成对应的第一RTP头部扩展,在所述第一RTP头部扩展内携带对应的音频解码时间戳;
为待播放的视频生成对应的第二RTP头部扩展,在所述第二RTP头部扩展内携带对应的视频解码时间戳。
可选地,所述视频解码时间戳获取模块706,获取所述尚未解码的视频帧通过RTP头部扩展携带的相对时间戳;
根据所述相对时间戳和所述最新解码的音频的播放相关信息,确定所述尚未解码的视频帧对应的视频解码时间戳。
可选地,所述音频缓冲为Neteq,所述视频缓冲为Jitterbuffer。
可选地,所述音频解码时间戳更新模块702,确定从所述音频缓冲最新移出以解码播放的音频,作为当前的同步参考音频;
获取所述当前的同步参考音频对应的音频解码时间戳,在所述音频缓冲内进行更新;
在同步启动后,周期性地将当前的所述音频解码时间戳,从所述音频缓冲更新到所述视频缓冲,以便针对所述视频缓冲执行所述判断。
可选地,所述视频解码时间戳获取模块706,确定所述视频缓冲内当前的移出顺序最靠前的视频帧,获取其对应的视频解码时间戳。
可选地,所述音频时间差主动适配模块714,在所述判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳之后,若是,则确定所述视频解码时间戳与所述当前的所述音频解码时间戳之间的时间差是否大于设定阈值;
若大于所述设定阈值,则确定已送去解码尚未播放的音频,作为自适应音频;
根据所述时间差,对所述自适应音频进行拉伸播放处理。
可选地,所述音频时间差主动适配模块714,在所述对所述自适应音频进行拉伸播放处理之前,确定所述尚未解码的视频帧为B帧所依赖的后向帧。
所述视频帧解码追赶触发模块710,在所述判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳之后,若是,则确定所述视频解码时间戳与所述当前的所述音频解码时间戳之间的时间差是否大于第一阈值,所述第一阈值不小于0;
若所述时间差大于所述第一阈值,则从尚未解码的视频帧中获取视频解码时间戳处于所述时间差的至少一个视频帧,作为中间帧;
将所述中间帧丢弃而不进行解码和/或渲染。
可选地,所述视频帧解码追赶触发模块710,在所述将所述中间帧丢弃之前,确定所述中间帧不为其他帧解码时所依赖的帧。
可选地,所述视频帧解码追赶触发模块710,在已解码过的视频帧中检测分镜帧,生成与所述分镜帧适配的柔和帧;
若所述时间差大于第二阈值,所述第二阈值大于所述第一阈值,则将所述柔和帧作为被丢弃的所述中间帧对应的解码结果或渲染结果,进行播放。
图8为本说明书一个或多个实施例提供的一种音视频同步设备的结构示意图,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
获取当前的所述音频解码时间戳;
获取尚未解码的视频帧对应的视频解码时间戳;
判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
若是,则将所述视频帧送去进行解码。
基于同样的思路,本说明书一个或多个实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
获取当前的所述音频解码时间戳;
获取尚未解码的视频帧对应的视频解码时间戳;
判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
若是,则将所述视频帧送去进行解码。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (23)
1.一种音视频同步方法,包括:
在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
获取当前的所述音频解码时间戳;
获取尚未解码的视频帧对应的视频解码时间戳;
判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
若是,则将所述视频帧送去进行解码。
2.如权利要求1所述的方法,所述更新最新解码的音频对应的音频解码时间戳之前,所述方法还包括:
在待播放的音频、视频携带对应的音频解码时间戳或视频解码时间戳;
使所述携带了对应的解码时间戳的所述音频、所述视频进入对应的音频缓冲和视频缓冲内。
3.如权利要求2所述的方法,所述在待播放的音频、视频携带对应的音频解码时间戳或视频解码时间戳,具体包括:
为待播放的音频生成对应的第一RTP头部扩展,在所述第一RTP头部扩展内携带对应的音频解码时间戳;
为待播放的视频生成对应的第二RTP头部扩展,在所述第二RTP头部扩展内携带对应的视频解码时间戳。
4.如权利要求2所述的方法,所述音频缓冲为Neteq,所述视频缓冲为Jitterbuffer。
5.如权利要求2所述的方法,所述更新最新解码的音频对应的音频解码时间戳,具体包括:
确定从所述音频缓冲最新移出以解码播放的音频,作为当前的同步参考音频;
获取所述当前的同步参考音频对应的音频解码时间戳,在所述音频缓冲内进行更新;
在同步启动后,周期性地将当前的所述音频解码时间戳,从所述音频缓冲更新到所述视频缓冲,以便针对所述视频缓冲执行所述判断。
6.如权利要求5所述的方法,所述获取尚未解码的视频帧对应的视频解码时间戳,具体包括:
确定所述视频缓冲内当前的移出顺序最靠前的视频帧,获取其对应的视频解码时间戳。
7.如权利要求1所述的方法,所述判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳之后,所述方法还包括:
若是,则确定所述视频解码时间戳与所述当前的所述音频解码时间戳之间的时间差是否大于设定阈值;
若大于所述设定阈值,则确定已送去解码尚未播放的音频,作为自适应音频;
根据所述时间差,对所述自适应音频进行拉伸播放处理。
8.如权利要求7所述的方法,所述对所述自适应音频进行拉伸播放处理之前,所述方法还包括:
确定所述尚未解码的视频帧为B帧所依赖的后向帧。
9.如权利要求1所述的方法,所述判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳之后,所述方法还包括:
若是,则确定所述视频解码时间戳与所述当前的所述音频解码时间戳之间的时间差是否大于第一阈值,所述第一阈值不小于0;
若所述时间差大于所述第一阈值,则从尚未解码的视频帧中获取视频解码时间戳处于所述时间差的至少一个视频帧,作为中间帧;
将所述中间帧丢弃而不进行解码和/或渲染。
10.如权利要求9所述的方法,所述将所述中间帧丢弃之前,所述方法还包括:
确定所述中间帧不为其他帧解码时所依赖的帧。
11.如权利要求10所述的方法,还包括:
在已解码过的视频帧中检测分镜帧,生成与所述分镜帧适配的柔和帧;
所述将所述中间帧丢弃,还包括:
若所述时间差大于第二阈值,所述第二阈值大于所述第一阈值,则将所述柔和帧作为被丢弃的所述中间帧对应的解码结果或渲染结果,进行播放。
12.一种音视频同步装置,包括:
音频解码时间戳更新模块,在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
音频解码时间戳获取模块,获取当前的所述音频解码时间戳;
视频解码时间戳获取模块,获取尚未解码的视频帧对应的视频解码时间戳;
音视频解码时间戳比较模块,判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
视频帧解码追赶触发模块,若是,则将所述视频帧送去进行解码。
13.如权利要求12所述的装置,还包括:
解码时间戳扩展携带模块,在所述更新最新解码的音频对应的音频解码时间戳之前,在待播放的音频、视频携带对应的音频解码时间戳或视频解码时间戳;
使所述携带了对应的解码时间戳的所述音频、所述视频进入对应的音频缓冲和视频缓冲内。
14.如权利要求13所述的装置,所述解码时间戳扩展携带模块,为待播放的音频生成对应的第一RTP头部扩展,在所述第一RTP头部扩展内携带对应的音频解码时间戳;
为待播放的视频生成对应的第二RTP头部扩展,在所述第二RTP头部扩展内携带对应的视频解码时间戳。
15.如权利要求13所述的装置,所述音频缓冲为Neteq,所述视频缓冲为Jitterbuffer。
16.如权利要求13所述的装置,所述音频解码时间戳更新模块,确定从所述音频缓冲最新移出以解码播放的音频,作为当前的同步参考音频;
获取所述当前的同步参考音频对应的音频解码时间戳,在所述音频缓冲内进行更新;
在同步启动后,周期性地将当前的所述音频解码时间戳,从所述音频缓冲更新到所述视频缓冲,以便在所述视频缓冲内执行所述判断。
17.如权利要求16所述的装置,所述视频解码时间戳获取模块,确定所述视频缓冲内当前的移出顺序最靠前的视频帧,获取其对应的视频解码时间戳。
18.如权利要求12所述的装置,所述音频时间差主动适配模块,在所述判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳之后,若是,则确定所述视频解码时间戳与所述当前的所述音频解码时间戳之间的时间差是否大于设定阈值;
若大于所述设定阈值,则确定已送去解码尚未播放的音频,作为自适应音频;
根据所述时间差,对所述自适应音频进行拉伸播放处理。
19.如权利要求18所述的装置,所述音频时间差主动适配模块,在所述对所述自适应音频进行拉伸播放处理之前,确定所述尚未解码的视频帧为B帧所依赖的后向帧。
20.如权利要求12所述的装置,所述视频帧解码追赶触发模块,在所述判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳之后,若是,则确定所述视频解码时间戳与所述当前的所述音频解码时间戳之间的时间差是否大于第一阈值,所述第一阈值不小于0;
若所述时间差大于所述第一阈值,则从尚未解码的视频帧中获取视频解码时间戳处于所述时间差的至少一个视频帧,作为中间帧;
将所述中间帧丢弃而不进行解码和/或渲染。
21.如权利要求20所述的装置,所述视频帧解码追赶触发模块,在所述将所述中间帧丢弃之前,确定所述中间帧不为其他帧解码时所依赖的帧。
22.如权利要求21所述的装置,所述视频帧解码追赶触发模块,在已解码过的视频帧中检测分镜帧,生成与所述分镜帧适配的柔和帧;
若所述时间差大于第二阈值,所述第二阈值大于所述第一阈值,则将所述柔和帧作为被丢弃的所述中间帧对应的解码结果或渲染结果,进行播放。
23.一种音视频同步设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:
在音频开始播放后,更新最新解码的音频对应的音频解码时间戳;
获取当前的所述音频解码时间戳;
获取尚未解码的视频帧对应的视频解码时间戳;
判断所述视频解码时间戳是否不大于所述当前的所述音频解码时间戳;
若是,则将所述视频帧送去进行解码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310338823.4A CN116320573A (zh) | 2023-03-31 | 2023-03-31 | 一种音视频同步方法、装置以及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310338823.4A CN116320573A (zh) | 2023-03-31 | 2023-03-31 | 一种音视频同步方法、装置以及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116320573A true CN116320573A (zh) | 2023-06-23 |
Family
ID=86822317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310338823.4A Pending CN116320573A (zh) | 2023-03-31 | 2023-03-31 | 一种音视频同步方法、装置以及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116320573A (zh) |
-
2023
- 2023-03-31 CN CN202310338823.4A patent/CN116320573A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7471337B2 (en) | Method of audio-video synchronization | |
KR100968928B1 (ko) | 오디오 스트림 및 비디오 스트림의 동기화 장치 및 방법 | |
CN110139148B (zh) | 一种视频切换清晰度的方法及相关装置 | |
EP2227910B1 (en) | Reducing media stream delay through independent decoder clocks | |
JP5452495B2 (ja) | オーディオ・ビデオレンダリングの早期開始システム及び方法 | |
WO2017067489A1 (zh) | 机顶盒音视频同步的方法及装置、存储介质 | |
CN108243350B (zh) | 一种音视频同步处理的方法和装置 | |
JP4983923B2 (ja) | デコーダ装置、およびデコード方法 | |
US9736340B2 (en) | Decoder and decoding method for audio video stream synchronization | |
CN109275008B (zh) | 一种音视频同步的方法和装置 | |
CN107517400B (zh) | 流媒体播放方法及流媒体播放器 | |
CN101303880A (zh) | 录制、播放音视频文件的方法及装置 | |
US20100254673A1 (en) | Supplementary buffer construction in real-time applications without increasing channel change delay | |
CN102075806A (zh) | 一种数字电视音视频同步方法 | |
CN103581730A (zh) | 在数字机顶盒上实现音视频同步的方法 | |
CN112929713A (zh) | 数据同步方法、装置、终端及存储介质 | |
JP2005123789A (ja) | Av同期システム | |
WO2009094841A1 (fr) | Procédé pour le saut de chaîne rapide et continu dans un décodeur iptv | |
CN101290790A (zh) | 一种音视频同步播放的方法和装置 | |
CN102413335A (zh) | 一种手动调节节目音画同步的装置及方法 | |
CN116320573A (zh) | 一种音视频同步方法、装置以及设备 | |
CN107959874B (zh) | 音画同步自动校正方法和装置 | |
CN114710687B (zh) | 音视频同步方法、装置、设备及存储介质 | |
KR100416307B1 (ko) | 동화상 복호화 방법, 동화상 복호화 장치 및 프로그램 기억 매체 | |
KR100864009B1 (ko) | 오디오/비디오 동기화 방법 |
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 |