数字通信同步技术的matlab与fpga实现_音视频开发技术之同步原理详解及实现

1.音视频同步简单介绍

对于一个播放器,一般来说,其基本构成均可划分为以下几部分:数据接收(网络/本地)->解复用->音视频解码->音视频同步->音视频输出。基本框架如下图所示:

dacb2dba798d7495d3f81034e8d778bd.png

为什么需要音视频同步?媒体数据经过解复用流程后,音频/视频解码便是独立的,也是独立播放的。而在音频流和视频流中,其播放速度都是有相关信息指定的:

  • 视频:帧率,表示视频一秒显示的帧数。
  • 音频:采样率,表示音频一秒播放的样本的个数。

de176b19aa9cfa746a0e5bb96f49bf88.png

从帧率及采样率,即可知道视频/音频播放速度。声卡和显卡均是以一帧数据来作为播放单位,如果单纯依赖帧率及采样率来进行播放,在理想条件下,应该是同步的,不会出现偏差。以一个44.1KHz的AAC音频流和24FPS的视频流为例:一个AAC音频frame每个声道包含1024个采样点,则一个frame的播放时长(duration)为:(1024/44100)×1000ms = 23.22ms;一个视频frame播放时长(duration)为:1000ms/24 = 41.67ms。理想情况下,音视频完全同步,音视频播放过程如下图所示:

da7682b4b59e31898e01f66b8ada71d2.png

但实际情况下,如果用上面那种简单的方式,慢慢的就会出现音视频不同步的情况,要不是视频播放快了,要么是音频播放快了。可能的原因如下:

  1. 一帧的播放时间,难以精准控制。音视频解码及渲染的耗时不同,可能造成每一帧输出有一点细微差距,长久累计,不同步便越来越明显。(例如受限于性能,42ms才能输出一帧)
  2. 音频输出是线性的,而视频输出可能是非线性,从而导致有偏差。
  3. 媒体流本身音视频有差距。(特别是TS实时流,音视频能播放的第一个帧起点不同)

所以,解决音视频同步问题,引入了时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的);编码时依据参考时钟上的给每个音视频数据块都打上时间戳;播放时,根据音视频时间戳及参考时钟,来调整播放。所以,视频和音频的同步实际上是一个动态的过程,同步是暂时的,不同步则是常态。以参考时钟为标准,放快了就减慢播放速度;播放快了就加快播放的速度。

6271eeebf1eb1f24f7ef22a0c803a3c0.png

注:音视频流媒体服务开发训练营学习地址:流媒体服务开发训练营

b95c3979b8a4eee9b36fdac95a84fa00.png

音视频流媒体高级开发大纲

接下来,我们介绍媒体流中时间戳的概念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值