Ffmpeg命令收集
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
ffmpeg 是一款非常快速的视频和音频转换器, 是开源项目 FFmpeg (Fast Forward moving pictures expert group) 的命令行程序。 它可以在任意采样率之间转换,并通过高质量的多相滤波器实时调整视频大小。
_______ ______________
| | | |
| input | demuxer | encoded data | decoder
| file | ---------> | packets | -----+
|_______| |______________| |
v
_________
| |
| decoded |
| frames |
|_________|
________ ______________ |
| | | | |
| output | <-------- | encoded data | <----+
| file | muxer | packets | encoder
|________| |______________|
其中, demuxer 为解复用器, muxer 为复用器;
decoder 为解码器, encoder 为编码器
音频格式转换
- 转MP3为wav
ffmpeg -i input.mp3 -acodec pcm_s16le -ac 2 -ar 44100 output.wav
- 转m4a为wav
ffmpeg -i input.m4a -acodec pcm_s16le -ac 2 -ar 44100 output.wav
- wav与PCM的相互转换
ffmpeg -i input.wav -f s16le -ar 44100 -acodec pcm_s16le output.raw
- PCM转wav
ffmpeg -f s16le -ar 44100 -ac 2 -acodec pcm_s16le -i input.raw output.wav
或
ffmpeg -y -f s16le -ar 16k -ac 1 -i input.raw output.wav
- 用ffplay播放PCM
ffplay -f s16le -ar 44100 -ac 2 **.raw
s16le表示:s表示有符号,l表示小端。 可以用 s16be代替,表示s有符号b表示大端。 可通过 ffmpeg -formats查看
- PCM 音频格式如: s16le (signed 16 bits little endian, 有符号 16 位小端)
- 44100代表采样率,注意保持一致,可以是16000/8000…
- -y 表示无需询问,直接覆盖输出文件
- -f s16le 用于设置文件格式为 s16le
- -ar 16k 用于设置音频采样频率为 16k
- -ac 1 用于设置通道数为 1
- -i input.raw 用于设置输入文件为 input.raw
- -acodec 用于设置音频的编码器和解码器(codec, 即 coder-decoder 的混成词). 也是参数 -codec:a 的别名, 其中a表示 audio.
- 将视频格式MP4转为H264格式
ffmpeg -i test.mp4 -c copy test.h264
或者
ffmpeg -i test.mp4 -c h264 test.h264
使用 ffplay 播放音频
$ ffplay [options] [input_url]
- 播放 s16le 格式的 PCM 文件 input.raw
$ ffplay -f s16le -ac 1 -ar 16k -i input.raw
- 播放 wav 格式文件
$ ffplay -i input.wav