视频播放音画同步处理

一、视频播放流程

播放一个视频,一般分一下几步完成

解复用(Demux):在媒体文件中将音频数据、视频数据、字母数据分离出来。

二、播放参数说明

视频帧率:一秒钟需要显示的画面,比如25FPS,意思就是一秒钟需要显示25张画面,

那么一张画面的持续时间就是1000/25=40ms。

音频采样率:一秒钟播放的样品个数。

音频数据公式:采样率x通道数*采样深度/8*数据持续时间。

三、音画同步阐述

依据视频帧率以及音频的帧率即可控制播放速度。声卡和显卡均是一帧数据来作为播放单位,如果单纯依据帧率来控制播放,理论上是可以控制音画同步的。

比如深度16bit,一个8K单声道的PCM的数据和25FPS的视频流为例:

一个512byte的PCM音频帧的播放时长:512*1000/(8000*16/2)=32ms

一帧视频画面的持续时间为1000/25 = 40ms

故在理想情况下,音视频完全不同,音视频播放过程如下:

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

1.一帧的播放时间,难以精准控制。音视频解码及渲染的耗时不同,可能造成每一帧输出的时间长短不一样,长久积累误差,不同步便会越来越明显。

2.音频数据输出是线性的持续不断的,但是视频输出不是线性的,视频渲染可能快,可能慢,从而导致音视频显示帧率上出现偏差。

所以,解决音视频播放同步的问题,引入了时间戳。

录制的时候:选择一个参考时钟,要求参考时钟上的时间是线性递增的,编码时依据参考时钟上的每个音视频数据块打上时间戳。

播放的时候:依据音视频时间戳及参考时钟,来调整播放速度。

所以,视频和音频同步实际上时一个动态的过程,一直围绕理想状态上不断调整音视频播放速度,来消除时间累计误差。

四、同步策略

实现 音视频同步,在播放时候需要选择一个参考时钟,读取帧上的时间戳,同时根据参考时钟来动态调整播放速度。参考时钟一般选择以下两种

1.将视频同步到音频上:以音频的播放速度为基准来同步视频。

2.将视频和音频同步到外部的时钟上:选择一个外部时钟为基准,视频和音频的播放速度均以该时钟为标准。

当播放源比参考时钟慢时,加快播放速度或者丢弃,播放快了则延迟播放速度。考虑人对声音的敏感度比较高,频繁调节音频会带来较差的体验,并且音频播放时钟为线性增长,一般的做法都是以时钟作为参考时钟,将视频同步到音频上。

相关推荐
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
2601_955662465 天前
短剧多人对白怎么配?2026年多角色配音工具对比
大数据·人工智能·音视频·语音识别
开发笔记-阿牛5 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
旺仔小馒头wang5 天前
AI 智能手机发布会:赋予人类的五种新能力
人工智能·学习·音视频
纳祥科技5 天前
拆机拆到芯片级:ARC功放机里的NX7026、NX8420、NX6805
单片机·音视频·智能音箱
youandyouyou5 天前
律所内部培训共享的内网部署方案:架构、参数与三步落地
音视频
爱吃提升6 天前
文生视频核心
人工智能·音视频
2601_955662466 天前
抖音视频怎么做多语言配音?2026年AI配音工具与制作流程详解
人工智能·音视频·语音识别·视频
音视频牛哥6 天前
Android与HarmonyOS NEXT如何接入GB28181:从SIP到PS/RTP的完整链路
音视频·gb28181-2022对接·鸿蒙next gb28181·gb/t 28181-2022·gb/t 28181-2016·gb28181-2022平台
美狐美颜SDK开放平台6 天前
直播APP源码与视频美颜sdk如何配合?一套完整开发思路
android·人工智能·计算机视觉·音视频·直播美颜sdk