0%

【FFmpeg使用】FFmpeg的组成

FFmpeg的组成

FFmpeg的组成

  1. 封装模块AVFormat

    封装格式可以理解为一种将音频流和视频流组装起来的协议,实现音频与视频的同步。如,MP4,FLV等。

    AVFormat模块实现了绝大多数的封装格式,可以进行封装和解封装。同时,可以自定义自己的封装格式。

  2. 编解码模块AVCodec

    编码格式可以理解为一种将音频或者视频进行压缩的协议,减少文件大小,提高传输效率。如,MP3,H.265等。

    AVCodec模块实现了绝大多数的编码格式,可以进行编码和解码。

  3. 滤镜模块AVFilter

    AVFilter模块提供了一个通用的音频、视频、字幕等滤镜处理框架。下面是一个滤镜处理的例子.

    对应的命令行如下所示:

    1
    ./ffmpeg -i INPUT -vf "split [mian][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT

    split滤镜 将视频流分割,并将第二部分打上[tmp]标签;

    crop滤镜 根据给定参数,对视频进行裁剪 ;

    vflip滤镜 根据给定参数,对视频进行纵坐标调换操作,打上flip标签;

    overlay滤镜 将一路输入覆盖到另一路之上,合并输出为一路视频 。

  4. 视频图像转换计算模块swscale

    swscale模块提供高级的图像转换API ,例如,可以实现1080P转720P的图片缩放, YUV转RGB的图片格式转换。

  5. 音频转换计算模块swresample

    swresample模块提供高级的音频重采样API,可以实现音频采样,音频通道布局转换等。

编解码工具ffmpeg的使用

ffmpegFFmpeg编译后生成的一个可执行文件,下面一个例子介绍该工具的使用。

1
ffmpeg -i input.mp4 -f avi output.avi

该命令将MP4格式的文件转换为AVI格式的文件,通过-i参数获取输入源,通过-f参数规定输出格式

ffmpeg的主要工作流程包括:

  • Demuxing(解封装)
  • Decoding(解码)
  • Encoding(编码)
  • Muxing(封装)

转换步骤如下图

播放器工具ffplay的使用

ffplay也是FFmpeg编译后生成的一个可执行文件,提供了音视频显示和播放相关的图像信息、音频的波形信息等。

多媒体分析器ffprobe的使用

ffplay也是FFmpeg编译后生成的一个可执行文件,可以从媒体文件或者媒体流中获取媒体信息,比如音频的参数、视频的参数等等。