音频工作(采集)模式是什么?
在即时通讯应用中,根据应用场景的不同,需要对音频输入源进行选择,不同的应用场景对应不同的音频工作模式。AnyChat Platform Core SDK(需要V2.8.6以上版本)支持多种音频工作(采集)模式,包括:
1、发言模式(默认):自动选择麦克风为音频输入源设备,用户说话的声音被麦克风采集,启动音频特效处理(包括:回音消除、静音检测、噪音抑制、自动增溢),该模式通常应用于互动交流,用户发言讨论等场合[参数值:0];
2、放歌模式:自动选择立体声混音输入源设备,本地计算机所播放的声音被采集,同时SDK内部会自动屏蔽其它用户的声音(如果不屏蔽,则用户的声音会被采集下来,并回传给用户,用户那边将会听到回音),SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户放歌,而不用关心其他用户发言的场合[参数值:1];
3、卡拉OK模式:自动选择立体声混音和麦克风两个输入源设备(该特性与硬件相关,有些声卡不支持同时采集麦克风和立体声混音),本地计算机所播放的声音和用户说话的声音将会被采集,同时SDK内部会自动屏蔽其它用户的声音,SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户放歌,同时自己用麦克风伴唱,而不用关心其它用户发言的场合[参数值:2];
4、线路输入模式:自动选择线路输入源设备,通过线路输入的声音将被采集(通常是指将外部的DV、DVD、TV等设备的音频输出端子接入声卡的LineIn口的应用),SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户播放外部设备的声音,而不需要自己讲话的场合,如向房间的所有用户直播电视信号时,可将电视的视频输出接入专用的视频采集卡,而将电视的声音输出接入声卡的LineIn接口,并选择“线路输入模式”,那么当前房间内的其它用户就可以收看到实时的电视画面与声音了[参数值:3]。
典型修改音频工作模式的代码如下:
1.
DWORD dwAudioMode = 1; // 修改为放歌模式
2.
BRAC_SetSDKOption(BRAC_SO_AUDIO_CPATUREMODE,(PCHAR)&dwAudioMode,sizeof(dwAudioMode));
AnyChat Platform Core SDK初始化自动启动“发言模式”,如需要切换到其它的工作模式,需要通过相应的接口设置(参考:64. BRAC_SetSDKOption),在SDK初始化成功后,可动态切换,由于切换过程中,SDK内部会自动选择对应的源设备,故切换后,上层应用需要更新当前的音频采集设备,以及对应的音频特效状态等标志。
AnyChat Platform Core SDK会根据模式的不同和网络状态的不同,动态调节播放缓冲区的大小,从而来控制播放延迟,如发言模式下,当网络条件好的情况下,平均延迟<300ms,当网络条件不好的情况下,平均延迟<800ms;而放歌模式等其它非发言模式,延迟将会随网络状态的变化而变化。总的来说,发言模式延迟小,保障实时性,非发言模式,如放歌模式,则延迟会稍大,保障流产性。
AnyChat Platform Core SDK会自动记录最后一次上层应用所选择的工作模式,下次重新运行后,会自动启用前次记录的工作模式,如果不期望SDK记录前次工作模式,则可通过关闭SDK的配置文件来实现(在SDK初始化时去掉BRAC_FUNC_CONFIG_LOCALINI参数,参考:11. 初始化SDK:BRAC_InitSDK)