FFmpeg原始h.264设置pts值

FFmpeg原始h.264设置pts值,ffmpeg,h.264,transcode,Ffmpeg,H.264,Transcode,我目前正在使用ffmpeg将自定义容器媒体格式转换为mp4。直接将所有h.264帧转储到一个文件,将aac音频转储到另一个文件。然后我可以将两者结合起来,用ffmpeg创建一个mp4文件 问题是视频源并不总是完美的。有时会丢失或延迟时间帧等。这会导致A/V同步问题,因为pts是由ffmpeg使用恒定速率生成的。我使用的源格式具有PTS值,但我无法找到将其传递给ffmpeg和原始h.264帧的方法 我想为自定义格式创建一个解复用器是可能的,但这似乎需要很多努力。我研究了ffmpeg的.nut容器格

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

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

我想为自定义格式创建一个解复用器是可能的,但这似乎需要很多努力。我研究了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

您可以展示一个如何将帧发送到FFmpeg的代码示例吗?似乎非常需要为自定义格式创建解复用器。我正在手动指定输入帧率。我认为你是对的,我需要做的就是去辩手。我想看看是否有任何捷径不涉及构建ffmpeg,并找出编写解复用器所需的一切。啊,你现在正在使用CLI吗?是的,构建FFmpeg已经够难了。希望其他人能给你一个更好的答案。看,你能展示一个如何将帧发送到FFmpeg的代码示例吗?似乎非常需要为自定义格式创建解复用器。我正在手动指定输入帧率。我认为你是对的,我需要做的就是去辩手。我想看看是否有任何捷径不涉及构建ffmpeg,并找出编写解复用器所需的一切。啊,你现在正在使用CLI吗?是的,构建FFmpeg已经够难了。希望其他人能给你一个更好的答案。看到了吗