Ffmpeg常用指令


FFmpeg官网:http://ffmpeg.org/

备注:技术人员使用较多

播放视频

ffplay 视频.mp4

查看视频信息

ffmpeg -i 视频.mp4

    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 6233 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 96000 Hz, 5.1, fltp, 256 kb/s (default)
    Metadata:
      handler_name    : 粤语
                      :
    Stream #0:2(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s
    Metadata:
      handler_name    : 国语

转换视频

可以根据查看视频信息功能,确认有几个数据流,如上有3个,分辨是视频流、粤语音频流、国语音频流,如果我们只需要视频流和国语视频流,则可以使用如下方式生成一个新的视频(去掉 -map 0:1):

ffmpeg -i 原视频.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy 输出视频.mp4

图片处理:
https://blog.csdn.net/yu540135101/article/details/84143320

视频转gif

ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out.gif
    ss: 表示从什么时间开始,00:00:01或者1都表示从第1秒开始
    to: 截止时间,录制结束时间。
	t的格式
	-t  1.1
	-t 00:00:01 表示持续多长时间,00:00:01或者1都表示1秒
	-r 帧率每秒的帧数,数值越大越流畅

视频中提取任意一帧图片

ffmpeg -i test.asf -y -f  image2  -ss 00:01:00 -vframes 1  test1.jpg
or
ffmpeg -i test.asf -y -f  image2  -ss 60 -vframes 1  test1.jpg
//png格式不会压缩
ffmpeg -i 1.avi -f image2 -ss 2 -vframes 1 test1.png

视频转图片

视频转图片,-r 帧率每秒钟转化1张,image2为image协议的第二版
ffmpeg -i 2.mp4 -r 1 -f image2 image-%3d.jpg

图片转视频

图片转视频,image2 例子
从一个文件序列 img-001.jpeg, img-002.jpeg, ...,创建视频,帧率为10:
ffmpeg -framerate 10 -i img-%03d.jpeg out.mkv
ffmpeg -framerate 30 -i image-%03d.jpg -y out.mp4
ffmpeg -framerate 30 -i image-%03d.png -c:v libx264 -y out3.mp4

类似上例,但开始的数字是100,即索引是从100开始计数:
ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv

读取"*.png" 以通配符模式处理,这将包含所有".png"结尾的文件:
ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv

单张图片合成视频

//单张图片合成视频,这里需要用到-loop 1 开启循环,和-t 10 设置为10秒
ffmpeg -r 1 -f image2 -loop 1 -i 1.png  -t 10 out.mp4 -y

单张图片生成视频,通过滤镜完成

ffmpeg -i 1.png -filter_complex color=s=500x500:c=black,trim=0:5[vbg];[0:v]scale=500x500[sv];[vbg][sv]overlay[vout] -map [vout] -y 1.mp4

ffmpeg -i 1.jpg -filter_complex color=s=720x1280:c=black[vbg];[0:v]scale=720x1280[sv];[vbg][sv]overlay[vout] -map [vout] -ss 0 -to 10 -y 1.mp4

ffmpeg 
-i 
1.png 
-filter_complex 
color=s=500x500:c=black,trim=0:5[vbg];
[0:v]scale=500x500[sv];
[vbg][sv]overlay[vout] 
-map 
[vout] 
-y 
1.mp4