首页 > 解决方案 > webRTC c++中有自定义音频源的功能吗?

问题描述

我正在使用 android 应用程序本机代码,并且正在使用一些音频文件和音频处理。我需要将音频数据(原始音频帧)发送到 webRTC。但我无法找到 webRTC 的任何 API 来添加自定义音频源(不是像麦克风这样的默认音频源)。

我知道我需要添加 AudioTrackInterface,为此我需要添加 AudioSourceInterface。

标签: c++webrtc

解决方案


此方法适用于 WebRTC 66 版。它不是那么简单,也许不清楚,但它确实有效。我试图解释主要思想:

我继承webrtc::AudioDeviceModule并覆盖了一些模拟“虚拟音频设备”以进行虚拟播放和录制的方法。在调用时,我只调用标准AudioDeviceModule基本方法并进行一些修改:

int16_t PlayoutDevices()=> 调用 base 方法,但返回 base + 1

int16_t RecordingDevices()=> 返回基数 + 1

int32_t PlayoutDeviceName=> 返回我的虚拟设备名称和 GUID

int32_t RecordingDeviceName=> 返回我的虚拟设备名称和 GUID

void SendFrameP=> 返回我的虚拟设备音频数据

void ReceiveFrameP=> 使用我的虚拟设备接收到的音频数据

等方法 => 只看webrtc::AudioDeviceModule实现。

然后您可以使用自己的AudioDeviceModule作为参数来webrtc::CreatePeerConnectionFactory运行并提供音频数据作为录制设备并接收数据作为播放设备。


推荐阅读