[视频] FFMpeg 基本组成和入门示例
阅读原文时间:2023年07月13日阅读:1

目录

  • FFmpeg基本组成

  • 编解码工具 ffmpeg.exe

  • 播放器 ffplay.exe

  • 多媒体分析器 ffprobe

  • AVFormat

    封装了大多数媒体格式:如MP4、FLV等文件格式,RTMP、RTSP、MMS、HLS等网络协议。

  • AVCodec

    支持常见编解码格式:MPEG4、AAC等。支持第三方:

    • H.263(AVC)->需x264编码器;
    • H265(HEVC)->需x265编码器;
    • MP3(mp3lame)->需libmp3lame编码器;
  • AVFilter

    通用滤镜处理框架。可以有多个输入和多个输出。

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

说明:

  • AVDevice

  • AVUtil

  • swresample

    音频转换计算模块

  • swscale

    视频图像转换计算模块

    ffmpeg -i 1.mp4 2.avi

  • -i 参数将1.mp4作为输入源

  • mp4和avi是两种文件封装格式,但不是后缀名就可以决定的。

    ffmpeg -i 1.mp4 -f avi 2.dat

  • -f进行约束,指定了输出文件的容器格式,其过程和上一个命令一样,仅仅输出的文件名不同。

ffmpeg.exe的工作流程

  1. ffmpeg读取输入源文件
  2. 将音视频包Demuxer(解封装),调用libavformat中的接口即可
  3. Decoder(解码)每一帧音视频数据,成为YVU或者PCM这样的数据,通过libavcodec中的接口即可
  4. 转换参数
  5. Encoder(编码)对应数据,依然通过libavcodec中的接口来实现
  6. 然后通过libavformat中的接口进行Muxer(封装)
  7. 输出到目标,文件或数据流

可以通过下面的命令查看默认支持格式

ffmpeg -formats

查看支持的编解码情况

ffmpeg -codecs
ffmpeg -encoders
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

输出信息的第一列包含6个字段:

  1. 表示这个编码器是视频、音频还是字幕;
  2. 表示帧级别的多线程支持;
  3. 表示分片级别的多线程支持;
  4. 表示为试验版本;
  5. draw_horiz_band模式支持;这是一个数据结构;
  6. 直接渲染模式支持;

查看支持哪些滤镜

ffmpeg -filters

查看flv解封装器的参数支持

ffmpeg -h demuxer=flv

查看H.264的编码器的参数支持

ffmpeg -h encoder=h264

查看过滤器的参数支持

ffmpeg -h filter=colorkey

这个一般我们用来做测试工具

ffprobe -show_streams 1.mp4

附加一个小例子

ffmpeg -i 2.avi -vcodec mpeg4 -b:v 200k -r 15 -an 15.mp4

说明:

  • 参数b为音频和视频的码率,可以认为是两者加起来的码率。默认200kbit/s

    可以工具b:v设置视频码率,b:a设置音频码率

  • 参数r为视频帧率fps

  • 参数an,转码后的文件不包括音频

改变分辨率

ffmpeg -i 1.mp4 -vf scale=320:240 2.mp4

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章