FFmpeg常用命令
1. 基础命令
① ffmpeg的帮助信息
ffmpeg -h # 精简的帮助信息 ffmpeg -h long # 主要的帮助信息 ffmpeg -h full # 全面的帮助信息
重定向到文件,用beyond compare软件可以对比上面参数内容差异。
② ffplay的帮助信息
命令和ffmpeg是一样的,选项内容有些是和ffmpeg重复的。
③ ffprobe
ffprobe -h 有部分和ffmpeg是一样的。
可见部分参数一样,部分参数不一样,使用的时候要注意区分。
2. 便捷命令
ffmpeg -h | findstr 264 # 查找和h264相关的所有选项。注意,windows是用findstr命令代替grep。重定向,管道等和linux是一样的。
3. 转码示例
ffmpeg -i test.mp4 -acodec copy -vcodec libx264 -s 1280x720 test.flv # 将test.mp4转为H.264编码的flv格式 ffmpeg -i test.mp4 -acodec copy -vcodec libx265 -s 1280x720 test.mkv # 将test.mp4转为H.265编码的mkv格式
音频流是用的copy的模式,只需要考虑视频流。
下图对该命令的转码流程进行了分析:

可见,专门的过程只是在解码后,解码后需要重新编码。这就是视频转码的复杂之处。
Demuxer是从一个输入分离出音频和视频,Muxer是把音频和视频合并到一个输出。
必须对该流程非常熟悉,后面的命令都是围绕这个基本的流程。
4. 详细
ffmpeg -version ffmpeg -buildconf #显示编译的配置 ffmpeg -format #显示可用的格式(muxers+demuxers) ffmpeg -muxers #显示可用的复用器 ffmpeg -demuxers #显示可用的解复用器 ffmpeg -h muxer=flv ffmpeg -h demuxer=flv ffmpeg -codecs #显示可用的编解码器(encoders+decoders) ffmpeg -encoders ffmpeg -decoders ffmpeg -h encoder=h264 ffmpeg -h decoder=h264 ffmpeg -filters #加logo,水印等 ffmpeg -pix_fmts #显示像素格式 ffmpeg -pix_fmts ffmpeg -simple_fmts #显示可用的音频采样格式 ffmpeg -colors ffmpeg -i input.avi -vcodec mpeg4 -b:v 200k -r 15 -an output.mp4
显示格式:
ffmpeg -formats,选项前面如果带D、E表示该选项可以支持解复用、解复用。
![]()
ffmpeg -formats | findstr flv ffmpeg -muxers | findstr flv ffmpeg -demuxers | findstr flv
使用以上命令可见,formats = muxer + demuxer
ffmpeg -devices:
Devices: D. = Demuxing supported .E = Muxing supported -- D dshow DirectShow capture # 支持摄像头、麦克风的录制 D gdigrab GDI API Windows frame grabber D lavfi Libavfilter virtual input device # 虚拟的输入设备,用来做测试 E sdl,sdl2 SDL2 output device # 输出设备,播放视频用sdl库作为输出 D vfwcap VfW video capture # 摄像头的采集
ffmpeg -codecs:
Codecs: D..... = Decoding supported # 解码器 .E.... = Encoding supported # 编码器 ..V... = Video codec # 视频编解码器 ..A... = Audio codec # 音频编解码器 ..S... = Subtitle codec # 字幕编解码器 ...I.. = Intra frame-only codec # 内部帧编解码器(每帧不需要参考,独立编解码) ....L. = Lossy compression # 有损压缩 .....S = Lossless compression # 无损压缩
ffmpeg -decoders:
Decoders: V..... = Video # 视频流 A..... = Audio # 音频流 S..... = Subtitle # 字幕流 .F.... = Frame-level multithreading # 帧级多线程处理 ..S... = Slice-level multithreading # 片级多线程处理 ...X.. = Codec is experimental ....B. = Supports draw_horiz_band .....D = Supports direct rendering method 1
ffmpeg -protocols:
注意Input和Output所支持的协议可能不一样。findstr能搜到两个说明都是支持的。
ffmpeg -filters:
Pixel formats: I.... = Supported Input format for conversion .O... = Supported Output format for conversion ..H.. = Hardware accelerated format ...P. = Paletted format ....B = Bitstream format FLAGS NAME NB_COMPONENTS BITS_PER_PIXEL ----- IO... yuv420p 3 12 # 平均下来1.5个字节,就是12bit IO... yuyv422 3 16 IO... rgb24 3 24 # 三个字节,24bit IO... bgr24 3 24 IO... yuv422p 3 16 IO... yuv444p 3 24 IO... yuv410p 3 9 IO... yuv411p 3 12 IO... gray 1 8 # 只有一种成分,就是1Byte IO..B monow 1 1 IO..B monob 1 1
ffmpeg -layouts:
Individual channels: NAME DESCRIPTION FL front left # 前置左声道 FR front right # 前置右声道 FC front center # 前置中间声道 LFE low frequency BL back left BR back right FLC front left-of-center FRC front right-of-center BC back center SL side left SR side right TC top center TFL top front left TFC top front center TFR top front right TBL top back left TBC top back center TBR top back right DL downmix left DR downmix right WL wide left WR wide right SDL surround direct left SDR surround direct right LFE2 low frequency 2 Standard channel layouts: NAME DECOMPOSITION mono FC stereo FL+FR 2.1 FL+FR+LFE # LFE就是低音炮 3.0 FL+FR+FC 3.0(back) FL+FR+BC 4.0 FL+FR+FC+BC quad FL+FR+BL+BR quad(side) FL+FR+SL+SR 3.1 FL+FR+FC+LFE 5.0 FL+FR+FC+BL+BR 5.0(side) FL+FR+FC+SL+SR 4.1 FL+FR+FC+LFE+BC 5.1 FL+FR+FC+LFE+BL+BR 5.1(side) FL+FR+FC+LFE+SL+SR 6.0 FL+FR+FC+BC+SL+SR 6.0(front) FL+FR+FLC+FRC+SL+SR hexagonal FL+FR+FC+BL+BR+BC 6.1 FL+FR+FC+LFE+BC+SL+SR 6.1(back) FL+FR+FC+LFE+BL+BR+BC 6.1(front) FL+FR+LFE+FLC+FRC+SL+SR 7.0 FL+FR+FC+BL+BR+SL+SR 7.0(front) FL+FR+FC+FLC+FRC+SL+SR 7.1 FL+FR+FC+LFE+BL+BR+SL+SR 7.1(wide) FL+FR+FC+LFE+BL+BR+FLC+FRC 7.1(wide-side) FL+FR+FC+LFE+FLC+FRC+SL+SR octagonal FL+FR+FC+BL+BR+BC+SL+SR hexadecagonal FL+FR+FC+BL+BR+BC+SL+SR+TFL+TFC+TFR+TBL+TBC+TBR+WL+WR downmix DL+DR
ffmpeg -sample_fmts:
查看音频的采样格式
name depth u8 8 s16 16 # 用的比较多 s32 32 flt 32 # 浮点数 dbl 64 u8p 8 s16p 16 # 和s16是有区别的 s32p 32 fltp 32 dblp 64 s64 64 s64p 64
ffmpeg -colors:
就是给很多RGB都取了个英文名字。
name #RRGGBB AliceBlue #f0f8ff AntiqueWhite #faebd7 Aqua #00ffff Aquamarine #7fffd4 Azure #f0ffff Beige #f5f5dc Bisque #ffe4c4 Black #000000 BlanchedAlmond #ffebcd Blue #0000ff BlueViolet #8a2be2 Brown #a52a2a BurlyWood #deb887
5. 查看具体分类所支持的参数
语法:ffmpeg -h type=name。不用加s,加=,后面给定具体要查的参数,如:
ffmpeg -h muxer=flv ffmpeg -h filter=atempo # 调整音频播放速率的参数 ffmpeg -h encoder=libx264
ffmpeg -encoders | findstr 264 找到264的编码库,使用全名,ffmpeg -h encoder=libx264查看详细条目。

浙公网安备 33010602011771号