最近做AAC的相关开发,而最早接触的,自然是ffmpeg,从ffmpeg中得知有libfaac这个开源库。而之前实现的一些HLS的功能,基于ffmpeg以及libfaac可以完成所有的功能实现。而现如今要做的是一个aac的编解码操作。而对ffmpeg有所了解后,个人评估直接调用aac相关的功能库,而不通过ffmpeg,原因是因为编解码操作其实是很频繁的,而如果调用ffmpeg的API,是可以有效的对音频进行抽象,后续需要替换库,则仅仅是将ffmpeg进行重新编码。但是也由于多了ffmpeg这一层的适配层。导致性能有所下降。因此考虑了直接基于libfaac进行开发。
但是,在后续学习aac的时候,找到了另外的一个库:fdk-aac,这个库比libfaac还“年轻”。年轻有年轻的优势,但是也有年轻的缺点。因此这里对这两个库进行一个简单的对比。
编码器 | Bitrate modes |
Audio Object Types | Channels | 解码支持 | |||||
---|---|---|---|---|---|---|---|---|---|
CBR | VBR | LC | HEv1 (SBR) | HEv2 (SBR+PS) | LD | ELD | |||
fdk-aac | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 8(7.1) | 支持 |
FAAC | 非真正的CBR | 支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 6(5.1) | 需要配合FAAD才能支持 |
根据上表格来看,fdk-aac单直接使用其API就可以完成编解码的业务,并且支持Audio Object Types更加全面,作为一个新的库,有更加良好的发展前景!因此选择使用fdk-aac进行aac的编解码开发。
参考资料:
转载请注明: 转载自elkPi.com
本文链接地址: libfaac vs fdk-aac