我正在尝试制作一个可下载的 5.1 环绕视频,放在我参与的一场音乐会的网站上。理想情况下,该视频应与 QuickTime 和 Plex 等产品具有最大兼容性。
我有一个源 2160p29.97 DNxHR 视频文件和一个源 Dolby AC-3 5.1 音频编码。AC3 编码是使用 Dolby Media Encoder 创建的,使用的是 6ch .wav,也是从 Resolve 导出的。我不确定它的时间码是否处理正确。
这是我的 ffmpeg 字符串:
ffmpeg.exe -i .\master-dnx.mov -i .\master-ac3.ac3 -acodec copy -c:v libx264 -pix_fmt yuv420p -color_primaries bt709 -color_trc bt709 -colorspace bt709 -preset medium -crf 22 -movflags +faststart -flags +cgop -f mp4 download.mp4
问题:
- 播放开始正常,但 QuickTime 似乎在文件中搜索时遇到困难,经常导致音频和视频不同步或在搜索后完全丢失。MPV、MPC 或 VLC 中不存在此问题。
- 音频在文件末尾提前几秒钟消失。
我注意到 ffmpeg 发出以下警告:
- 根据比特率估算时长,这可能不准确
- [mp4@00000257d7257600] 轨道 1:未设置编解码器帧大小
- [mp4 @ 00000257d7257600] 从流的开头丢弃无效数据包
我还注意到视频流和音频流的持续时间略有不同:
- 时长:02:01:15.67,开始:0.000000,比特率:879195 kb/s
- 时长:02:02:20.61,开始:0.000000,比特率:447 kb/s
我觉得可能存在某种时间戳不匹配的情况。这是我第一次尝试以这种方式将 AC3 音频混合到视频中。如果我让 ffmpeg 进行 AC3 编码,那么似乎没有问题。但据我所知,ffmpeg 的 AC3 编码器质量不太好。我想我只是不确定混合杜比媒体编码器结果的正确工作流程是什么。
非常感谢您的帮助。
答案1
因此,我能够通过返回 Dolby Media Encoder 并确保初始开始时间码为“00:00:00:00”来解决问题。我认为问题在于 DaVinci 时间线上的“第一帧动作”不是 0,我导出的项目从中间某处开始。不知何故,元数据一直通过,甚至进入了 Dolby Media Encoder 读取的 .wav 文件中。我不确定如何使用 ffmpeg 修复它,但幸运的是,我能够使用固定的时间戳重新进行编码。现在多路复用工作正常,并且在所有测试的设备上播放效果良好。