如何使用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客戶端啓用音頻自適應模式,這兩個客戶端程序均可正常工作。另外不論是關閉,或是開啓音頻自適應模式,均可動態調節音頻編碼的目標碼率。