FFmpeg 是用于转换音频和视频文件的非常强大和通用的命令行工具。它是免费的,适用于 Windows,Mac 和 Linux 系统。无论您要加入两个视频文件,从视频文件中提取音频组件,将视频转换为动画 GIF,FFmpeg 可以做到这一切,甚至更多。
FFmpeg 支持所有流行的音频和视频格式。或者,您可以运行命令./ffmpeg -formats 来获取 FFmpeg 安装支持的每种格式的列表。如果你刚刚开始,这里有一些命令可以帮助你了解这个工具的功能。
FFmpeg 获取视频信息
查看本地视频文件信息示例:
1
|
ffmpeg –i video.avi
|
查看远程 Web 网络视频信息示例:
1
|
ffmpeg –i http://www.xxxxx.com/videofiles/20210314/622489518.f4v.mp4
|
FFmpeg 分离视频音频流
对视频流内容分离示例:
1
|
ffmpeg –i input_file –vcodec copy –an output_file_video
|
对视频音频流分离示例:
1
|
ffmpeg –i input_file –acodec copy –vn output_file_audio
|
FFmpeg 视频转码
.ts 视频格式转 .mp4 格式示例:
1
|
ffmpeg –i test.ts –acodec copy –vcodec copy –f mp4 output.mp4
|
.h264 视频格式转 .ts 视频格式示例:
1
|
ffmpeg –i test.h264 –vcodec copy –f mpegts output.ts
|
.h264 视频格式转 .mp4 视频格式示例:
1
|
ffmpeg –i test.h264 –vcodec copy –f mp4 output.mp4
|
.mp4 格式视频转 .flv 格式视频示例:
1
|
ffmpeg –i test.mp4 –b:v 640k output.flv
|
.mp4 视频格式转 .flv 视频格式示例:
1
|
ffmpeg –i test.mp4 –acodec copy –vcodec copy –f flv output.flv
|
.flv 视频格式转 .mp4 视频格式示例:
1
|
ffmpeg –i test.flv –b:v 640k output.mp4
|
.mp4 视频格式转 .3gp 视频格式示例:
1
|
ffmpeg –i test.mp4 –s 176×144 –vcodec h263 –r 25 –b 12200 –ab 12200 –ac 1 –ar 8000 output.3gp
|
.avi 视频格式转 .3gp 视频格式示例:
1
|
ffmpeg –i test.avi –s aqif –vcodec –acodec mp3 –ac 1 –ar 8000 –r 25 –ab 32 –y output.3gp
|
.3gp 视频格式转 .flv 视频格式示例:
1
|
ffmpeg –i test.3gp –f avi –vcodec xvid –acodec mp3 –ar 22050 output.avi
|
.flv 视频格式转 .3gp 视频格式示例:
1
|
ffmpeg –i test.flv –s 176×144 –vcodec h263 –r 25 –b 200 –ab 64 –acodec mp3 –ac 1 –ar 8000 output.3gp
|
.mp4 视频格式转 .avi 视频格式示例:
1
|
ffmpeg –i test.mp4 output.avi
|
.flv 视频格式转 .mp4 视频格式示例:
1
|
ffmpeg –i test.flv –vcodec h264 –r 25 –b 200 –ab 128 –acodec mp3 –ac 2 –ar 44100 output.mp4
|
.mp4 视频格式转 .flv 视频格式示例:
1
|
ffmpeg –i test.mp4 –c:v libx264 –ar 22050 –crf 28 output.flv
|
.avi 视频格式转 .mp4 视频格式示例:
1
|
ffmpeg –i test.avi –c copy –map 0 output.mp4
|
.m3u8 视频格式转 .mp4 视频格式示例:
1
|
ffmpeg –i http://www.xxxx.com/2021/0412/6524915458.ssm/6524915458.m3u8 -c copy -bsf:a aac_adtstoasc -movflags +faststart test.mp4
|
.mkv 视频格式转 .mp4 视频格式示例:
1
|
ffmpeg –i test.mkv –y –vcodec copy –acodec copy output.mp4
|
.mkv 视频格式转 .avi 视频格式示例:
1
|
ffmpeg –i test.mkv –vcodec copy –acodec copy output.avi
|
FFmpeg 图像处理
截取指定时间缩略图(-ss 后跟的时间单位是秒)
1
|
ffmpeg –i test.mp4 –y –f image2 –ss 8 –t 0.001 –s 350×240 testImage.jpg
|
添加图片水印
1
|
ffmpeg –i input.mp4 –vf “movie=logo.png [logo]; [in][logo] overlay=10:10:1 [out]” output.mp4
|
添加图片水印
1
|
ffmpeg –i input.mp4 –i logo.png –filter_complex overlay test1.mp4
|
添加图片水印
1
|
ffmpeg –i input.mp4 –acodec copy–vcodec copy –vf “movie=test.png[watermark];[in][watermark]overlay=10:10:1[out]” output.mp4
|
添加 GIF 文件
1
|
ffmpeg –y –i test2.mp4 –ignore_loop 0 –i test.gif –filter_complex overlay=0:H–h test_out2.mp4
|
添加文本水印
1
|
ffmpeg –i input.flv –vf “drawtext=fontfile=simhei.ttf: text=’您的文本’:x=100:y=10:fontsize=24:fontcolor=yellow:shadowy=2” drawtext.mp4
|
FFmpeg 视频方向处理
旋转 90 度
1
|
ffmpeg –i test.mp4 –metadata:s:v rotate=“90” –codec copy out.mp4
|
顺时针旋转 90 度
1
|
ffmpeg –i test.mp4 –vf “transpose=1” out.mp4
|
逆时针旋转 90 度
1
|
ffmpeg –i test.mp4 –vf “transpose=2” out.mp4
|
顺时针旋转 90 度后再水平翻转
1
|
ffmpeg –i test.mp4 –vf “transpose=3” out.mp4
|
逆时针旋转 90 度后再水平翻转
1
|
ffmpeg –i test.mp4 –vf “transpose=0” out.mp4
|
水平翻转视频
1
|
ffmpeg –i test.mp4 –vf hflip out.mp4
|
垂直翻转视频
1
|
ffmpeg –i test.mp4 –vf vflip out.mp4
|
FFmpeg 视频剪切
提取图像
1
|
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg
|
-r 提取图像的频率,-ss 开始时间,-t 持续时间
1
|
ffmpeg –ss 0:1:30 –t 0:0:20 –i input.avi –vcodec copy –acodec copy output.avi
|
从 10s 处开始剪切,持续 15 秒(此方法有时候会遇到视频第一帧黑屏,就是未播放时候的封面是黑色的,原因是未定位到关键帧 I 帧)。
1
|
ffmpeg –i test.mp4 –ss 10 –t 15 –codec copy cut.mp4
|
从 10s 处开始剪切,持续 15 秒(此方法为优化后的方法,此剪切视频的方法可以解决第一帧黑屏问题,但是可能切割的时间落点稍稍的有一丢丢的不准确,但是应该可以落在误差范围之内)。
1
|
ffmpeg –ss 10 –t 15 –i test.mp4 –codec copy cut.mp4
|
FFmpeg 倒放音&加速&减速视频
视频倒放:无音频
1
|
ffmpeg.exe –i inputfile.mp4 –filter_complex [0:v]reverse[v] –map [v] –preset superfast reversed.mp4
|
视频倒放:音频不变
1
|
ffmpeg.exe –i inputfile.mp4 –vf reverse reversed.mp4
|
音频倒放:视频不变
1
|
ffmpeg.exe –i inputfile.mp4 –map 0 –c:v copy –af “areverse” reversed_audio.mp4
|
音视频同时倒放
1
|
ffmpeg.exe –i inputfile.mp4 –vf reverse –af areverse –preset superfast reversed.mp4
|
视频加速:帧速率变为 2 倍,调整倍速范围(0.25,4)
1
|
ffmpeg –i inputfile.mp4 –vf setpts=PTS/2 –af atempo=2 output.mp4
|
视频减速播放
1
|
ffmpeg –i input.mkv –an –filter:v “setpts=0.5*PTS” output.mkv
|
FFmpeg 命令格式:
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
ffmpeg [[options][`-i’ input_file]]… {[options] output_file}…
h264:表示输出的是 h264 的视频裸流
mp4:表示输出的是 mp4 的视频
mpegts:表示 ts 视频流
FFmpeg 参数:
-i 设置输入流
-f 设置输出格式
-ss 开始时间
FFmpeg 视频参数:
-b 设置视频流量,默认为 200Kbit/s
-r 设置帧速率,默认为 25
-s 设置画面的宽与高
-aspect 设置画面的比例
-vn 不处理视频
-vcodec 设置视频编解码器,未设定时则使用与输入流相同的编解码器,一般后面加 copy 表示拷贝。
FFmpeg 音频参数:
-ar 设置采样率
-ac 设置声音的声道数
-acodec 设置声音编解码器,未设定时则使用与输入流相同的编解码器,一般后面加 copy 表示拷贝。
-an 不处理音频