Please enable Javascript to view the contents

FFmpeg 使用简易教程

 ·  ☕ 2 分钟

1. 安装 FFmpeg

macOS 上执行命令:

1
brew install ffmpeg

2. FFmpeg 使用

1
ffmpeg {1} {2} -i {3} {4} {5}

五个部分的参数依次如下:

  1. 全局参数,-y-loglevel-preset 等用来控制的整体行为
  2. 输入文件参数,-i-ss-t-stream_loop 等用来控制输入文件的读入方式
  3. 输入文件,要处理的音视频输入文件路径
  4. 输出文件参数,-c:v-c:a-vf-af 等,用来控制输出的编码、过滤方式
  5. 输出文件,处理后的输出音视频文件路径

常见输出参数:

-vcodec 指定视频编码器,copy 表示只做拷贝,不做编解码

-acodec 指定音频解码器,copy 表示只做拷贝,不做编解码

使用 copy 参数时,由于不做编解码,效率快很多。如果输入文件和输出文件的编码格式不一致,就会报错。另外,FFmpeg 会根据文件的后缀名猜测出封装格式。

3. 一些使用场景

  • 查看视频信息
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ffmpeg -i input.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Duration: 00:01:03.11, start: 0.000000, bitrate: 257 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 210 kb/s, 30 fps, 30 tbr, 16k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 39 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

其包含两个流数据,一个是 h264 编码的视频流,一个是 aac 编码的音频流。

  • 分离音频
1
ffmpeg -i input.mp4 -vn -acodec copy output.aac

-vn 表示不处理视频流,-acodec copy 表示直接拷贝音频流,不做编解码。

  • 转换音频格式
1
ffmpeg -i output.aac output.mp3
  • 分离视频
1
ffmpeg -i input.mp4 -an -vcodec copy output.h264
  • 转换视频格式
1
ffmpeg -i output.h264 output.mkv
  • 合并音视频
1
ffmpeg -i output.h264 -i output.aac output-2.mp4

4. 参考


微信公众号
作者
微信公众号