FFmpeg

200 阅读1分钟

代码结构

  • libavcodec : 提供了一系列的编码器的实现

  • libavformat : 实现流的协议, 容器格式以及IO操作

  • libavutil : 包括了hash器, 解码器和各种工具函数

  • libavfilter : 提供了各种音视频过滤器

  • libavdevice : 提供了访问捕获设备和回放设备的接口

  • libswresample : 实现了混音和重采样

  • libswscale : 实现了色彩转换和缩放的功能

基本概念

  • 多媒体文件其实是个容器

  • 在容器里有很多流(stream/track)

  • 每种流是由不同的编码器编码的

  • 从流中读出的数据成为“包”

  • 在一个包中包含着一个或多个帧

几个重要的结构体

AVFormatContext : 上下文

AVStream : 流

AVPacket : 数据包

操作数据流的基本步骤

  • 解复用 : 将某个格式的多媒体文件容器打开

  • 获取流 

  • 读取数据包 (拿到数据包之后就可以进行音视频的处理了)

  • 释放资源