ffmpeg 将图像与第一个图像持续时间合并
ffmpeg merge images with first image duration
我正在尝试使用 ffmpeg 合并 mp4 中的一些图像。
我这样做:
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 秒,其他图片在一个 mp4 输出中以 25 fps 播放?
谢谢
如果您有三个名为 red.png
、green.png
和 blue.png
的文件,您可以像这样使用 ImageMagick
:
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 并将它们连接起来
我建议您分别创建两个单独的视频文件,然后再加入。您可以尝试 concat
可用的方法 here。以下是使用 filter_complex
的简单 concat
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
them. Two videos may have different sar values and need to adjust them accordingly using setsar
. Also feel free to change the video and audio codecs 根据您对输出格式的需要,因为您需要重新编码。
希望对您有所帮助!
我正在尝试使用 ffmpeg 合并 mp4 中的一些图像。 我这样做:
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 秒,其他图片在一个 mp4 输出中以 25 fps 播放?
谢谢
如果您有三个名为 red.png
、green.png
和 blue.png
的文件,您可以像这样使用 ImageMagick
:
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 并将它们连接起来
我建议您分别创建两个单独的视频文件,然后再加入。您可以尝试 concat
可用的方法 here。以下是使用 filter_complex
concat
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
them. Two videos may have different sar values and need to adjust them accordingly using setsar
. Also feel free to change the video and audio codecs 根据您对输出格式的需要,因为您需要重新编码。
希望对您有所帮助!