c++ - webRTC c++中有自定义音频源的功能吗?
问题描述
我正在使用 android 应用程序本机代码,并且正在使用一些音频文件和音频处理。我需要将音频数据(原始音频帧)发送到 webRTC。但我无法找到 webRTC 的任何 API 来添加自定义音频源(不是像麦克风这样的默认音频源)。
我知道我需要添加 AudioTrackInterface,为此我需要添加 AudioSourceInterface。
解决方案
此方法适用于 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
运行并提供音频数据作为录制设备并接收数据作为播放设备。