ffmpeg常用命令

主要参数

-i 设定输入流

-f 设定输出格式

-ss 开始时间

视频参数

-b 设定视频流量,默认为200kbit/s

-r 设定帧速率,默认为25

-s 设定画面的宽与高

-aspect 设定画面的比例

-vn 不处理视频

-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编码器

音频参数

-ar 设置采样率

-ac 设定声音的Channel数

-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器

-an 不处理音频

常用功能

去掉视频中的音频

-an 去掉音频 -vcodec 视频选项,一般后面加copy表示拷贝

1
ffmpeg -i input.mp4 -vcodec copy -an output.mp4

提取视频中的音频

-vn 去掉视频;-acodec 音频选项,一般后面加copy表示拷贝

1
ffmpeg -i 0.blv -f mp3 1.mp3

音视频合成

-y 覆盖输出文件

1
ffmpeg -y -i input.mp4 -i input.mp3 -vcodec copy -acodec copy output.mp4

剪切视频

-ss 开始时间 -t 持续时间

1
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.mp4 -vcodec copy -acodec copy output.mp4

视频截图

-s 设置分辨率 -f 强迫采用格式fmt

1
ffmpeg -i test.mp4 -f image2 -t 0.001 -s 320*240 image-%3d.jpg

视频分解为图片

-r 指定截屏频率

1
ffmpeg -i test.mp4 -r 1 -f image2 image-%3d.jpg

将图片合成视频

1
ffmpeg -f image2 -i image%d.jpg output.mp4

视频拼接

1
ffmpeg -f concat -i filelist.txt -c copy output.mp4

将视频转为gif

-pix_fmt 指定编码

1
ffmpeg -i input.mp4 -ss 0:0:30 -t 10 -s 320*240 -pix_fmt rgb24 output.gif

将视频前30帧转为gif

1
ffmpeg -i input.mp4 -vframes 30 -f gif output.gif

旋转视频

1
ffmpeg -i input.mp4 -vf rotate=PI/2 output.mp4

缩放视频

iw是输入的宽度,iw/2就是一半,-1为保持宽高比

1
ffmpeg -i input.mp4 -vf scale=iw/2:-1 output.mp4

视频变速

1
ffmpeg -i input.mp4 -filter:v setpts=0.5*PTS output.mp4

音频变速

1
ffmpeg -i input.mp3 -filter:a atempo=2.0 output.mp3

音视频同时变速,但是音视频为互倒关系

1
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4

视频添加水印

main_w-overlay_w-10 视频的宽度-水印的宽度-水印边距

1
ffmpeg -i input.mp4 -i logo.jpg -filter_complex [0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] -map [out] -map 0:a codec:a copy output.mp4

m3u8转mp4

1
ffmpeg -i "http://cache.utovr.com/201508270528174780.m3u8" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 "1.mp4"
1
ffmpeg -i http://.../playlist.m3u8 -c copy -bsf:a aac_adtstoasc output.mp4

mp4转m3u8

1
ffmpeg -i input.mp4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls index.m3u8

将文件按时长分片

1
ffmpeg -i in.mkv -f segment -segment_time 10 -segment_format_options movflags=+faststart out%03d.mp4

文件长度截取

-y 表示如果输出文件已存在则覆盖

1
ffmpeg  -i ./plutopr.mp4 -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:15 ./cutout1.mp4 -y

获取视频的所有帧

1
ffmpeg -i 1.mp4 -q:v 2 -f image2 image%07d.jpeg

其中-i 后面是输入文件,-q:v 2 q代表质量quality, v代表视频流,2是控制质量的参数。-f指定输出的格式是image2. %07d是图片命名的pattern

H264视频转ts视频流

1
ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts

H264视频转mp4

1
ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4

ts转mp4

1
ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 test.mp4

mp4转flv

1
ffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv test.flv 

转换文件为3GP格式

1
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp

转换文件为3GP格式v2

1
ffmpeg -y -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp

使用ffmpeg编码得到高质量的视频

1
ffmpeg.exe -i "D:\Video\Fearless\Fearless.avi" -target film-dvd -s 720x352 -padtop 64 -padbottom 64 -maxrate 7350000 -b 3700000 -sc_threshold 1000000000 -trellis -cgop -g 12 -bf 2 -qblur 0.3 -qcomp 0.7 -me full -dc 10 -mbd 2 -aspect 16:9 -pass 2 -passlogfile "D:\Video\ffmpegencode" -an -f mpeg2video "D:\Fearless.m2v"

转换指定格式文件到FLV格式

1
2
ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv 
ffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv

转换文件为3GP格式

1
ffmpeg -i test.avi -y -b 20 -s sqcif -r 10 -acodec amr_wb -ab 23.85 -ac 1 -ar 16000 test.3gp

转换文件为MP4格式

1
2
ffmpeg  -y  -i input.wmv  -f mp4 -async 1-s 480x320  -acodec libfaac -vcodec libxvid  -qscale 7 -dts_delta_threshold 1 output.mp4
ffmpeg -y -i source_video.avi input -acodec libfaac -ab 128000 -vcodec mpeg4 -b 1200000 -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4

将一段音频与一段视频混合

1
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg

将一段视频转换为DVD格式

1
ffmpeg -i source_video.avi -target pal-dvd -ps 2000000000 -aspect 16:9 finale_video.mpeg

转换一段视频为DivX格式

1
ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi

udp视频流的推送

1
ffmpeg -re  -i 1.ts  -c copy -f mpegts   udp://192.168.0.106:1234

视频拼接

裸码流的拼接,先拼接裸码流,再做容器的封装

1
ffmpeg -i "concat:test1.h264|test2.h264" -vcodec copy -f h264 out12.h264

截取一张352x240尺寸大小的,格式为jpg的图片

1
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg

把视频的前30帧转换成一个Animated Gif

1
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif

截取指定时间的缩微图,-ss后跟的时间单位为秒

1
ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg

转换wav到mp2格式

1
ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0
Author

jiangyao

Posted on

2021-06-12

Updated on

2022-10-17

Licensed under