我想使用 FFmpeg 以三种不同的帧速率编码 YUV 文件:60、30 和 15 FPS。视频序列的捕获帧速率为 60 FPS,因此以这种速率播放最自然。我的目标是让三种帧速率的视频时长(10 秒)相同,并在编码较低帧(30 和 15)时对帧进行子采样/丢弃。但是,当我尝试使用
ffmpeg -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt yuv420p -i Test.yuv -c:v h264_nvenc -preset hq -rc cbr -profile:v main -b:v 10M out.mp4
视频时长增加一倍达到 20 秒,同样,对于 15 FPS,视频时长则增加到 40 秒。
我怎样才能从原始 YUV 中删除帧以保持持续时间相同并进行时间子采样?
答案1
我认为你必须指定输入和输出帧速率,否则它只是假设它们相等并且没有丢失/重复的帧。
我认为你的命令将会是这样的:
ffmpeg -f rawvideo -s:v 1920x1080 -r 60 -pix_fmt yuv420p -i Test.yuv -c:v h264_nvenc -preset hq -rc cbr -profile:v main -b:v 10M -r 15 out.mp4