1. 安装 FFmpeg
macOS 上执行命令:
2. FFmpeg 使用
1
| ffmpeg {1} {2} -i {3} {4} {5}
|
五个部分的参数依次如下:
- 全局参数,
-y
、-loglevel
、-preset
等用来控制的整体行为 - 输入文件参数,
-i
、-ss
、-t
、-stream_loop
等用来控制输入文件的读入方式 - 输入文件,要处理的音视频输入文件路径
- 输出文件参数,
-c:v
、-c:a
、-vf
、-af
等,用来控制输出的编码、过滤方式 - 输出文件,处理后的输出音视频文件路径
常见输出参数:
-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. 参考