音视频播放的核心处理流程

目录

[🧩 一、编码 / 解码 是什么?](#🧩 一、编码 / 解码 是什么?)

[🎞️ 二、解复用和解码的关系](#🎞️ 二、解复用和解码的关系)

[🎨 三、YUV、PCM、H.264、AAC 是什么?](#🎨 三、YUV、PCM、H.264、AAC 是什么?)

[🧠 四、为什么解码输出 YUV / PCM?](#🧠 四、为什么解码输出 YUV / PCM?)

[💡 五、为什么渲染要转成 RGB 和 Qt 播放?](#💡 五、为什么渲染要转成 RGB 和 Qt 播放?)

[⏱️ 六、同步(Audio-Video Sync)](#⏱️ 六、同步(Audio-Video Sync))

[✅ 七、最简总结](#✅ 七、最简总结)


🧩 一、编码 / 解码 是什么?

名称 意思 举例
编码(Encode) 把原始数据压缩成体积小的格式 原始视频 → H.264,原始音频 → AAC
解码(Decode) 把压缩格式还原成原始数据 H.264 → 原始图像(YUV),AAC → 原始声音(PCM)

👉 在播放器 里,只做"解码 ",因为你是播放别人编码好的视频

编码一般在"录制 / 推流 / 转码"时才用。


🎞️ 二、解复用和解码的关系

文件 → 解复用(Demux) → 解码(Decode) → 原始帧

步骤 输入 输出 举例
解复用 .mp4 文件 AVPacket(压缩数据) 一包 H.264 或 AAC
解码 AVPacket AVFrame(原始帧) 一帧 YUV 图像 或 PCM 音频

✅ 所以,AVPacket 只是中间的压缩包,最终要交给解码器转换成 AVFrame 才能播放。


🎨 三、YUV、PCM、H.264、AAC 是什么?

名称 类型 用途 是否压缩 举例
H.264 视频压缩编码格式 存储或传输视频 ✅ 有压缩 .mp4、.flv 文件里的视频流
AAC 音频压缩编码格式 存储或传输音频 ✅ 有压缩 .mp4 文件里的音频流
YUV 原始视频帧格式 显示前的图像 ❌ 无压缩 解码后的视频数据
PCM 原始音频格式 播放前的声音 ❌ 无压缩 解码后的音频数据

🧠 四、为什么解码输出 YUV / PCM?

因为:

  • H.264、AAC 是压缩格式,不能直接显示/播放;

  • 只有解码后得到的:

    • 视频帧 → YUV:每一帧像素数据;

    • 音频帧 → PCM:每个采样点的数据;

播放器用的就是这些原始数据。


💡 五、为什么渲染要转成 RGB 和 Qt 播放?

  • 屏幕显示的颜色模式是 RGB

    而视频解码出来是 YUV ,所以要用 sws_scale()YUV → RGB

  • 音频输出设备(声卡)支持 PCM(采样信号)

    所以 QAudioOutput 直接播放 PCM

🎬 视频流程:H.264 →(解码)→ YUV →(颜色转换)→ RGB → 屏幕显示

🎧 音频流程:AAC →(解码)→ PCM → 声卡播放


⏱️ 六、同步(Audio-Video Sync)

对!你理解得对:

同步就是让解码得到的视频和音频对齐播放。

思路:

  • 每帧音频、视频都有一个显示时间戳(PTS);

  • 播放时比较音频PTS和视频PTS:

    • 如果视频太快 → 等一会再显示;

    • 如果视频太慢 → 丢掉几帧追上音频;

  • 一般以音频为主时钟(因为耳朵比眼睛更敏感)。


✅ 七、最简总结

流程 输入 输出 数据格式
解复用 MP4文件 压缩包 AVPacket H.264 / AAC
解码 AVPacket 原始帧 AVFrame YUV / PCM
同步 比对PTS 保证音画一致 时间对齐
渲染 YUV→RGB / PCM→播放 屏幕 / 声卡输出 RGB / PCM
相关推荐
封奚泽优18 小时前
下载网页中的.m3u8视频文件
ffmpeg
Vertira21 小时前
win10/10 下载并安装ffmpeg.exe 的官方详细方法 (已解决)
ffmpeg
xmRao1 天前
Qt+FFmpeg 实现音频重采样
qt·ffmpeg·音视频
Evonso2 天前
静态编译的ffmpeg用法
ffmpeg
_chirs4 天前
编译不依赖动态库的FFMPEG(麒麟国防 V10)
arm开发·ffmpeg
熊猫钓鱼>_>4 天前
从零到一:打造“抗造” Electron 录屏神器的故事
前端·javascript·ffmpeg·electron·node·录屏·record
UpYoung!4 天前
【格式转换工具】专业级多媒体格式转换解决方案——Freemake Video Converter 完全指南:轻量化视频剪辑媒体格式转换
ffmpeg·短视频·实用工具·开源工具·多媒体格式转换·运维必备·视频转换格式
试剂小课堂 Pro5 天前
Ald-PEG-Ald:丙醛与聚乙二醇两端连接的对称分子
java·c语言·c++·python·ffmpeg
MaoSource5 天前
Debian 12 安装 FFmpeg 命令
服务器·ffmpeg·debian
白云千载尽6 天前
交换空间扩容与删除、hugginface更换默认目录、ffmpeg视频处理、清理空间
python·ffmpeg·控制·mpc·navsim