AV多媒体组件(libav.md)
简介
libav是一个轻量级的多媒体组件,主要包含AV基础框架、播放器和音频服务三部分。其中AV框架采用典型的4层多媒体模型设计及面向对象的思想开发,使得用户在此基础上易于复用与扩展。
av组件中内置了一个播放器的实现,可以播放wav、mp3、m4a、amrnb、amrwb、flac、adts、opus、speex、adpcm_ms、alaw、mulaw等多种常见音频格式。同时基于播放器和YoC微服务(uService)架构实现了音频服务,支持提示音、语音合成(TTS)、音乐播放的状态切换与维护等功能,方便上层应用开发。
用户可以分别基于音频服务、播放器和AV基础框架三个不同层次开发和扩展多媒体相关功能。若需要扩展媒体格式或仅使用组件中的某一个模块,请参考AV组件适配对接文档。这三个层次之间的关系如下图所示:
主要代码层次结构
.
├── aef
├── avcodec
├── avfilter
├── avformat
├── avutil
├── icore
├── include
├── mca
├── media
├── output
├── player
├── stream
├── swresample
└── tfft
各文件夹的具体说明如下表所示:
状态 | 描述 |
---|---|
aef | 音效相关,当前包含sona音效算法(需商务合作)和核间音效(算法与播放器不在同一核上) |
avcodec | AV框架中编解码相关,主要用于mp3、aac、amr、flac等格式的解码 |
avfilter | AV框架中定义一套过滤器机制。各filter串联,用于重采样、单双通道等处理 |
avformat | AV框架中封装格式相关,主要用于mp3、m4a、wma等封装格式的demux处理 |
avutil | AV相关的通用函数实现等,如fifo、url解析、http client等 |
icore | 相关核间算法的对接实现,包含核间解码、音效、重采样、fft实现等(针对多核运算场景) |
include | av组件对外提供的头文件 |
mca | mca加速器实现,包含IIR滤波器等功能(硬件相关) |
media | 基于YoC微服务和播放器的音频服务的实现,支持语音合成、提示音等播放和状态切换 |
output | 音视频输出实现,当前包含类似alsa接口的音频输出实现。用户可安装ao定义进行扩展 |
player | 播放器的实现,其依赖于AV框架中的各个层次的模块 |
stream | AV框架中媒体接入层实现,当前包含http、file、mem、fifo取流实现等 |
swresample | 包含单双通道转换、多种音频重采样(含本地/核间重采样)等功能实现 |
tfft | 傅里叶变换接口封装及实现等。用户可基于此切换使用本地/核间fft功能 |