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查看详细条目。

 

posted @ 2020-07-11 12:14  AlexOne  阅读(791)  评论(0)    收藏  举报