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
答案 0 :(得分:108)
请参阅Create a video slideshow from images – FFmpeg
如果您的视频无法正确显示正确的内容如果您遇到问题,例如第一张图片被跳过或仅显示一帧,请使用 fps视频过滤器而不是输出帧速率 -r
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
或者,可以将格式视频过滤器添加到过滤器链中以替换 -pix_fmt yuv420p ,例如" fps = 25,format = yuv420p" 。这种方法的优点是你可以控制哪个过滤器先行
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
我测试了以下参数,它对我有用
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4
以下参数也有效但总是会跳过第一张图片
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4
根据放置在不同文件夹中的图片制作视频
首先,将图像路径添加到 imagepaths.txt ,如下所示。
# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate
file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'
示例用法如下;
"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"
-safe 0 参数可防止不安全的文件名错误
相关链接
FFmpeg making a video from images placed in different folders
答案 1 :(得分:85)
-pattern_type glob
This great option makes it easier to select the images in many cases.
Slideshow video with one image per second:
ffmpeg -framerate 1 -pattern_type glob -i '*.png' \
-c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
Here is a demo on YouTube with music added as well: https://www.youtube.com/watch?v=_6D05gCWh_I
时模拟对LinkButton的点击正常速度视频,每帧一幅图像,30 FPS:
ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
-c:v libx264 -pix_fmt yuv420p out.mp4
以下是一些合成测试输入图像:
wget -O opengl-rotating-triangle.zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.zip
cd opengl-rotating-triangle
使用How to use GLUT/OpenGL to render to a file?
生成的图片 生成的GIF很难观察到视频压缩图像序列的方式比ZIP更好,因为它可以使用专门的算法压缩帧:
opengl-rotating-triangle.mp4
:340K opengl-rotating-triangle.zip
:7.3M 您的图片当然应按字母顺序排序,通常为:
0001-first-thing.jpg
0002-second-thing.jpg
0003-and-third.jpg
等等。
但请注意,尽管名称-glob
,但这并不像shell Glob模式那样通用,例如:-i '*'
失败:https://trac.ffmpeg.org/ticket/3620(显然是因为文件类型是从扩展中推断出来的)。 / p>
-r 30
使-framerate 1
视频30 FPS克服低帧率的VLC等播放器中的错误:VLC freezes for low 1 FPS video created from images with ffmpeg因此,它会重复每帧30次,以保持每秒所需的1幅图像效果
另见:
接下来,您还需要:
剪切一些音频以匹配视频长度:Cutting the videos based on start and end time using ffmpeg
ffmpeg -i in.mp3 -ss 03:10 -to 03:30 -c copy out.mp3
添加剪切音频:https://superuser.com/questions/277642/how-to-merge-audio-and-video-file-in-ffmpeg
ffmpeg -i video.mp4 -i audio.mp3 -c copy output.mkv
在ffmpeg 3.4.4,vlc 3.0.3,Ubuntu 18.04上测试。
答案 2 :(得分:7)
答案 3 :(得分:5)
cat *.png | ffmpeg -f image2pipe -i - output.mp4
来自wiki
答案 4 :(得分:0)
从视频创建帧:
ffmpeg\ffmpeg -i %video% test\thumb%04d.jpg -hide_banner
可选:删除输出视频中不需要的帧
(比使用 -ss
和 -t
修剪视频更准确)
然后从图像/帧创建视频,例如:
ffmpeg\ffmpeg -framerate 30 -start_number 56 -i test\thumb%04d.jpg -vf format=yuv420p test/output.mp4