视频时间戳PTS和DTS的区别

目录

[🎬 一、一句话总结](#🎬 一、一句话总结)

[📦 二、为什么会不同(以视频帧为例)](#📦 二、为什么会不同(以视频帧为例))

[📖 三、形象例子:I-B-P 顺序](#📖 三、形象例子:I-B-P 顺序)

[🔄 详细对比表](#🔄 详细对比表)

[🧠 四、总结与用途](#🧠 四、总结与用途)

[🎨 五、通俗类比(生活版)](#🎨 五、通俗类比(生活版))


理解 PTS (Presentation Timestamp) 和 DTS (Decoding Timestamp) 是从"能播视频"到"会做播放器"的关键分水岭。

🎬 一、一句话总结

  • PTS (Presentation Timestamp):"这帧该什么时候显示"。

  • DTS (Decoding Timestamp):"这帧该什么时候解码"。

换句话说:

  • PTS"屏幕播放的顺序"

  • DTS"解码器处理的顺序"

在多数情况下它们相等,但当有 B 帧(双向预测帧)出现时,它们就会不同。

📦 二、为什么会不同(以视频帧为例)

视频压缩主要使用以下三种帧类型:

帧类型 含义 是否依赖其他帧 举例
I 帧 关键帧(完整图像) 一张完整图片
P 帧 预测帧(参考前面) "只存前一帧的变化"
B 帧 双向预测帧(参考前后) "既看前又看后"

B 帧的特性(需要参考"未来"的帧)是导致 PTS 和 DTS 不一致的根本原因。

📖 三、形象例子:I-B-P 顺序

假设视频的**播放顺序(PTS)**如下:

显示顺序 (PTS) 帧类型
1 I 帧
2 B 帧
3 P 帧

由于 B 帧(第 2 帧)需要参考后面的 P 帧(第 3 帧),所以它必须等 P 帧先解码完,才能自己被解码。

于是:

  • **解码顺序(DTS)**必须是:I → P → B

  • **播放顺序(PTS)**仍然是:I → B → P

🔄 详细对比表

解码顺序 (DTS) 显示顺序 (PTS) 说明
I 帧 1 1 关键帧,先解码先显示。
P 帧 2 3 要先解码(DTS=2),供 B 帧参考,但延迟显示(PTS=3)。
B 帧 3 2 等 P 帧解码完再解码(DTS=3),但按预期时间显示(PTS=2)。

🎯 关键点:

由于 B 帧依赖未来帧 ,导致封装(Demuxer)后的数据包,其解码顺序(DTS)会领先于其显示顺序(PTS)

🧠 四、总结与用途

时间戳类型 控制对象 用途
DTS 解码器(Decoder) 控制解码顺序(帧何时送入解码器处理)。
PTS 播放器(Player) 控制播放顺序(帧何时输出到屏幕/与音频同步)。

当 FFmpeg 或任何解码器输出一帧解码好的图像时,它会带上该帧的 frame->pts。播放线程会严格根据这个 PTS 来决定什么时候将图像渲染到屏幕上,并与音频同步,从而保证流畅的观看体验。

🎨 五、通俗类比(生活版)

想象你是个电影剪辑师,正在处理三段素材:A、B、C。

  1. 你想要的播放顺序(PTS)是: A → B → C

  2. 但是 B 片段 需要用到 C 片段中的一小部分镜头(双向预测)。

  3. 所以你必须先处理 C, 再回来做 B。

➡️ 这时:

  • 处理顺序 (DTS) = A → C → B

  • 播放顺序 (PTS) = A → B → C

相关推荐
科研面壁者22 分钟前
SPSS——独立样本T检验
数据库·人工智能·机器学习·信息可视化·数据分析·spss·数据处理
ToTensor1 小时前
Tree of Thoughts:让大语言模型像人类一样思考
人工智能·语言模型·自然语言处理
shangjian0074 小时前
AI大模型-评价指标-相关术语
人工智能·算法
江河地笑4 小时前
opencv、cmake、vcpkg
人工智能·opencv·计算机视觉
海边夕阳20065 小时前
【每天一个AI小知识】:什么是卷积神经网络?
人工智能·经验分享·深度学习·神经网络·机器学习·cnn
一只会写代码的猫5 小时前
可持续发展中的绿色科技:推动未来的环保创新
大数据·人工智能
胡萝卜3.06 小时前
掌握C++ map:高效键值对操作指南
开发语言·数据结构·c++·人工智能·map
松岛雾奈.2306 小时前
机器学习--PCA降维算法
人工智能·算法·机器学习
5***79006 小时前
机器学习社区机器学习社区:推动技术进步与创新的引擎
人工智能·机器学习
物联网软硬件开发-轨物科技6 小时前
【轨物交流】海盐县组织部调研轨物科技 深化产学研用协同创新
人工智能·科技