CN115914708A - 媒体的音视频同步方法及系统、电子设备 - Google Patents
媒体的音视频同步方法及系统、电子设备 Download PDFInfo
- Publication number
- CN115914708A CN115914708A CN202110969874.8A CN202110969874A CN115914708A CN 115914708 A CN115914708 A CN 115914708A CN 202110969874 A CN202110969874 A CN 202110969874A CN 115914708 A CN115914708 A CN 115914708A
- Authority
- CN
- China
- Prior art keywords
- audio
- video
- stream data
- frame
- target
- 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
Images
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请公开了一种媒体的音视频同步方法及系统、电子设备。其中,该方法包括:分别接收来自统同一视频源的视频流数据和同一音频源的音频流数据;确定所述音频流数据中的目标音频帧,并将所述目标音频帧对应的第一时间戳作为音频基准时钟,其中,所述第一时间戳用于指示所述目标音频帧的开始播放时间;确定所述音频基准时钟和所述视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,所述第二时间戳用于指示所述目标视频帧的开始播放时间;依据所述差异对所述视频流数据和所述音频流数据进行同步。本申请解决了由于流媒体客户端播放存在渲染时间不定及线性差异造成的客户端在播放音视频时不同步的技术问题。
Description
技术领域
本申请涉及多媒体技术领域,具体而言,涉及一种媒体的音视频同步方法及系统、电子设备。
背景技术
在使用流媒体服务进行音视频拉流播放的相关场景中,若不使用音视频同步,则长时间播放后出现音频与视频不能对应的情况,影响用户的使用及体验。
相关技术中,在进行音视频同步时,是将音视频混合在一个流媒体服务中,在服务端同步采集音视频数据,播放客户端进行解复用,再分别解码播放。其存在的问题是:在客户端播放存在渲染时间不定和线性差异,不能保证客户端在播放时精确地同步音视频。
针对上述因客户端播放存在渲染时间不定和线性差异的情况,导致不能保证流媒体在客户端播放时实现音视频之间精确同步的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种媒体的音视频同步方法及系统、电子设备,以至少解决由于流媒体客户端播放存在渲染时间不定及线性差异造成的客户端在播放音视频时不同步的技术问题。
根据本申请实施例的一个方面,提供了一种媒体的音视频同步方法,该方法应用于分布式系统中的解码节点中,分布式系统包括:音频源、视频源、编码节点和解码节点,方法包括:在流媒体中分别接收来自同一视频源的视频流数据和同一音频源的音频流数据;在播放音频流数据和视频流数据过程中,音频被接收解码后直接播放,从获取音频第一帧开始计时,并将此时对应的时间戳记为音频PTS,从获取视频第一帧开始计时,将此时对应的时间戳记为视频PTS,确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为音频基准时钟。其中,第一时间戳用于指示目标音频帧的开始播放时间;确定基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,第二时间戳用于指示目标视频帧的开始播放时间;依据差异对视频流数据和音频流数据进行同步。
可选地,在获取音视频的PTS时,以最后获取到的PTS时刻开始进行同步播放,若先获取到音频PTS,后获取到视频PTS,则从获取视频PTS的时刻开始同步播放;若先获取到视频PTS,后获取到音频PTS,则从获取音频PTS的时刻开始进行同步播放,但无论是先获取到音频PTS还是先获取到视频PTS,都采用将视频同步到音频上的方式进行同步。
可选地,目标音频帧包括:音频流数据中首次被接收到的音频帧;目标视频帧包括:视频流数据中首次被接收到的视频帧;或者
目标音频帧包括:音频流数据中除首次被接收到的音频帧之外的任意一个音频帧;目标视频帧包括:视频流数据中除首次被接收到的视频帧之外的任意一个视频帧。
可选地,音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异包括:第二时间戳与音频基准时钟之间的第一差值;依据第一差值将视频流数据调整至与音频流数据同步。
可选地,依据差异对视频流数据和音频流数据进行同步包括:比较第一差值与第一阈值,其中第一差值为目标音频帧与目标视频帧之间的时间戳之差,包括:音频流数据中首次被接收到的音频帧与视频流数据中首次被接收到的视频帧之间的时间戳之差,或音频流数据中除首次被接收到的音频帧之外的任意一个音频帧,与视频流数据中除首次被接收到的视频帧之外的任意一个视频帧之间的时间戳之差;根据比较结果对视频流数据中的视频帧进行延时或丢帧处理,直至第一差值小于第二阈值,其中,第一阈值与第二阈值均为正数,且第二阈值小于第一阈值。
可选地,对视频流数据中的视频帧进行延时或丢帧处理包括:在第一差值为正数且大于第一阈值时,对视频流数据中的视频帧进行延时处理;在第一差值为负数时,对视频流数据中的视频帧进行丢帧处理。
可选地,确定音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异之前,方法还包括:判断视频流中是否包含B帧,在视频流中包含B帧的情况下,则触发计算第二时间戳与基准时钟之间的差值。
可选地,方法还包括:在视频流中不包含B帧的情况下,则依据音频流数据中音频帧的解码顺序和视频流数据中视频帧的解码顺序同步播放音频流数据和视频流数据。
可选地,依据差异对视频流数据和音频流数据进行同步包括:获取当前系统时间和上一帧记录基准时钟获取的系统时间;依据当前系统时间和上一帧记录基准时钟获取的系统时间,以及音频基准时钟,确定当前相对于基准时钟的时间;依据当前相对于基准时钟的时间比较目标视频帧的播放时间。
可选地,在对视频流数据和音频流数据进行同步的过程中,方法还包括:按照目标视频帧的目标调整幅度逐步进行延时或丢帧处理,直至音频流数据中的音频帧和视频流数据中的视频帧同步播放,其中,同步播放是指音频流数据中的音频帧和视频流数据中的视频帧的时间戳的差值小于所设第二阈值。
可选地,目标视频帧的目标调整幅度包括:统计目标视频帧之前的预设数量的视频帧,以及统计目标音频帧之前的预设数量的音频帧;获取预设数量的音频帧和预设数量的视频帧之间的时间戳差值,得到预设数量的时间戳差值;确定预设数量的时间戳差值的平均值,并依据平均值确定目标视频帧的目标调整幅度。
根据本申请实施例的又一方面,还提供了一种媒体的音视频同步系统,包括:音频源、视频源、编码节点和解码节点,其中,音频源用于提供音频流数据;视频源用于提供视频流数据;编码节点,与音频源与视频源连接,用于对音频流数据和视频流数据进行编码;解码节点,与编码节点连接,用于分别接收来自同一个视频源的视频流数据和同一个音频源的音频流数据;确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为基准时钟,其中,第一时间戳用于指示目标音频帧的开始播放时间;确定音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,第二时间戳用于指示目标视频帧的开始播放时间;依据差异对视频流数据和音频流数据进行同步。
根据本申请实施例的再一方面,还提供了一种媒体的音视频同步装置,包括:接收模块,用于分别接收来自同一个视频源的视频流数据和同一个音频源的音频流数据;第一确定模块,确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为音频基准时钟,其中,第一时间戳用于指示目标音频帧的开始播放时间;第二确定模块,用于确定音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,第二时间戳用于指示目标视频帧的开始播放时间;同步模块,用于依据差异对视频流数据和音频流数据进行同步。
根据本申请实施例的再一方面,还提供了一种媒体的音视频同步电子设备,包括:通信模块,用于分别接收来自同一个视频源的视频流数据和同一个音频源的音频流数据;处理器,与通信模块连接,确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为基准时钟,其中,第一时间戳用于指示目标音频帧的开始播放时间;确定基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,第二时间戳用于指示目标视频帧的开始播放时间;依据差异对视频流数据和音频流数据进行同步;显示器,与处理器连接,用于展示视频流数据和音频流数据。
根据本申请实施例的再一方面,还提供了一种非易失性存储介质,该非易失性存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行以上的流媒体的音视频同步方法。
在本申请实施例中,采用音视频分离技术,客户端接收来自同一视频源的视频流数据和同一音频源的音频流数据,以目标音频帧对应的第一时间戳为基准时钟,目标视频帧的开始播放时间记为第二时间戳,将视频同步到音频上,通过比较目标视频帧对应的第二时间戳与基准时钟的差值,达到了音频数据流和视频数据流同步的目的,从而实现了在流媒体客户端在播放时音视频同步的技术效果,进而解决了由于流媒体客户端播放存在渲染时间不定及线性差异造成的客户端在播放音视频时不同步技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种媒体的音视频同步电子设备的结构图;
图2是根据本申请实施例的一种媒体的音视频同步方法的流程图;
图3是根据本申请实施例的一种判断视频流中B帧的处理方法的流程图;
图4是根据本申请实施例的一种差异计算方法的流程图;
图5是根据本申请实施例的一种视频帧延时或丢帧的处理方法的流程图;
图6是根据本申请实施例的一种音视频同步的流程图;
图7是根据本申请实施例的一种目标视频帧的目标调整幅度方式的流程图;
图8是根据本申请实施例的一种音视频同步方法的流程图;
图9是根据本申请实施例的一种媒体的音视频同步系统的结构图。
图10是根据本申请实施例的一种媒体的音视频同步装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
相关技术中,为保证音视频数据流时,将音视频混合在一个流媒体服务中,在服务端同步采集音视频数据,播放客户端进行解复用,再分别解码播放,导致音视频不同步的原因有如下三点:1.一帧的播放时间难以精准控制,音视频解码及渲染的耗时不同,可能造成每一帧的输出有细微差距,长久累计,不同步会越来越明显;2.音频输出是线性的,而视频输出有线性的,也有非线性的,从而导致有偏差;3.音视频本身可能存在一定的差距,即音视频的第一帧起点不同,导致播放时音视频不同步。
在对音视频处理时,常用到的时间戳有两种,第一种是DTS(Decoding TimeStamp),即解码时间戳,这个时间戳用于告诉播放器在何时解码这一帧的数据;PTS(Presentation Time Stamp),即显示时间戳,这个时间戳用于告诉播放器在何时显示这一帧的数据。在对视频编码时,对帧的处理方式不同会产生不同的视频帧,对上述两种时间戳有影响的是B帧,B帧位于I帧和P帧之间,I帧为关键帧,P帧基于I帧做修复作用,视频流中含有B帧会增大网络延迟,但会保证画面流畅。当视频流中没有B帧时,通常DTS和PTS的顺序是一致的;但当视频流中有B帧时,解码顺序和播放顺序不一致,即此时的视频输出是非线性的,从而会产生音视频不同步的问题。
为解决音视频同步问题,有三种最基本的同步策略:视频同步到音频、音频同步到视频、视频和音频同步到外部的时钟。考虑到人对声音的敏感度要强于视频,频繁调节音频会给用户带来较差的观感体验。由于音频的播放时钟为线性增长,在本申请中,选择以音频时钟为基准时钟,编码时依据基准时钟给每个音视频数据块都打上时间戳,播放时,依据音视频时间戳及基准时钟,来调整播放视频,使视频同步到音频上,具体方法已在实施例中进行了详细说明。
图1是根据本申请实施例的一种媒体的音视频同步电子设备的结构图,如图1所示,该设备包括:
通信模块10,用于分别接收来自同一个视频源的视频流数据和同一个音频源的音频流数据;如在Linux系统的电脑上使用LIVE555视频播放器播放网页上的视频时,客户端播放器会从流媒体服务器中拉取所播放视频的视频流和音频流,并对获取到的音频流和视频流进行相应的解码操作,或者客户端可以接收来自路由等转发设备转发的音频流数据和视频流数据。
处理器12,与通信模块10连接,用于播放音频流数据和视频流数据过程中,音频被接收解码后直接播放,从获取音频第一帧开始计时,并将此时对应的时间戳记为音频PTS,从获取视频第一帧开始计时,将此时对应的时间戳记为视频PTS,确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为音频基准时钟。其中,目标音频帧包括:音频流数据中首次被接收到的音频帧,以及在播放音频流数据的过程中除首次被接收到的音频帧之外的任意一个音频帧,第一时间戳用于指示目标音频帧的开始播放时间;确定基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,目标视频帧包括:视频流数据中首次被接收到的视频帧,以及在播放视频流数据过程中除首次被接收到的视频帧之外的任意一个视频帧,第二时间戳用于指示目标视频帧的开始播放时间;依据基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,对视频流数据和音频流数据进行同步;
显示器14,与处理器12连接,用于展示视频流数据和音频流数据。当客户端对音频流数据和视频流数据解码结束后,用户可从显示器中看到音视频同步的视频。
具体的,本申请实施例提供的电子设备可以为手机、iPad、电脑等。针对现有相关技术中存在的客户端播放时音视频不同步的问题,本实施例提供的电子设备,对音视频流的拉取做了调整,采用了音视频分离技术。具体地,客户端可以从流媒体服务器中分别拉取音频流和视频流,流媒体指可在线观看音视频的互联网产品,包括视频播放器、音频播放器和直播软件等,也可以接收来自路由等转发设备转发的音频流数据和视频流数据。考虑到人对声音的敏感度要强于视频,频繁调节音频会带来较差的观感体验,由于音频的播放时钟为线性增长,故在本申请中,选择以音频时钟为基准时钟,编码时依据基准时钟给每个音视频数据块都打上时间戳,播放时,依据音视频时间戳及基准时钟,来调整播放视频,使视频同步到音频上,通过计算目标视频帧对应的第二时间戳与音频基准时钟的差值,并依据目标视频帧的目标调整幅度缓慢调节音频基准时钟与第二时间戳之间的差异,达到了音频数据流和视频数据流同步的目的。
在上述运行环境下,本申请实施例提供了一种媒体的音视频同步方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本申请实施例的一种媒体的音视频同步方法的流程图,如图2所示,该方法包括如下步骤:
步骤S202,分别接收来自同一视频源的视频流数据和同一音频源的音频流数据;
如在Linux系统的电脑上使用LIVE555视频播放器播放网页上的视频时,客户端播放器从流媒体服务器中拉取所播放视频的视频流和音频流,并对获取到的视频流和音频流进行相应的解码操作,或者,客户端也可以接收来自路由等转发设备转发的音频流数据和视频流数据。
步骤S204,播放音频流数据和视频流数据过程中,音频被接收解码后直接播放,从获取音频第一帧开始计时,并将此时对应的时间戳记为音频PTS,从获取视频第一帧开始计时,将此时对应的时间戳记为视频PTS,确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为音频基准时钟。其中,目标音频帧包括:音频流数据中首次被接收到的音频帧,以及在播放音频流数据的过程中除首次被接收到的音频帧之外的任意一个音频帧;第一时间戳用于指示目标音频帧的开始播放时间;
步骤S206,确定音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,目标视频帧包括:视频流数据中首次被接收到的视频帧,以及在播放视频流数据过程中除首次被接收到的视频帧之外的任意一个视频帧;第二时间戳用于指示目标视频帧的开始播放时间;
步骤S208,依据音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异对视频流数据和音频流数据进行同步。
通过上述步骤,采用音视频分离技术,客户端可以接收来自同一视频源的视频流数据和同一音频源的音频流数据,以目标音频帧对应的第一时间戳为基准时钟,目标视频帧的开始播放时间记为第二时间戳,将视频同步到音频上,通过计算目标视频帧对应的第二时间戳与基准时钟的差值,并依据目标视频帧的目标调整幅度缓慢调节基准时钟与第二时间戳之间的差异,达到了音频数据流和视频数据流同步的目的,从而实现了在流媒体客户端在播放时音视频同步的技术效果,进而解决了由于流媒体客户端播放存在渲染时间不定及线性差异造成的客户端在播放音视频时不同步技术问题,其中,线性差异是指由于视频流中含有B帧导致视频解码顺序和播放顺序不一致。
在步骤S204之前,在获取音视频的PTS时,以最后获取到的PTS时刻开始进行同步播放,若先获取到音频的PTS,后获取到视频的PTS,则从获取视频PTS的时刻开始同步播放;若先获取到视频的PTS,后获取到音频的PTS,则从获取音频PTS的时刻开始同步播放,但无论是先获取到音频PTS还是先获取到视频PTS,都采用将视频同步到音频上的方式进行同步,并计算此时视频PTS与音频PTS的差值记为d。
在步骤S206中确定音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异之前,如图3所示,上述方法还包括如下步骤:
步骤S302,判断视频流中是否包括B帧,B帧表示双向差别帧,B帧位于I帧和P帧之间,I帧为关键帧,P帧基于I帧做修复作用,记录的是本帧与前后帧的差别,视频流中含有B帧会增大网络延迟,但会保证画面流畅,解码B帧时,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面,依据编码方式可以检测到视频流中是否包含B帧;
步骤S304,在视频流中包括B帧的情况下,表示视频输出是非线性的,则触发计算第二时间戳与基准时钟之间的差值;
步骤S306,在视频流中不包含B帧的情况下,表示视频输出是线性的,则依据音频流数据中音频帧的解码顺序和视频流数据中视频帧的解码顺序同步播放音频流数据和视频流数据。
步骤S208中依据音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异对视频流数据和音频流数据进行同步,如图4所示,差异包括如下步骤:
步骤S402,计算第二时间戳与基准时钟之间的第一差值;
步骤S404,比较第一差值与第一阈值,其中,第一差值为目标音频帧与目标视频帧之间的时间戳之差,包括:音频流数据中首次被接收到的音频帧与视频流数据中首次被接收到的视频帧之间的时间戳之差,或音频流数据中除首次被接收到的音频帧之外的任意一个音频帧,与视频流数据中除首次被接收到的视频帧之外的任意一个视频帧之间的时间戳之差;
步骤S406,根据比较结果对视频流数据中的视频帧进行延时或丢帧处理,直至第一差值小于第二阈值,其中,第一阈值与第二阈值均为正数,且第二阈值小于第一阈值,第一阈值为第一差值允许取值范围的最大值,第二阈值时第一差值允许取值范围的最小值,第一阈值和第二阈值可以由目标用户自行设定,如第一阈值设定为200ms,第二阈值设定为20ms。
可选地,对视频流数据中的视频帧进行延时或丢帧处理,如图5所示,包括:
步骤S502,在第一差值为正数且大于第一阈值时,对视频流数据中的视频帧进行延时处理。例如,当前视频帧的播放速度快于当前音频帧的播放速度时,对当前视频帧进行延迟处理;
步骤S504,在第一差值为负数时,对视频流数据中的视频帧进行丢帧处理。例如,在解码音频流数据的第二帧时,视频流数据的第一帧还未解码完毕,如不及时进行丢帧,会导致目标视频帧与目标音频帧时间戳差值越来越大,显示出来的画面会有花屏,目标用户会明显察觉到音画不同步,造成观感下降。
步骤S208中,依据音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异对视频流数据和音频流数据进行同步,如图6所示,具体包括以下步骤:
步骤S602,获取当前系统时间和上一帧记录基准时钟获取的系统时间;
步骤S604,依据当前系统时间和上一帧记录基准时钟获取的系统时间,以及音频基准时钟,确定当前相对于基准时钟的时间;
步骤S606,依据当前相对于基准时钟的时间比较目标视频帧的播放时间。
音频基准时钟可以是指最开始的音频基准时钟,即第一包音频帧携带的PTS,也可以指每次接收到音频流更新的基准时钟。根据音频基准时钟所指的内容不同,将上述步骤分为两种情况:第一种情况,当音频基准时钟指最开始的音频基准时钟,即不更新音频基准时钟,每次都以第一个音频时钟为基准,获取当前系统时间和上一帧记录基准时钟获取的系统时间,当前系统时间是相对系统启动后的运行时间,上一帧记录基准时钟获取的系统时间是指第一次收到音频流更新基准时钟时的系统时间,将当前系统时间与第一次更新音频基准时钟时的系统时间做差值计算,将该差值记为c1,c1与音频基准时钟的和即为当前相对于音频基准时钟的时间,该时间用来和目标视频帧的时间做比较,并根据比较的值对视频帧进行丢帧或延时处理,如当前系统时间为8:30:30,上一帧记录音频基准时钟获取的系统时间为8:30:10,不更新音频基准时钟,以第一个音频基准时钟为基准,若第一个音频基准时钟的时间为8:00:00,则当前相对于音频基准时钟的时间为8:30:30-8:30:10+8:00:00=8:00:20,即音频帧有20s的音频流数据,比较当前目标视频帧已播放的时间与20s的差值大小,根据该差值判断对视频帧进行丢帧或延时处理。第二种情况,当音频基准时钟是指每次接收到音频流更新的基准时钟时,获取当前系统时间和上一帧记录基准时钟获取的系统时间,当前系统时间是相对系统启动后的运行时间,上一帧记录基准时钟获取的系统时间是指上一次收到音频流更新的基准时钟时的系统时间,将当前系统时间与上一次更新音频基准时钟时的系统时间做差值计算,将该差值记为c2,c2与音频基准时钟的和即为当前相对于音频基准时钟的时间,该时间用来和目标视频帧的时间做比较,并根据比较的值对视频帧进行丢帧或延时处理,如当前系统时间为8:30:30,上一帧记录音频基准时钟获取的系统时间为8:30:10,更新音频基准时钟,以上一个音频基准时钟为基准,上一个音频基准时钟的时间为8:30:10,则当前相对于音频基准时钟的时间为8:30:30-8:30:10+8:30:10=8:30:20,即音频帧有20s的音频流数据,比较当前目标视频帧已播放的时间与20s的差值大小,根据该差值判断对视频帧进行丢帧或延时处理。。
步骤S208在对视频流数据和音频流数据进行同步的过程中,具体包括:按照,目标视频帧的目标调整幅度逐步进行延时或丢帧处理,直至音频流数据中的音频帧和视频流数据中的视频帧同步播放。
可选地,目标视频帧的目标调整幅度通过以下方式确定,如图7所示,具体包括如下步骤:
步骤S702,统计目标视频帧之前的预设数量的视频帧,以及统计目标音频帧之前的预设数量的音频帧;
步骤S704,获取预设数量的音频帧和预设数量的视频帧之间的时间戳差值,得到预设数量的时间戳差值;
步骤S706,确定预设数量的时间戳差值的平均值,并依据平均值确定目标视频帧的目标调整幅度。例如,预设数量的视频帧和预设数量的音频帧均有6个,计算这6组预设数量的视频帧和预设数量的音频帧之间的时间戳差值,将这6组时间戳差值进行求和计算,这6组时间戳差值不一定相同,假设这6组时间戳差值的和为72ms,则目标调整幅度为72÷6=12ms,分6次进行视频帧和音频帧的同步调整,每次调整的幅度为12ms,这种操作方式避免了每次调整幅度过大或过小的问题,可以达到慢慢收敛的效果,使得同步操作不突兀。
图8是根据本申请实施例的一种音视频同步方法的流程图,如图8所示,当流媒体客户端接收来自同一个视频源的视频流数据和同一个音频源的音频流数据时,其中,客户端可以从流媒体服务器中拉取所播放视频的视频流和音频流,或者,客户端也可以接收来自路由等转发设备转发的音频流数据和视频流数据,首先先判断音频源与视频源中是否只有音频流或者视频流,若只有音频流或视频流,则客户端在接收到相应的音频流或数据流时直接进行解码播放即可,若客户端拉取的流中既包含音频流,又包含视频流时,再判断视频流中是否含有B帧,因为含有B帧的视频流的解码顺序和播放顺序不一致,即此时的视频输出是非线性的,从而会产生音视频不同步的问题,若检测出视频流中不含有B帧时,则对获取到的音频流数据和视频流数据按解码顺序同步播放,若检测出视频流中含有B帧时,按接收到音频数据流和视频数据流的顺序进行播放,从获取音频第一帧开始计时,将此时对应的时间戳记为音频PTS,并将目标音频帧对应的第一时间戳作为音频基准时钟,音频基准时钟可以是指最开始的音频基准时钟,即第一包音频帧携带的PTS,也可以指每次接收到音频流更新的基准时钟。从获取视频第一帧开始计时,将此时对应的时间戳记为视频PTS,比较音频基准时钟和目标视频帧对应的第二时间戳之间的第一差值,对视频流数据和音频流数据进行同步,其中,将第一差值分为两类,包括:音频流数据中首次被接收到的音频帧与视频流数据中首次被接收到的视频帧之间的时间戳之差,或音频流数据中除首次被接收到的音频帧之外的任意一个音频帧,与视频流数据中除首次被接收到的视频帧之外的任意一个视频帧之间的时间戳之差;比较第一差值与第一阈值,根据比较结果对视频流数据中的视频帧进行延时或丢帧处理,直至第一差值小于第二阈值,其中,第一阈值与第二阈值均为正数,且第二阈值小于第一阈值;在第一差值为正数且大于第一阈值时,对视频流数据中的视频帧进行延时处理;在第一差值为负数时,对视频流数据中的视频帧进行丢帧处理。
需要说明的是,图8所示的音视频同步方法的流程图是依据图2-7所示的媒体的音视频同步方法,因此上述媒体的音视频同步方法中的相关解释说明也适用于该音视频同步方法流程图,此处不再赘述。
图9是根据本申请实施例的一种媒体的音视频同步系统的结构图,如图9所示,该系统包括:
音频源90,用于提供音频流数据;
视频源92,用于提供视频流数据;
编码节点94,与音频源与视频源连接,用于对音频流数据和视频流数据进行编码;
解码节点96,与编码节点连接,用于分别接收来同一个视频源的视频流数据和同一个音频源的音频流数据;确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为基准时钟,其中,第一时间戳用于指示目标音频帧的开始播放时间;确定音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,第二时间戳用于指示目标视频帧的开始播放时间;依据差异对视频流数据和音频流数据进行同步。
需要说明的是,图9所示的媒体的音视频同步系统是依据图2-7所示的媒体的音视频同步方法,因此上述媒体的音视频同步方法中的相关解释说明也适用于该媒体的音视频同步系统,此处不再赘述。
图10是根据本申请实施例的一种媒体的音视频同步装置的结构图,如图10所示,该装置包括:
接收模块100,用于分别接收来自同一个视频源的视频流数据和同一个音频源的音频流数据;
第一确定模块102,用于播放音频流数据和视频流数据过程中,音频被接收解码后直接播放,从获取音频第一帧开始计时,并将此时对应的时间戳记为音频PTS,从获取视频第一帧开始计时,将此时对应的时间戳记为视频PTS,确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为音频基准时钟,每次播放音频帧时更新该基准时钟。其中,目标音频帧包括:音频流数据中首次被接收到的音频帧,以及在播放音频流数据的过程中除首次被接收到的音频帧之外的任意一个音频帧,第一时间戳用于指示目标音频帧的开始播放时间;
第二确定模块104,用于确定音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,目标视频帧包括:视频流数据中首次被接收到的视频帧,以及在播放视频流数据过程中除首次被接收到的视频帧之外的任意一个视频帧,第二时间戳用于指示目标视频帧的开始播放时间;依据音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异对视频流数据和音频流数据进行同步;
同步模块106,用于依据音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异对视频流数据和音频流数据进行同步。
需要说明的是,图10所示的媒体的音视频同步装置用于执行图2-7所示的媒体的音视频同步方法,因此上述媒体的音视频同步方法中的相关解释说明也适用于该媒体的音视频同步装置,此处不再赘述。
本说明实施例还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行以下媒体的音视频同步方法:
分别接收来自同一个视频源的视频流数据和同一个音频源的音频流数据;
音频被接收解码后直接播放,从获取音频第一帧开始计时,并将此时对应的时间戳记为音频PTS,从获取视频第一帧开始计时,将此时对应的时间戳记为视频PTS,确定音频流数据中的目标音频帧,并将目标音频帧对应的第一时间戳作为音频基准时钟。其中,目标音频帧包括:音频流数据中首次被接收到的音频帧,以及在播放音频流数据的过程中除首次被接收到的音频帧之外的任意一个音频帧,第一时间戳用于指示目标音频帧的开始播放时间;
确定音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,目标视频帧包括:视频流数据中首次被接收到的视频帧,以及在播放视频流数据过程中除首次被接收到的视频帧之外的任意一个视频帧,第二时间戳用于指示目标视频帧的开始播放时间;依据音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异对视频流数据和音频流数据进行同步;
依据音频基准时钟和视频流数据中与目标视频帧对应的第二时间戳之间的差异对视频流数据和音频流数据进行同步。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种媒体的音视频同步方法,其特征在于,该方法应用于分布式系统中的解码节点中,所述分布式系统包括:音频源、视频源、编码节点和解码节点,所述方法包括:
分别接收来自同一视频源的视频流数据和同一音频源的音频流数据;
确定所述音频流数据中的目标音频帧,并将所述目标音频帧对应的第一时间戳作为音频基准时钟,其中,所述第一时间戳用于指示所述目标音频帧的开始播放时间;
确定所述音频基准时钟和所述视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,所述第二时间戳用于指示所述目标视频帧的开始播放时间;
依据所述差异对所述视频流数据和所述音频流数据进行同步。
2.根据权利要求1所述的方法,其特征在于,
所述目标音频帧包括:所述音频流数据中首次被接收到的音频帧;所述目标视频帧包括:所述视频流数据中首次被接收到的视频帧;或者
所述目标音频帧包括:所述音频流数据中除所述首次被接收到的音频帧之外的任意一个音频帧;所述目标视频帧包括:所述视频流数据中除所述首次被接收到的视频帧之外的任意一个视频帧。
3.根据权利要求1所述的方法,其特征在于,所述差异包括:所述第二时间戳与所述音频基准时钟之间的第一差值;依据所述差异对所述视频流数据和所述音频流数据进行同步,包括:
比较所述第一差值与第一阈值,其中,所述第一差值为所述目标音频帧与所述目标视频帧之间的时间戳之差;根据比较结果对所述视频流数据中的视频帧进行延时或丢帧处理,直至所述第一差值小于第二阈值,其中,所述第一阈值与所述第二阈值均为正数,且所述第二阈值小于所述第一阈值。
4.根据权利要求3所述的方法,其特征在于,对所述视频流数据中的视频帧进行延时或丢帧处理,包括:
在所述第一差值为正数且大于所述第一阈值时,对所述视频流数据中的视频帧进行延时处理;
在所述第一差值为负数时,对所述视频流数据中的视频帧进行丢帧处理。
5.根据权利要求1所述的方法,其特征在于,依据所述差异对所述视频流数据和所述音频流数据进行同步包括:
获取当前系统时间和上一帧记录基准时钟获取的系统时间;依据当前系统时间和上一帧记录基准时钟获取的系统时间,以及音频基准时钟,确定当前相对于基准时钟的时间;依据当前相对于基准时钟的时间比较目标视频帧的播放时间。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述方法还包括:
在对所述视频流数据和所述音频流数据进行同步的过程中,按照所述目标视频帧的目标调整幅度逐步进行延时或丢帧处理,直至所述音频流数据中的音频帧和所述视频流数据中的视频帧同步播放,其中,同步播放是指音频流数据中的音频帧和所述视频流数据中的视频帧的时间戳的差值小于所设第二阈值。
7.根据权利要求6所述的方法,其特征在于,所述目标视频帧的目标调整幅度通过以下方式确定:
统计所述目标视频帧之前的预设数量的视频帧,以及统计所述目标音频帧之前的所述预设数量的音频帧;
获取所述预设数量的音频帧和所述预设数量的视频帧之间的时间戳差值,得到所述预设数量的时间戳差值;确定所述预设数量的时间戳差值的平均值,并依据所述平均值确定所述目标视频帧的目标调整幅度。
8.一种媒体的音视频同步系统,其特征在于,包括:音频源、视频源、编码节点和解码节点,其中,
所述音频源,用于提供所述音频流数据;
所述视频源,用于提供所述视频流数据;
所述编码节点,与所述音频源与所述视频源连接,用于对所述音频流数据和所述视频流数据进行编码;
所述解码节点,与所述编码节点连接,用于分别接收来自同一个视频源的视频流数据和同一个音频源的音频流数据,确定所述音频流数据中的目标音频帧,并将所述目标音频帧对应的第一时间戳作为基准时钟,其中,所述第一时间戳用于指示所述目标音频帧的开始播放时间;确定所述音频基准时钟和所述视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,所述第二时间戳用于指示所述目标视频帧的开始播放时间;依据所述差异对所述视频流数据和所述音频流数据进行同步。
9.一种媒体的音视频同步电子设备,其特征在于,包括:
通信模块,用于分别接收来自同一个视频源的视频流数据和同一个音频源的音频流数据;
处理器,与所述通信模块连接,用于确定所述音频流数据中的目标音频帧,并将所述目标音频帧对应的第一时间戳作为音频基准时钟,其中,所述第一时间戳用于指示所述目标音频帧的开始播放时间;确定所述音频基准时钟和所述视频流数据中与目标视频帧对应的第二时间戳之间的差异,其中,所述第二时间戳用于指示所述目标视频帧的开始播放时间;依据所述差异对所述视频流数据和所述音频流数据进行同步;
显示器,与所述处理器连接,用于展示所述视频流数据和所述音频流数据。
10.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至7中任意一项所述媒体的音视频同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110969874.8A CN115914708A (zh) | 2021-08-23 | 2021-08-23 | 媒体的音视频同步方法及系统、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110969874.8A CN115914708A (zh) | 2021-08-23 | 2021-08-23 | 媒体的音视频同步方法及系统、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115914708A true CN115914708A (zh) | 2023-04-04 |
Family
ID=86491843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110969874.8A Pending CN115914708A (zh) | 2021-08-23 | 2021-08-23 | 媒体的音视频同步方法及系统、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115914708A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117979063A (zh) * | 2024-03-06 | 2024-05-03 | 北京海艺蓝鑫科技有限公司 | 一种报告厅音视频多路信号同步传输方法 |
-
2021
- 2021-08-23 CN CN202110969874.8A patent/CN115914708A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117979063A (zh) * | 2024-03-06 | 2024-05-03 | 北京海艺蓝鑫科技有限公司 | 一种报告厅音视频多路信号同步传输方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111294634B (zh) | 直播方法、装置、系统、设备及计算机可读存储介质 | |
US10785547B2 (en) | System and method for synchronizing metadata with audiovisual content | |
CN110139148B (zh) | 一种视频切换清晰度的方法及相关装置 | |
US7274862B2 (en) | Information processing apparatus | |
CN108495152B (zh) | 一种视频直播方法、装置、电子设备及介质 | |
CN111418215B (zh) | 媒体客户端、方法、非暂时性数据存储装置 | |
CN109714622B (zh) | 一种视频数据处理方法、装置及电子设备 | |
KR20210030478A (ko) | 대체 컨텐츠의 종료를 피대체 컨텐츠의 종료에 맞춰 정렬하는 것을 지원하기 위한 대체 컨텐츠 재생의 동적 감소 | |
CN110868600A (zh) | 目标跟踪视频推流方法、显示方法、装置和存储介质 | |
CN110519627B (zh) | 一种音频数据的同步方法和装置 | |
WO2017107516A1 (zh) | 网络视频播放方法及装置 | |
KR101841313B1 (ko) | 멀티미디어 흐름 처리 방법 및 대응하는 장치 | |
CN112261461B (zh) | 蓝牙音画同步方法、装置、显示设备和可读存储介质 | |
CN106210841A (zh) | 一种视频同步播放方法、装置 | |
KR20110014990A (ko) | 대화형 마크를 스트리밍 콘텐츠에 동기화시키기 위한 디바이스 및 방법 | |
US20140362291A1 (en) | Method and apparatus for processing a video signal | |
CN110139128B (zh) | 一种信息处理方法、拦截器、电子设备及存储介质 | |
CN115914708A (zh) | 媒体的音视频同步方法及系统、电子设备 | |
CN108650541B (zh) | 实现不同设备同步播放视频的方法和系统 | |
US7961792B2 (en) | Robust system for maintaining audio/video synchronization during playback of multimedia streams with no embedded time stamps | |
CN114697712B (zh) | 一种媒体流的下载方法、装置、设备及存储介质 | |
CN107852523B (zh) | 用于在终端之间同步媒体渲染的方法、终端和设备 | |
KR102273795B1 (ko) | 영상 동기화 처리를 위한 시스템 및 그 제어방법 | |
JP2010219735A (ja) | 放送受信装置 | |
CN116405742A (zh) | 一种Web浏览器中音视频同步的方法、装置及设备 |
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 |