一种音视频同步的方法、装置及计算机可读存储介质与流程

文档序号:31053393发布日期:2022-08-06 09:15阅读:66来源:国知局
一种音视频同步的方法、装置及计算机可读存储介质与流程

1.本发明涉及音视频处理技术领域,具体地涉及一种音视频同步的方法、装置及计算机可读存储介质。


背景技术:

2.随着网络电视、多媒体产品的迅速发展,带有声音和图像的视频在播放时都面临着音视频同步的问题,如果声音和视频不同步将会影响观看者的体验,音视频数据经发送端到接收端传输过程中受各种因素的影响,会导致其在接收端不同步的问题,因此实现音视频同步的是业内人士共同关心的问题之一。
3.现有技术中一般在接收端对音视频做同步处理,假如发送端音视频数据在压缩或打包时就发生乱序导致音视频不同步,那么无论在接收端做怎样的同步处理,都很难实现音视频同步。


技术实现要素:

4.本发明的目的是提供一种音视频同步的方法、装置及计算机可读存储介质,至少部分地解决音视频不同步的问题。
5.为了实现上述目的,本发明实施例提供一种音视频同步的方法,该方法包括:读取音视频数据包,将音视频数据包做队列缓存;获取音频帧和视频帧的显示时间戳,按照显示时间戳排序;从所述队列缓存中读取音视频数据的首元素开始,将对应显示时间戳小的元素发送。
6.可选的,将音视频数据包分离成音频数据队列和视频数据队列,将音频有益效果)。
7.数据队列和视频数据队列分别按显示时间戳排序;从所述队列缓存中读取音视频数据的首元素开始,运用比较算法,选择显示时间戳较小的元素发送,运用比较算法包括:从音频数据队列和视频数据队列的首元素开始,比较音频数据队列和视频数据队列的对应显示时间戳的大小,发送显示时间戳较小的元素。
8.可选的,从音频数据队列和视频数据队列的首元素开始,比较音频数据队列和视频数据队列的对应显示时间戳的大小,发送显示时间戳较小的元素,包括:
9.比较pan与pvn的大小;
10.如果pan《pvn,则发送音频数据,如果pvn《pan,则发送视频数据,
11.其中pan为音频数据队列中的音频数据包,pvn为视频数据队列中的视频数据包;其中n为包序号和显示时间戳pts。
12.可选的,所述按照显示时间戳排序的方式为升序排序。
13.可选的,所述计算所述音频帧和视频帧的显示时间戳包括:
14.计算视频显示时间戳:
15.pts=inc++*(1000/fps);其中inc是一个静态变量,初始值为0,每次打完显示时
间戳inc加1,fps(frames per second)为帧率(即每秒传输的帧数)。
16.计算音频显示时间戳:
17.pts=inc++*(frame_size*1000/sample_rate);其中,frame_size为音频帧个数,sample_rate为采样率(即每秒采集的音频个数)。
18.相应的,本技术一实施例还提供一种音视频数据同步的装置,该装置包括:缓存模块,用于将接收音视频数据包做队列缓存;获取模块,用于获取所述音视频数据的显示时间戳;处理模块,根据获取所述音视频数据的显示时间戳,将接收到的所述音频数据队列缓存做升序排序,从所述队列缓存
19.本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
20.中取音视频数据的首元素开始,运用比较算法,将对应显示时间戳小的元素发送至下游终端,直至将所有元素比较完,发送完成。
21.可选的,所述音视频数据同步的装置还包括分离模块,用于在处理模块之前将接收到的音视频数据包分离为数据队列和音频队列。
22.可选的,所述分离模块,将音频数据队列和视频数据队列分别按显示时间戳排序。所述处理模块,用于从所述队列缓存中读取音视频数据的首元素开始,运用比较算法,选择显示时间戳较小的元素发送,包括:音频数据队列和视频数据队列的首元素开始,比较音频数据队列和视频数据队列的对应显示时间戳的大小,发送显示时间戳较小的元素。
23.可选的,所述处理模块执行以下操作:从音频数据队列和视频数据队列的首元素开始,比较音频数据队列和视频数据队列的对应显示时间戳的大小,发送显示时间戳较小的元素,包括:比较pan与pvn的大小,如果pan《pvn,则发送音频数据;如果pvn《pan,则发送视频数据。
24.其中pan为音频数据队列中的音频数据包,pvn为视频数据队列中的视频数据包;其中n为包序号和显示时间戳pts。
25.可选的,所述分离模块,将音频数据队列和视频数据队列分别按显示时间戳做升序排序。
26.本发明的技术方案通过在发送之前即发送端对音视频做同步处理,大大降低接收端音视频不同步的可能,甚至可以达到在接收端音视频同步的效果。
27.本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
[0028][0029]
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
[0030]
图1是本技术音视频同步处理实施例一的流程图;
[0031]
图2是本技术音视频同步处理实施例二的流程图;
[0032]
图3是本技术音视频同步处理实施例二的逻辑流程图;
[0033]
图4是本技术音视频同步处理装置的结构框图。
具体实施方式
[0034]
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
[0035]
图1为本技术音视频同步处理实施例一提供的实施方式流程图,首先需要将读取到的音视频数据包做队列缓存;获取音频数据和视频数据的显示时间戳pts,其中所述显示时间戳pts,用于指示所述音频数据和所述视频数据在解码后的显示顺序;从所述音视频数据队列缓存中读取音视频数据的首元素开始,所述音频时间戳pts和视频时间戳pts用第三时钟作为共同参考时钟,运用比较算法将对应显示时间戳pts相对参考时钟小的元素发送。例如,0-10s只有视频数据,声音数据在10s时才出现,那么在0-10s内这段时间内即使收到了音频数据包的内容也不能立即播放它,假如音频也从0s 开始,就会出现音视频不同步的问题,因此在10s时,才允许视频和音频同时播放。反之,音频数据包的显示时间早于视频数据包的显示时间亦是如此,因此通过将对应时间戳较小的音频数据包或视频数据包在发送端做排序,降低其在接收端不同步的几率。
[0036]
图2为本技术音视频同步处理实施例二提供的实施方式流程图,优选的,在实施例一的基础上增加音视频数据分离的步骤,根据该优选实施方式,可以提高音视频处理效率并进一步提高音视频的同步性。具体如下:首先将音
[0037]
视频数据包做队列缓存,将缓存后的音视频数据解码,将解码后的音视频数据经分离模块分离为独立的音频数据队列和视频数据队列,将分离后的音频数据队列和视频数据队列,从所述音视频数据队列缓存中读取音视频数据的首元素开始,运用比较算法将对应显示时间戳小的元素发送给下游终端。
[0038]
音视频数据包在采集和压缩过程中可能会出现乱序的可能,如图3所示的s201中的音视频数据包中,视频数据包pv5/pv3/pv4出现乱序为了解决这个问题,本发明的方法优选对分离后的音频数据包、视频数据包做升序排序,经过升序排序后的数据包不会在接收端再次发生乱序。
[0039]
图3为本技术实施例二提供的逻辑流程图,其为实施例二的逻辑流程图,其中步骤s201为接收到的音视频数据包,通过数据分离模块将音视频数据包做分流处理,通过步骤s202分离为音频数据队列da和视频数据队列dv,获取所述音频数据队列da和视频数据队列dv的显示时间戳pts,显示时间戳pts用于对获取的音视频数据包做升序排序,所述音频数据队列da中的音频包依次为pa0/pa1/pa2
……
pan;所述视频数据队列dv中的视频包依次为pv0/pv1/pv2
……
pvn;取音频数队列da中的首元素pa0和视频数据队列dv中的首元素pv0,运用比较算法将元素对应时间戳小的元素,发送至下游终端。其中:
[0040]
音频数据队列da中的数据包为:
[0041]
pan
‑‑‑‑‑‑‑‑‑‑
p为packet
[0042]
a为audio
[0043]
n为包序号和显示时间戳pts
[0044]
视频数据队列dv中的数据包为:
[0045]
pvn
‑‑‑‑‑‑‑‑‑‑
p为packet
[0046]
v为video
[0047]
n为包序号和显示时间戳pts
[0048]
音视频数据队列数据包为:
[0049]
pxn
‑‑‑‑‑‑‑‑‑‑
p为packet
[0050]
x为video或audio随机一般化
[0051]
n为包序号和显示时间戳pts
[0052]
da
‑‑‑‑‑‑‑‑‑‑
音频数据队列
[0053]
dv
‑‑‑‑‑‑‑‑‑‑
视频数据队列
[0054]
音视频显示时间戳的计算方式通过代码实现,具体计算方式如下:
[0055]
计算视频显示时间戳:
[0056]
pts=inc++*(1000/fps);其中inc是一个静态变量,初始值为0,每次打完显示时间戳inc加1,fps(frames per second)指视频帧率。
[0057]
计算音频显示时间戳:
[0058]
pts=inc++*(frame_size*1000/sample_rate);其中,frame_size为音频帧个数,sample_rate为采样率。
[0059]
相应的,本发明申请实施例还提供一种音视频同步处理装置,图4是本技术实施例三的结构图,所述音视频同步处理装置包括缓存模块,用于将收到的音视频数据包缓存;以及获取模块,用于获取所述音频显示时间戳pts 和视频数据显示时间戳pts;以及处理模块,将获取了相应显示时间戳pts 的音频数据包和视频数据包运用比较算法,将对应显示时间戳小的元素发送至下游终端,直至将所有元素比较完,发送完成。
[0060]
优选的,为了进一步提高音视频数据同步的效率,在处理模块之前增加分离模块,所述分离模块用来将缓存后的音视频数据包分离为音频数据队列 dv和视频数据队列da,并将音频数据队列dv和所述视频数据队列da做升序排序,所述处理模块,从所述音频数据队列dv和视频数据队列da中取其首元素,运用比较算法将对应显示时间戳pts小的元素发送给下游终端。
[0061]
音视频数据包的分离、比较以及发送的具体过程在上文结合图2和图3 的描述中做了详细介绍,在此不再赘述。
[0062]
相应的,本发明申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
[0063]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法、设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种方法、设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0064]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1