audio - 计算 PTS 和 DTS 以在 ffmpeg 中编码新的视频和音频
问题描述
我在 MP4 文件中编码了一个与音频混合的新 H.264 视频。
如何正确计算视频和音频的 AVPacket 和 AVFrame 的 PTS 和 DTS?
我从我的源生成新的视频帧和新的音频。没有原始的 PTS/DTS 信息。我知道我需要使用的帧速率(time_base)。
解决方案
假设您的帧速率是恒定的。并且在正确设置流时基之后。从零 (0) 开始两个 pts。音频 pts 将增加每帧的“每帧样本”。这通常是audio_sample_rate / frame_rate
(即 48000/60 = 800)。
对于视频,情况有所不同,而且有些简单。视频点将增加每帧相同数量的“视频帧持续时间”。使用此备忘单计算持续时间:
FPS Frame duration
23.98 2002
24.00 2000
25.00 2000
29.97 2002
30.00 2000
50.00 1000
59.94 1001
60.00 1000
是的,这些有点hacky,但会起作用。
推荐阅读
- kubernetes - Pod1 在使用 istio-demo-auth.yaml 时无法与 Pod2 通信
- arrays - 使用多个端点访问 JSON 嵌套键值 Swift 4
- ios - 快速在单元格问题中动态创建表格视图按钮
- angular6 - matDialog中的延迟加载模块
- javascript - Vue.js 从 Browserify 到 Webpack
- swift - 快速映射高阶函数格式
- ssl - 使用 256 个 SAN 创建 CSR
- android - 支持 htmlWorker 类的旧版本 itext gradle 依赖项是什么(在较新版本中已弃用)
- java - 带有 Thymeleaf 的 IntelliJ (2018.3) - 在静态内容的路径上没有自动完成?
- java - 我如何纠正樱桃皮卡问题的 DP 解决方案