ffmpeg -r 1/5 -start_number 2 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
这一行工作得很好,但我想从另一个文件夹中的图像创建一个视频文件。
我文件夹中的图像名称是:
img001.jpg
img002.jpg
img003.jpg
...
我如何从不同的文件夹输入图像文件?例如:C: \ mypics
我尝试了这个命令,但ffmpeg只生成了第一个图像(img001.jpg)的视频。
ffmpeg -r 1/5 -start_number 0 -i C:\myimages\img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
为我创建视频与音频它工作,你需要指定:
正常帧:-framerate 30
audio -i audio/audio.ogg
以及libx264库
system("ffmpeg -framerate 30 -i #{out_dir}/%03d.png -i audio/audio.ogg
-c:a copy -shortest -c:v libx264 -pix_fmt yuv420p out/final
/#{out_dir.sub("out/", "")}.mp4")
如果你想创建一个循环,例如3乘以-stream_loop 2,因为0,1,2
system("ffmpeg -stream_loop 2 -framerate 30 -i
#{out_dir}/%03d.png -i audio/audio.ogg -c:a copy -shortest -c:v
libx264 -pix_fmt yuv420p -b:v 50M out/final/#{out_dir.sub("out/",
"")}.mp4")
您的文件应该命名为depth_00001.png depth_00002.png等,以确保正确的顺序
如果它们被称为depth_1.png depth_2.png,那么您可以用这个命令批量重命名它们为所需的命名
for f in depth_[0-9]*; do mv "$f" "$(printf 'depth_%05d' "${f#depth_}" 2> /dev/null)"; done; for f in depth_[0-9]*; do mv "$f" "$f.png"; done;
步骤2)然后使用标准选项运行ffmpeg
ffmpeg -framerate 30 -i depth_%05d.png -pix_fmt yuv420p -c:v libx264 depth.mp4
步骤3)如果失败了(我在Windows上就是这样),那就试试这个
cat depth_*.png | ffmpeg -f image2pipe -framerate 30 -i - -pix_fmt yuv420p -c:v libx264 depth.mp4
注意:当我使用png时,步骤2失败了-但当我使用图像魔法将png转换为jpg时,步骤2工作了
下面是我用来进行转换的命令
for image in *.png; do magick convert "$image" "${image%.*}.jpg"; done;
此外,我发现这个命令在验证输出视频的长度是否符合预期方面很有用
ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 depth.mp4