Fork me on GitHub

ffmpeg常用用法

FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。

官网下载地址: https://www.ffmpeg.org/download.html
ffmpeg支持许多编码格式,下面的命令可以查看其已安装的编码器。

1
ffmpeg -encoders

查看其支持的媒体格式:

1
ffmpeg -formats

主要参数

  • -i——设置输入文件名。
  • -f——设置输出格式。
  • -y——若输出文件已存在时则覆盖文件。
  • -fs——超过指定的文件大小时则结束转换。
  • -t——指定输出文件的持续时间,以秒为单位。
  • -ss——从指定时间开始转换,以秒为单位。
  • -t从-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
  • -title——设置标题。
  • -timestamp——设置时间戳。
  • -vsync——增减Frame使影音同步。
  • -c——指定输出文件的编码。
  • -c copy——直接复制而不经过重新编码(较快)。
  • -metadata——更改输出文件的元数据。
  • -an——去除音频流。
  • -vn——去除视频流。
  • -help——查看帮助信息。

主要用法

查看媒体信息

1
ffmpeg -i input.mp4

转换格式

例如将一个名为input.mp4的视频转成avi格式的视频:

1
ffmpeg -i input.mp4 out.avi

嵌入字幕文件到视频

例如 (subtitle.srt是字幕文件):

1
ffmpeg -i input.mp4 -vf subtitles=subtitle.srt out.mp4

合并音视频

1
ffmpeg -i input.mp4 -i input_audio.mp4 -c copy out.mp4

从视频中移除音频流

使用-an标志移除音频流:

1
ffmpeg -i input.mp4 -an out.mp4

从媒体中移除视频流

使用-vn标志移除视频流:

1
ffmpeg -i input.mp4 -vn out.mp3

这将会把给定媒体文件转为音频文件。

裁剪媒体文件时长

将给定媒体文件从30秒开始剪切20秒,即00:00:30到00:00:50,如下:

1
ffmpeg -i input.mp4 -ss 00:00:30.0 -codec copy -t 20 out.mp4

裁剪视频长宽

从给定视频中从矩形范围裁剪:

1
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4

  • w – 要裁剪的矩形的宽度。
  • h – 矩形的高度。
  • x – 矩形的 x 坐标 。
  • y – 矩形的 y 坐标。

注意:裁剪视频将会影响视频质量。

调整视频播放速度

如果要加快视频播放速度,比如说2倍速:

1
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4

如要降低视频播放速度,则要将setpts设为一个大于1的数。

设置视频高宽比

1
ffmpeg -i input.mp4 -aspect 16:9 output.mp4

常用的高宽比还有4:3,16:10,5:4。

压缩音频文件

可以使用-ab标志来压缩音频文件 (通过降低比特率的值来节省空间):

1
ffmpeg -i input.mp3 -ab 128 output.mp3

一般可用的比特率有:96kbps,112kbps,128kbps,160kbps,192kbps,256kbps,320kbps。

更多用法可以参考ffmpeg -help官方文档