代码结构
-
libavcodec : 提供了一系列的编码器的实现
-
libavformat : 实现流的协议, 容器格式以及IO操作
-
libavutil : 包括了hash器, 解码器和各种工具函数
-
libavfilter : 提供了各种音视频过滤器
-
libavdevice : 提供了访问捕获设备和回放设备的接口
-
libswresample : 实现了混音和重采样
-
libswscale : 实现了色彩转换和缩放的功能
基本概念
-
多媒体文件其实是个容器
-
在容器里有很多流(stream/track)
-
每种流是由不同的编码器编码的
-
从流中读出的数据成为“包”
-
在一个包中包含着一个或多个帧
几个重要的结构体
AVFormatContext : 上下文
AVStream : 流
AVPacket : 数据包
操作数据流的基本步骤
-
解复用 : 将某个格式的多媒体文件容器打开
-
获取流
-
读取数据包 (拿到数据包之后就可以进行音视频的处理了)
-
释放资源