【专题29:音视频】 之 【4.ffmpeg介绍】

1.概述

  FFMPEG的视音频编解码功能确实太强大了,几乎囊括了现存所有的视音频编码标准,因此只要做视音频开发,几乎离不开它。主要用FFmpeg来做解码,编码一般使用硬编码。

(1)使用FFMPEG作为内核视频播放器:
Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音…

(2)使用FFMPEG作为内核的Directshow Filter:
ffdshow,lav filters…

(3)使用FFMPEG作为内核的转码工具:
ffmpeg,格式工厂…

2.FFmpeg一共包含8个库:

  • avcodec:编解码(最重要的库)。
  • avformat:封装格式处理。
  • avfilter:滤镜特效处理。avdevice:各种设备的输入输出。
  • avutil:工具库(大部分库都需要这个库的支持)。
  • postproc:后加工。
  • swresample:音频采样数据格式转换。
  • swscale:视频像素数据格式转换。

3.FFmpeg解码流程图

【专题29:音视频】 之 【4.ffmpeg介绍】

  • av_register_all():注册所有组件。
  • avformat_open_input():打开输入视频文件。
  • avformat_find_stream_info():获取视频文件信息。
  • avcodec_find_decoder():查找解码器。
  • avcodec_open2():打开解码器。
  • av_read_frame():从输入文件读取一帧压缩数据。
  • avcodec_decode_video2():解码一帧压缩数据。
  • avcodec_close():关闭解码器。
  • avformat_close_input():关闭输入视频文件。