FFMPEG基本入门

1.前言

  FFMPEG是特别强大的专门用于处理音视频的开源库。可以使用它的API对音视频进行处理,也可以使用它提供的工具,如ffmpeg(编解码工具),ffplay(播放器),ffprobe(内容分析工具),来编辑你的音视频文件。

2.FFmpeg基本概念

  音、视频流:在音视频领域,我们把一路音/视频称为一路流。如我们小时候经常使用VCD美国大片时,在里边可以选英语和国语,其实就是CD视频文件中存放了两路音频流,用户可以选择一路进行播放。

  容器:我们一般把MP4、FLV、MOV等文件称之为容器。也就是这些常用格式文件中,可以存放多路音频文件。以MP4为例,就可以存放一路视频流,多路音频流,多路字幕流。

  channel:channel是音频中的概念,称之为声道。在一路音频流中,可以有单声道,双声道或立体声。

3.ffmpeg工作流程

  ffmpeg的主要工作流程,具体如下:

     1. 解封装(Demuxing)
     2. 解码(Decoding)
     3. 编码(Encoding)
     4. 封装(Muxing)

  其中需要经过6个步骤,具体如下:
    1).读取输入源
    2).进行音视频解封装
    3).解码每一帧音视频数据
    4).编码每一帧音视频数据
    5).进行音视频的重新封装
    6).输出目标

  ffmpeg整体处理的工作流程和步骤图:

  由图的工作流程可以看出,ffmpeg首先读取输入源;然后通过Demuxer将音视频包进行解封装,这个动作通过调用libavformat中的接口即可实现;接下来通过Decoder进行解码,将音视频通过Decoder解包成为YVU或者PCM这样的数据,Decoder通过libavcodec中的接口即可实现;然后通过Encoder将对应的数据进行编码,编码可以通过libavcodec中的接口来实现;接下来将编码后的音视频数据包通过Muxer进行封装,Muxer封装通过libavformat中的接口即可实现,输出称为输出流。

4.FFmpeg目录及其作用

  libavcodec:提供一系列编码器的实现。
  libavformat:实现在流协议,容器格式及其IO访问。
  libavfilter:包括了hash器,解码器和各类工具函数。
  libavfilter:提供了各种音视频过滤器。
  libavdevice:提供了访问捕获设备和回访设备的借口。
  libwresample:实现了婚音和重采样。
  libswscale:实现了色彩转换和缩放功能。

5.FFmpeg命令分类

  1.基本信息查询
  2.录制
  3.分解/复用
  4.处理原始数据
  5.滤镜
  6.切割与合并
  7.图/视互转
  8.直播相关

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章