一种基于音频伸缩的音视频同步播放方法技术

技术编号:27692680 阅读:19 留言:0更新日期:2021-03-17 04:53
本发明专利技术公开了一种基于音频伸缩的音视频同步播放方法。它整个播放过程按Audio播放和Video播放两个线程来处理,Audio播放线程主导整个播放的时间控制,两个线程共享同一个缓冲区,缓冲区接收上游传送来的音视频数据,形成两个按时间戳顺序排列的sample队列,队列最前端的Sample为当前要播放处理的Sample,具体包括如下步骤:缓冲区初始化后,队列清空;设置媒体播放时间mediaPlayTime,即累计的音频sample时间,由Audio播放线程设置,初始值清零;设置一音频伸缩时值tDelta,表示当前Audio数据需要伸缩的幅度,这个值由Video播放线程设置,由Audio播放线程读取并以此控制播放。本发明专利技术的有益效果是:达到音视频的播放同步,原理简单,操作方便,易于实现,效果明显。

【技术实现步骤摘要】
一种基于音频伸缩的音视频同步播放方法
本专利技术涉及媒体播放相关
,尤其是指一种基于音频伸缩的音视频同步播放方法。
技术介绍
在网络或其他媒体播放环境,因带宽或其他设备性能限制,视频数据有被丢包或者传送迟延的情况发生。对这种情况的简单处理就是等待或者丢帧。这样就会造成播放停滞或音视频不同步,影响到媒体受众的体验。音频数据与视频数据同时丢失或延迟,会导致播放卡顿。媒体播放中,所幸音频流的数据量要比视频流的数据量少很多,故播放不流畅的问题大都源于视频数据的传送存在丢包或延时。
技术实现思路
本专利技术是为了克服现有技术中存在上述的不足,提供了一种操作简单且易于实现的基于音频伸缩的音视频同步播放方法。为了实现上述目的,本专利技术采用以下技术方案:一种基于音频伸缩的音视频同步播放方法,整个播放过程按Audio播放和Video播放两个线程来处理,Audio播放线程主导整个播放的时间控制,两个线程共享同一个缓冲区,缓冲区接收上游传送来的音视频数据,形成两个按时间戳顺序排列的sample队列,队列最前端的Sample为当前要播放处理的Sample,具体包括如下步骤:(1)缓冲区初始化后,队列清空;(2)设置媒体播放时间mediaPlayTime,即累计的音频sample时间,由Audio播放线程设置,初始值清零;(3)设置一音频伸缩时值tDelta,表示当前Audio数据需要伸缩的幅度,这个值由Video播放线程设置,由Audio播放线程读取并以此控制播放。对于视频数据丢包或延迟不是十分严重的情况,可以把即将播放的音频数据适当拉伸(音频数据在时域扩展),延长其播放时间,以等待视频数据包的同步到达;如果视频数据包已丢失或者因延时导致视频数据堆积,则可以适当收缩当前音频数据(音频数据在时域压缩),压缩播放音频的播放时间,以配合视频播放的跳帧或加速处理,这样操作方便快捷且易于实现,能达到音视频的播放同步。作为优选,在步骤(3)中,Audio播放线程工作原理如下:(311)Audio播放线程定时查询sample数据,并向播放器或声卡填充sample数据,以保证audio的流畅播放,定时周期按sample数据长度设定;(312)每次查询时,检测音频伸缩时值tDelta,如果tDelta为0,为正常速度播放,则音频Sample数据不需处理,直接送至声卡,mediaPlayTime的增量为此sample的时长;(313)如果tDelta大于0,为相对慢速,则须将当前sample数据以WSOLA算法拉长后再送至声卡,即将当前sample数据按比例拉伸,然后调整播放时间mediaPlayTime,更新tDelta,在下一次sample查询时,再次拉伸,调整tDelta,直至tDelta为0,回归正常播放;(314)如果tDelta小于0,为相对快速,则须将当前sample数据以WSOLA算法缩短后再送至声卡,即将当前sample数据按比例缩短,然后调整播放时间mediaPlayTime,更新tDelta,在下一次sample查询时,再次缩短,调整tDelta,直至tDelta为0,回归正常播放。作为优选,在步骤(313)中,在下一次sample查询时,更新后的tDelta仍大于等于拉伸比例,则再次按相同比例拉伸,调整tDelta;如果更新后的tDelta小于拉伸比例,则再次按tDelta的值设定拉伸比例;直至tDelta为0,回归正常播放。作为优选,在步骤(314)中,在下一次sample查询时,更新后的tDelta仍大于等于缩短比例,则再次按相同比例缩短,调整tDelta;如果更新后的tDelta小于缩短比例,则再次按tDelta的值设定缩短比例;直至tDelta为0,回归正常播放。作为优选,在步骤(313)中,拉伸后的数据时长不再是原先的长度,需要将拉伸后的数据与后续的sample数据切割后再按原sample长度拼接,不同速度因子下的sample数据拼接处存在噪音,这个噪音通过拉伸时增加冗余的sample数据来消除。作为优选,在步骤(314)中,缩短后的数据时长不再是原先的长度,需要将缩短后的数据与后续的sample数据切割后再按原sample长度拼接,不同速度因子下的sample数据拼接处存在噪音,这个噪音通过缩短时增加冗余的sample数据来消除。作为优选,增加冗余的sample数据来消除方法如下:将前一sample末尾处的数据与当前sample的数据,再加上下一sample开始处的数据,一起拉伸或缩短,但结果只取中间拉伸或缩短后的结果数据,其他弃之不用。作为优选,在步骤(3)中,Video播放线程工作原理如下:(321)Video的播放在缓冲区初始化之后,查询当前播放时间mediaPlayTime和当前videosample的时间戳,计算两者之差值timeDiffer,如果timeDiffer超出某个阈值timeErrorThreshold,则播放难以保持流畅,须终止播放进程,初始化缓冲区,为下一次播放准备;如果此差值在timeErrorThreshold之内,则通过音频的伸缩改善播放效果;(322)timeDiffer之绝对值在某个小于阈值timeErrorThreshold的阈值tm_offset_threshold之内,为正常情况,设置音频缩放时值tDelta为0,音频将以正常速度播放;(323)timeDiffer大于阈值tm_offset_threshold,该tm_offset_threshold为正数,此种情况是videoSample延迟,通过拉伸音频以等待videosample达到同步,此时设置tDelta为timeDiffer,该tDelta为正数,音频将以相对慢速播放;(324)timeDiffer小于阈值tm_offset_threshold,该tm_offset_threshold为负数,此种情况是videoSample有丢帧,通过缩短音频使音频快速播放与videosample达到同步,此时设置tDelta为timeDiffer,该tDelta为负数,音频将以相对快速播放;(325)在设置好tDelta值之后,将当前videosample从队列中取出送到videosample渲染器渲染,由video播放定时器启动下一次videosample查询,直至播放终止。本专利技术的有益效果是:把即将播放的音频数据适当拉伸,延长其播放时间,或者适当收缩当前音频数据,压缩播放音频的播放时间,达到音视频的播放同步,原理简单,操作方便,易于实现,效果明显。附图说明图1是本专利技术中Audio播放线程工作原理流程图;图2是本专利技术中Video播放线程工作原理流程图。具体实施方式下面结合附图和具体实施方式对本专利技术做进一步的描述。一种基于音频伸缩的音视频同步播放方法,整个播放过程按Audio播放和Video播放两个本文档来自技高网...

