语法

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

常用命令

获取版本

ffmpeg -version

获取帮助

ffmpeg -help

获取媒体信息

ffmpeg -i input.mp4 -hide_banner

转换格式

ffmpeg -i input.mp4 output.flv

ffmpeg -i input.mp4 -vcodec copy -acodec copy output.flv

-vcodec copy-acodec copy 表示音视频直接拷贝,无编解码。或者可以写为 -c copy

抽取视频

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

-an 表示无音频。

抽取音频

ffmpeg -i input.mp4 -acodec copy -vn output.aac

-vn 表示无视频。

音视频合并

ffmpeg -i input.h264 -i input.aac -vcodec copy -acodec copy output.mp4

改变音频音量

ffmpeg -i input.mp3 -af volume=0.5 output.mp3

上面的例子会将音量调整为原来的一半。

改变视频分辨率

ffmpeg -i input.mp4 -vf scale=1280:720 -acodec copy output.mp4

ffmpeg -i input.mp4 -vf scale=1280:-1 -acodec copy output.mp4

使用 -1 以保持视频原始宽高比。

视频翻转

ffmpeg -i input.mp4 -vf hflip -acodec copy output.mp4

ffmpeg -i input.mp4 -vf vflip -acodec copy output.mp4

视频旋转

ffmpeg -i input.mp4 -vf transpose=1 -acodec copy output.mp4

上面的例子会将视频顺时针旋转 90°。

视频裁剪

ffmpeg -ss 00:00:10 -i input.mp4 -t 30 -c copy output.mp4

-ss 指定起始时间,-t 指定时长。

值得注意的是,当使用 -c copy 时会出现裁剪不精确的情况。

视频分割为多份

ffmpeg -i input.mp4 -t 10 1.mp4 -ss 00:00:10 -t 10 2.mp4 -ss 00:00:20 -t 10 3.mp4

提取视频图像

ffmpeg -ss 00:00:30 -i input.mp4 -vframes 1 output.jpg