FFmpeg命令图片与视频互相转换
-
截取一张图片
ffmpeg -i test_video.mp4 -y -f image2 -ss 00:00:00 -vframes 1 -s 640x360 test_video_snapshot_jpg.jpg ffmpeg -i test_video.mp4 -y -f image2 -ss 00:00:00 -vframes 1 -s 640x360 test_video_snapshot_bmp.bmp
-i test_video.mp4
:指定输入文件为test_video.mp4
。-y
:覆盖输出文件而不询问。-f image2
:指定输出格式为图像序列。-ss 00:00:00
:指定从视频的开始位置提取图像。-vframes 1
:指定只提取一帧图像。-s 640x360
:指定输出图像的大小为 640x360。
第一个命令将提取的图像保存为 JPEG 格式的图片文件
test_video_snapshot_jpg.jpg
,而第二个命令将提取的图像保存为 BMP 格式的图片文件test_video_snapshot_bmp.bmp
。-vframes
帧如果大于1 那么输出加%03d
如:test_video_snapshot_jpg%03d.jpg
-
将视频转换为图片(每帧一张图):
ffmpeg -i test_video.mp4 -t 5 -s 640x360 -r 15 frame%03d.jpg
-i test_video.mp4
:指定输入文件为test_video.mp4
。-t 5
:指定要提取的视频时长为 5 秒。-s 640x360
:指定输出图像的大小为 640x360。-r 15
:指定输出图像序列的帧率为 15 帧/秒。frame%03d.jpg
:指定输出图像文件名的格式,%03d
表示用三位数字来表示帧序号,并以.jpg
格式保存。
这个命令将从输入视频文件中提取 5 秒长、640x360 分辨率、15 帧/秒的视频,并将其转换为一系列以
frame001.jpg
、frame002.jpg
等命名的 JPEG 图像文件。 -
图片转换为视频:
ffmpeg -f image2 -i frame%03d.jpg -r 25 video.mp4
-f image2
:指定输入格式为图像序列。-i frame%03d.jpg
:指定输入图像文件名的格式,%03d
表示用三位数字来表示帧序号,并以.jpg
格式读取。-r 25
:指定输出视频的帧率为 25 帧/秒。video.mp4
:指定输出文件名为video.mp4
。
这个命令将输入的图像文件序列合成为一个帧率为 25 帧/秒的视频文件
video.mp4
。 -
从视频中生成GIF图片
ffmpeg -i test_video.mp4 -t 5 -r 1 image.gif
-i test_video.mp4
:指定输入文件为test_video.mp4
。-t 5
:指定提取的视频片段时长为 5 秒。-r 1
:指定 GIF 图像的帧率为 1 帧/秒。image.gif
:指定输出文件名为image.gif
。
这个命令将从视频文件中提取 5 秒长的视频片段,并将其转换为一个帧率为 1 帧/秒的 GIF 图像文件。
ffmpeg -i test_video.mp4 -t 5 -r 25 -s 640x360 image.gif
-i test_video.mp4
:指定输入文件为test_video.mp4
。-t 5
:指定提取的视频片段时长为 5 秒。-r 25
:指定 GIF 图像的帧率为 25 帧/秒。-s 640x360
:指定输出 GIF 图像的大小为 640x360 像素。image.gif
:指定输出文件名为image.gif
。
这个命令将从视频文件中提取 5 秒长的视频片段,并将其转换为一个帧率为 25 帧/秒、大小为 640x360 像素的 GIF 图像文件。
-
将GIF图片转换成视频
ffmpeg -f gif -i image.gif image.mp4
-f gif
:指定输入格式为 GIF。-i image.gif
:指定输入文件为image.gif
。image.mp4
:指定输出文件名为image.mp4
。
这个命令将 GIF 图像文件
image.gif
转换为 MP4 视频文件image.mp4
,保留了图像的动画效果。