如何使用AnyChat进行音量控制?
AnyChat提供了音量控制的API接口(BRAC_AudioGetVolume、BRAC_AudioSetVolume),定义如下:
01.// 音频设备定义
02.enum BRAC_AudioDevice{
03. BRAC_AD_WAVEIN =0, ///< 输入设备:Mic
04. BRAC_AD_WAVEOUT, ///<输出设备:Wave
05.};
06.// 获取指定音频设备的当前音量
07.DWORD BRAC_AudioGetVolume(BRAC_AudioDevicedevice, DWORD& dwVolume);
08.// 设置指定音频设备的音量
09.DWORD BRAC_AudioSetVolume(BRAC_AudioDevicedevice, DWORDdwVolume);
其中第一个参数是指需要获取(或设置)的音量类型,如控制录音音量(BRAC_AD_WAVEIN)或是控制播放音量(BRAC_AD_WAVEOUT)。
默认情况下,调用前面的音量控制API接口将是控制系统全局的音量(*),如希望实现当前应用程序的音量控制不影响系统全局的音量,则可通过API切换到软件音量控制模式(初始化SDK成功之后调用,该功能为V4.4.1版本新增):
1.// 设置软件音量模式控制(参数为int型,1打开,0关闭[默认])
2.#defineBRAC_SO_AUDIO_SOFTVOLMODE 73
3.
4.DWORD dwSoftVolMode = 1;
5.BRAC_SetSDKOption(BRAC_SO_AUDIO_SOFTVOLMODE,(constchar*)&dwSoftVolMode, sizeof(DWORD));
使用软件音量控制模式的优点在于控制当前应用程序的音量时不影响其它程序的音量,典型的应用如:用户一边看电影一边使用AnyChat进行通话,默认模式下,用户调低AnyChat的播放音量时,同时也会将电影的音量调低,如果使用软件音量控制模式,则不会影响播放电影的音量。
如何修改音频通信质量?
动态修改音频通信质量主要是通过调节音频编码器的目标码率来实现的,可以满足在不同的应用中使用不同通话质量的需求,如局域网或是网络带宽有保障的应用,可以采用较高的通话质量,而互联网则采用较低的通话质量来降低带宽占用。同时也可以动态修改音频通话质量,在较好质量和一般通话质量之间动态切换。该特性需要AnyChat Platform Core SDK V2.8.7以上的版本才能支持。
可通过BRAC_SetSDKOption接口来设置单声道,或是双声道模式下的音频通信质量,典型设置代码如下:
1.DWORD dwMonoBitrate = 15850;
2.BRAC_SetSDKOption(BRAC_SO_AUDIO_MONOBITRATE,(PCHAR)&dwMonoBitrate,sizeof(DWORD));
3.DWORD dwStereoBitrate = 40000;
4.BRAC_SetSDKOption(BRAC_SO_AUDIO_STEREOBITRATE,(PCHAR)&dwStereoBitrate,sizeof(DWORD));
上述示例代码设置了单声道模式下,音频编码的质量是:15.85kbps,双声道模式下,音频的编码质量是:40kbps,当SDK工作在单声道模式下时,单声道设置生效,当SDK工作在双声道模式下时,双声道设置生效。
AnyChat SDK默认是根据服务器的“AnyChatCoreServer.ini”配置文件里面的音频参数部分来确定是工作在单声道采集模式,或是双声道采集模式。当上层应用开启AnyChat SDK的音频自适应模式(默认是关闭状态)后,将根据音频工作模式来动态切换采集参数:
音频工作模式 |
采样率 |
采样位数 |
采样通道 |
默认质量 |
备注 |
发言模式 |
16000 |
16 |
1 |
15.85kbps |
单声道模式 |
放歌模式 |
44100 |
16 |
2 |
40kbps |
双声道模式 |
卡拉OK模式 |
44100 |
16 |
2 |
40kbps |
双声道模式 |
线路输入模式 |
44100 |
16 |
2 |
40kbps |
双声道模式 |
开启“音频自适应模式”的示例代码如下:
1.//启用音频自动参数功能(默认关闭)
2.DWORD bAudioAutoParam = TRUE;
3.BRAC_SetSDKOption(BRAC_SO_AUDIO_AUTOPARAM,(PCHAR)&bAudioAutoParam,sizeof(DWORD));
注:不同的客户端可独立工作在不同的模式下,如:A客户端是关闭音频自适应模式(默认状态),B客户端启用音频自适应模式,这两个客户端程序均可正常工作。另外不论是关闭,或是开启音频自适应模式,均可动态调节音频编码的目标码率。