【技术保护点】
1.一种基于音频伸缩的音视频同步播放方法,其特征是,整个播放过程按Audio播放和Video播放两个线程来处理,Audio播放线程主导整个播放的时间控制,两个线程共享同一个缓冲区,缓冲区接收上游传送来的音视频数据,形成两个按时间戳顺序排列的sample队列,队列最前端的Sample为当前要播放处理的Sample,具体包括如下步骤:/n(1)缓冲区初始化后,队列清空;/n(2)设置媒体播放时间mediaPlayTime,即累计的音频sample时间,由Audio播放线程设置,初始值清零;/n(3)设置一音频伸缩时值tDelta,表示当前Audio数据需要伸缩的幅度,这个值由Video播放线程设置,由Audio播放线程读取并以此控制播放。/n

【技术特征摘要】
1.一种基于音频伸缩的音视频同步播放方法,其特征是,整个播放过程按Audio播放和Video播放两个线程来处理,Audio播放线程主导整个播放的时间控制,两个线程共享同一个缓冲区,缓冲区接收上游传送来的音视频数据,形成两个按时间戳顺序排列的sample队列,队列最前端的Sample为当前要播放处理的Sample,具体包括如下步骤:
(1)缓冲区初始化后,队列清空;
(2)设置媒体播放时间mediaPlayTime,即累计的音频sample时间,由Audio播放线程设置,初始值清零;
(3)设置一音频伸缩时值tDelta,表示当前Audio数据需要伸缩的幅度,这个值由Video播放线程设置,由Audio播放线程读取并以此控制播放。


2.根据权利要求1所述的一种基于音频伸缩的音视频同步播放方法,其特征是,在步骤(3)中,Audio播放线程工作原理如下:
(311)Audio播放线程定时查询sample数据,并向播放器或声卡填充sample数据,以保证audio的流畅播放,定时周期按sample数据长度设定;
(312)每次查询时,检测音频伸缩时值tDelta,如果tDelta为0,为正常速度播放,则音频Sample数据不需处理,直接送至声卡,mediaPlayTime的增量为此sample的时长;
(313)如果tDelta大于0,为相对慢速,则须将当前sample数据以WSOLA算法拉长后再送至声卡,即将当前sample数据按比例拉伸,然后调整播放时间mediaPlayTime,更新tDelta,在下一次sample查询时,再次拉伸,调整tDelta,直至tDelta为0,回归正常播放;
(314)如果tDelta小于0,为相对快速,则须将当前sample数据以WSOLA算法缩短后再送至声卡,即将当前sample数据按比例缩短,然后调整播放时间mediaPlayTime,更新tDelta,在下一次sample查询时,再次缩短,调整tDelta,直至tDelta为0,回归正常播放。


3.根据权利要求2所述的一种基于音频伸缩的音视频同步播放方法,其特征是,在步骤(313)中,在下一次sample查询时,更新后的tDelta仍大于等于拉伸比例,则再次按相同比例拉伸,调整tDelta;如果更新后的tDelta小于拉伸比例,则再次按tDelta的值设定拉伸比例;直至tDelta为0,回归正常播放。


4.根据权利要求2所述的一种基于音频伸缩的音视频同步播放方法,其特征是,在步骤(314)中,在下一次sample查询时,更新后的tDelta仍大于等于缩短比例,则再次按相同比例缩短,调整tDelta;如果更新后的tDelta小于缩短比例,则再次按tDelta的值设定缩短比例;直至tDelta为0,回归正常播放。


5.根据权利要求2所述的...

【专利技术属性】
技术研发人员:李宏元吴奕刚孙彦龙
申请(专利权)人:杭州当虹科技股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1