2

我目前正在使用 ffmpeg 将自定义容器媒体格式转换为 mp4。将所有 h.264 帧转储到一个文件并将 aac 音频转储到另一个文件很简单。然后我可以将两者结合起来,用 ffmpeg 创建一个 mp4 文件。

问题是视频源并不总是完美的。有时帧被丢弃或延迟等。这会导致 A/V 同步问题,因为 pts 是由 ffmpeg 使用恒定速率生成的。我使用的源格式具有 PTS 值,但我无法找到一种方法将其与原始 h.264 帧一起传递给 ffmpeg。

我想可以为自定义格式创建一个解复用器,但这似乎需要付出很多努力。我研究了 ffmpeg 的 .nut 容器格式,认为我可以先从自定义容器转换为 .nut 。不幸的是,它似乎比表面上看起来更复杂。

似乎应该有一种简单的方法可以将帧及其 PTS 值传递给 ffmpeg,但我还没有遇到过。任何帮助,将不胜感激。

这是我正在使用的 ffmpeg 命令

ffmpeg -f s16le -ac 1 -ar 48k -i source.audio -framerate 20 -i source.video -c:a aac -b:a 64k -r 20 -c:v h264_nvenc -rc:v vbr_hq -cq:v 19 -n out.mp4
4

0 回答 0