• [SimplePlayer] 8. 音视频同步


    音频与视频在播放当中可能会由于种种原因(如:音视频并非在同一时间开始播放,或视频由于解码任务繁重导致输出图像延迟等)导致音频与视频的播放时间出现偏差,这种就是音视频的同步问题,本文会对音视频同步进行讨论。

    有三种音视频同步方式:

    1. 视频同步到音频时钟(synchronize video to audio clock)
    2. 音频同步到视频时钟(synchronize audio to video clock)
    3. 音视频同步到外部时钟(synchronize audio and video to external clock)

    常见的实现方式是把视频同步到音频时钟。主要原因是,对于延迟以及卡顿,人的听觉较视觉更为敏感,需要尽量保持音频顺畅输出。

    时钟

    我们前面提到视频时钟、音频时钟指的是连续的时间。视频文件内存储的视频以及音频的时间戳都是离散的,不过如果我们假设视频与音频分别都有一个独立的时钟,各帧的时间戳代表的就是时钟上的某一时刻。如果在某一时刻,此时音频时钟与视频时钟上的刻度相同,则表明此时的音视频是完全同步的。

    image

    为了得到音频或者视频的时钟,我们可以在音频或者视频输出时记录输出帧的$pts$以及此时的系统时间$CLK_{put}$,然后在进行时钟比较时取出上次输出时的$pts$以及$CLK_{put}$,并获取当前的系统时间$CLK_{get}$,最后执行以下运算就能得到音频或者视频时钟。

    $CLK = pts + CLK_{get} – CLK_{put}$

    延迟

    实际上音视频之间总会存在延迟,如果在某一时刻,视频时钟的刻度大于音频时钟的刻度,则表明视频比音频播放早了,或者说音频延迟了。

    image

    反之,如果在某一时刻,音频时钟的刻度大于视频时钟的刻度,则表明音频比视频播放早了,或者说视频延迟了。

    image

    可接受的延迟范围

    人对延迟的敏感度并不会很高,对于通常的视频帧率来说(24fps或者30fps,即延迟在40ms之内),一帧的延迟是人类不容易察觉,即可接受的延迟范围。因此,如果音频以及视频的时钟差值在此范围内,则不用特地进行调整。

    image

    延迟调整

    如果音频时钟与视频时钟之间的延迟超出可接受的范围,则需要进行时钟的调整,时钟调整主要是通过改变某一帧的播放时间来实现的,实现的方法也有多种。如果视频延迟了,则可以加快视频帧的播放速度:一解码完成,判断视频延迟,立即开始输出图像;或者直接跳过那些pts不在可接受范围内的帧。如果音频延迟了,则可以延迟视频的播放速度,或者先暂停输出后面的视频帧直到音频追上。

  • 相关阅读:
    [梦]2005.2.10
    日语广播总汇
    数词与量词
    切忌望文生义的日文汉字
    特別な読み方の漢字
    日本语能力考简介
    一天三练
    兴趣记忆法(1)顺口溜记忆
    兴趣记忆(3)谚语
    兴趣记忆(2)学歌
  • 原文地址:https://www.cnblogs.com/TaigaCon/p/10010490.html
Copyright © 2020-2023  润新知