WebRTC支持AAC

WebRTC源码默认不支持AAC,若要在源码里面支持AAC,需要改到以下的源码,目前接入的编码库为faac,解码库为faad2。

1、faac(Android&&iOS)编译,faad2(Android&&iOS)编译

2、在api/audio_codecs添加aac模块,该模块主要是工厂方法,生成aac的sdp,采样率,创建aac编解码器,如下图所示:

2、在api/audio_codecs下的BUILD.gn添加AAC模块,如下图所示:

3、在解码工厂和编码工厂添加AAC编解码,如下图所示:

4、编解码模块实现。

modules/audio_coding/BUILD.gn添加编译源码,如下图所示:

在modules/audio_coding/codecs添加编解码实现代码,如下图所示:

以上为WebRTC添加AAC主要的流程。具体源码后续抽时间贴出。在实现过程中还遇到不少问题,比如时间戳、长度等问题,后续统一整理下。

### 实现 webrtc-streamer 支持 AAC 音频编码 为了使 `webrtc-streamer` 支持 AAC 编码,需修改其源代码并集成相应的编解码库。默认情况下,WebRTC 源码并不支持 AAC 编解码功能[^1]。 #### 修改 WebRTC 源码以支持 AAC 编解码 具体来说,在 WebRTC 中加入对 AAC支持涉及以下几个方面: - **引入外部编解码器**:当前接入的编码库为 faac,而解码库则采用 faad2。这些第三方库需要被正确配置到项目构建环境中。 ```bash git clone https://github.com/koyachi/faac.git cd faac && mkdir build && cd build cmake .. make && sudo make install git clone https://sourceforge.net/projects/faac/files/faad2/ cd faad2 && ./bootstrap ./configure --enable-static --disable-shared make && sudo make install ``` - **调整 CMakeLists.txt 文件**:确保在项目的根目录下的 `CMakeLists.txt` 文件中添加对外部依赖项的支持路径以及链接选项。 ```cmake find_package(PkgConfig REQUIRED) pkg_check_modules(FAAC REQUIRED IMPORTED_TARGET libfaac>=1.0) target_link_libraries(your_target_name PRIVATE PkgConfig::FAAC) add_definitions(-DWEBRTC_CODEC_AAC=1) include_directories(${PROJECT_SOURCE_DIR}/third_party/aac/include/) link_directories(${PROJECT_SOURCE_DIR}/third_party/aac/lib/) ``` - **注册自定义音频处理模块**:通过继承 `AudioEncoderFactoryInterface` 接口创建新的工厂类实例,并重写 Create 方法返回特定类型的编码对象;同样地也需要实现对应的解码部分逻辑。 ```cpp class AACEncoderFactory : public AudioEncoderFactory { std::unique_ptr<AudioEncoder> MakeAudioEncoder( const SdpAudioFormat& format, absl::optional<AudioCodecPairId> codec_pair_id) override; }; void RegisterAACEncoders(WebRtcAudioProcessing* apm, AudioCodingModule* acm){ auto factory = rtc::make_ref_counted<AACEncoderFactory>(); acm->RegisterExternalAudioEncoder(factory.get(), "aac"); } ``` 完成上述更改之后重新编译整个工程即可让 `webrtc-streamer` 应用程序具备处理 AAC 流的能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值