我尝试将mp4中的一些图像与ffmpeg合并。 我这样做:
ffmpeg -r 25 -i %06d.jpg -s 480x360 -vcodec libx264 /output.mp4
第一张图片的持续时间必须为3秒,其他图片的帧速率必须为25。
我知道我可以这样做来设置图像的持续时间:
-loop 1 -t 3 -i 000000.jpg-s 480x360 -vcodec libx264 output.mp4
但我怎么能合并这两件事?第一张图像为3秒,其他图像为25 fps,一次mp4输出??
谢谢
答案 0 :(得分:1)
如果您有三个名为ImageMagick
,red.png
和green.png
的文件,则可以使用此类blue.png
执行此操作:
convert -delay 300 red.png -delay 40 green.png blue.png anim.mp4
我会将其显示为下面的动画GIF,方法是将mp4
更改为gif
参数-delay
是设置,因此它会一直存在,直到更改为止,因此它适用于green.png
和blue.png
。
您可能会将green.png
和blue.png
更改为*.jpg
。
ImageMagick
已预安装在大多数Linux发行版上,可用于OSX(最好通过homebrew
)以及Windows。
如果您想使用ffmpeg
,我认为您有几种可能性
a)将帧速率指定为25 fps,但重复第一帧75次,如下所示:
(for i in {1..75}; do printf "file 'red.png'\n"; done; printf "file '%s'\n" *.jpg) > list.txt
ffmpeg -r 25 -f concat -i list.txt -s 480x360 -vcodec libx264 anim.mp4
b)制作3秒mp4和另一个25 fps的mp4并将它们连接起来
答案 1 :(得分:1)
我建议您分别创建两个单独的视频文件并在之后加入。您可以尝试使用concat
方法here。以下是使用concat
filter_complex
ffmpeg -i input_video1 -i input_video2 -filter_complex "
[0:0][0:1][1:0][1:1]concat=n=2:v=1:a=1[outv][outa]" -map [outv] -map [outa] -c:v libx264 output.mp4
如果图片的尺寸不同,则可能需要scale
。两个视频可能具有不同的sar值,需要使用setsar
进行相应调整。您也可以随意更改视频和音频codecs,具体取决于您对输出格式的需求,因为您需要对其进行重新编码。
希望这有帮助!