rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory( rtc::Thread* network_thread, rtc::Thread* worker_thread, rtc::Thread* signaling_thread, AudioDeviceModule* default_adm, cricket::WebRtcVideoEncoderFactory* encoder_factory, cricket::WebRtcVideoDecoderFactory* decoder_factory)
其中第四个参数为AudioDeviceModule类型的指针变量,AudioDeviceModule类包括了webrtc中所用到的几乎所有的音频采集的接口。当该参数传NULL时,webrtc会在内部建立一个AudioDeviceModule的对象,而对麦克风的设置都为默认值。如果需要对麦克风进行设置,则可以定义一个AudioDeviceModule类型的指针变量,通过调用一系列的接口进行麦克风功能的设置,使用之前记得将头文件引用进来即可:
#include "webrtc/modules/audio_device/include/audio_device.h"
下面给出一段麦克风的枚举、选择以及音量设置的完整代码:
rtc::scoped_refptr<webrtc::AudioDeviceModule> audio2; audio2 = webrtc::AudioDeviceModule::Create(0, webrtc::AudioDeviceModule::kPlatformDefaultAudio); audio2->Init(); int num; int ret; bool is_mute = true; num = audio2->RecordingDevices();//列举麦克风设备数量 printf("Input devices: %d\n", num); //枚举麦克风设备 for (int i = 0; i<num; i++) { char name[webrtc::kAdmMaxDeviceNameSize]; char guid[webrtc::kAdmMaxGuidSize]; int ret = audio2->RecordingDeviceName(i, name, guid); if (ret != -1) { printf("麦克风:%s\n",name); } } ret = audio2->SetRecordingDevice(0);//选择麦克风 audio2->SetMicrophoneVolume(20);//设置音量 audio2->SetMicrophoneMute(is_mute);//设置是否静音 audio2->InitRecording();
文章来源: webrtc native开发-麦克风设置