主要参数
-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
|