该文主要介绍ffmpeg在iOS平台编译后的几个静态库简介
libavformat
封装格式处理库,主要是解析 MP4,MP3,TS,FLV 等等封装格式,同时 FFmpeg 还自己创建了一些假的封装格式,例如 tee 封装格式,这些假的封装格式只是为了方便 实现 ffmpeg 命令行的功能。tee 就是为了实现 命令行多路输出的语法。
libavcodec
编解码类库,avcodec 实际上是编解码管理器,他定义了一种通用结构来对接其他的编解码器,你可以把很多外部的编解码集成到 avcodec 类库。
libavfilter
音视频滤镜库。有非常多的滤镜可以选择,例如裁剪时间,加水印,画中画,音频倍速。FFmpeg 把一些功能性的函数也会加进去 avfilter 库,例如 转换音频的采样率,声道 都是用 aformat 滤镜实现的。用 aformat 滤镜实现 重采样 会比 用 swresample 更简单。虽然内部也是调的 swresample 。
libavutil
与 音频,视频都相关的工具类,主要函数分为以下几类:
- 流媒体相关的函数,例如 av_frame_get_pkt_duration,av_frame_get_pkt_pos。
- 内存管理函数,例如 av_malloc 跟 av_free 。
- 数学相关的函数,例如 av_mod_i,av_mul_q。
- FFmpeg 通用数据结构管理函数,例如 av_opt_find。
- 线程相关函数,例如 av_thread_message_queue_alloc。
libavdevice
设备处理类库,主要处理各种设备的输入信息,例如摄像头,麦克风,抓屏。
libswscale
视频数据 处理类库,例如提供了 sws_scale 函数来做 像素格式和分辨率的转换,还有一些处理视频的滤波函数。sw 应该是 SoftWare 的缩写。
libswresample
音频数据 处理类库,例如提供了 swr_convert 函数 来实现 音频数据的重采样。