生成10 fps的合成测试视频,第一帧被复制

问题描述 投票:0回答:1

我正在尝试使用FFmpeg生成合成视频。

我希望帧速率为10 fps,并且我希望testsrc计数器每帧前进。

问题:当输出文件为mp4时,第一个视频帧被duplicated 10次。

问题:是FFmpeg中的错误,还是命令行参数中的问题?


我正在使用以下命令:

ffmpeg -y -r 10 -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v libx264 vid.mp4
  • 设置rate=1的原因是使计数器每帧前进。生成的源模式旨在使计数器每秒前进。
  • 在输入之前设置-r 10的原因是,以10 fps的速度“重新混合”视频,而忽略了输入的时间戳。

我在以下文章中找到了语法:Using ffmpeg to change framerate

以新帧速率重新复用

ffmpeg -y -r 24 -i seeing_noaudio.h264 -c copy seeing.mp4

当输出文件为AVI时,它可以正常工作(第一帧没有重复):

ffmpeg -y -r 10 -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v libx264 vid.avi

[以1 fps生成AVI并以10 fps生成mp4 Remux时,存在另一个问题:第一帧和第二帧重复两次,而最后一帧丢失。以下是命令:

ffmpeg -y -f lavfi -i testsrc=duration=10:size=92x54:rate=1 -c:v libx264 -r 1 vid.avi
ffmpeg -y -r 10 -i vid.avi -c:v copy -r 10 vid.mp4

mp4视频解析为PNG图像:

ffmpeg -i vid.mp4 %02d.png  

结果:enter image description here第一帧重复10次。


AVI视频解析为PNG图像:结果:enter image description here预期有10帧。

video ffmpeg mp4
1个回答
0
投票

这可能与初始时基有关,但我无法测试几天。现在,使用

ffmpeg -y -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -vf setpts=N/10/TB -r 10 -c:v libx264 vid.mp4
© www.soinside.com 2019 - 2024. All rights reserved.