音视频即时通讯的音视频质量参数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在很多即时通讯应用中,会根据应用场景的不同,需要对音频输入源进行选择,不同的应用场景对应不同的音频工作模式。需要支持多种音频工作(采集)模式,包括:

1、发言模式(默认):自动选择麦克风为音频输入源设备,用户说话的声音被麦克风采集,启动音频特效处理(包括:回音消除、静音检测、噪音抑制、自动增溢),该模式通常应用于互动交流,用户发言讨论等场合;

2、放歌模式:自动选择立体声混音输入源设备,本地计算机所播放的声音被采集,同时SDK内部会自动屏蔽其它用户的声音(如果不屏蔽,则用户的声音会被采集下来,并回传给用户,用户那边将会听到回音),SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户放歌,而不用关心其他用户发言的场合;

3、卡拉OK模式:自动选择立体声混音和麦克风两个输入源设备(该特性与硬件相关,有些声卡不支持同时采集麦克风和立体声混音),本地计算机所播放的声音和用户说话的声音将会被采集,同时SDK内部会自动屏蔽其它用户的声音,SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户放歌,同时自己用麦克风伴唱,而不用关心其它用户发言的场合;

4、线路输入模式:自动选择线路输入源设备,通过线路输入的声音将被采集(通常是指将外部的DV、DVD、TV等设备的音频输出端子接入声卡的LineIn 口的应用),SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户播放外部设备的声音,而不需要自己讲话的场合,如向房间的所有用户直播电视信号时,可将电视的视频输出接入专用的视频采集卡,而将电视的声音输出接入声卡的LineIn接口,并选择“线路输入模式”,那么当前房间内的其它用户就可以收看到实时的电视画面与声音了。

典型修改音频工作模式的代码如下:

1.DWORD dwAudioMode = 1; // 修改为放歌模式

2.BRAC_SetSDKOption(BRAC_SO_AUDIO_CPATUREMODE,(PCHAR)&dwAudioMode ,sizeof(dwAudioMode));

初始化自动启动“发言模式”,如需要切换到其它的工作模式,需要通过相应的接口设置,在初始化成功后,可动态切换,由于切换过程中,内部会自动选择对应的源设备,故切换后,上层应用需要更新当前的音频采集设备,以及对应的音频特效状态等标志。

根据模式的不同和网络状态的不同,动态调节播放缓冲区的大小,从而来控制播放延迟,如发言模式下,当网络条件好的情况下,平均延迟<300ms,当网络条件不好的情况下,平均延迟<800ms;而放歌模式等其它非发言模式,延迟将会随网络状态的变化而变化。总的来说,发言模式延迟小,保障实时性,非发言模式,如放歌模式,则延迟会稍大,保障流产性。

自动记录最后一次上层应用所选择的工作模式,下次重新运行后,会自动启用前次记录的工作模式,如果不期望SDK记录前次工作模式,则可通过关闭的配置文件来实现。

视频质量主要是通过服务器的配置文件来控制,该配置是整个系统所有房间的默认配置,早期的版本无法实现由上层应用来控制不同的用户采用不同的视频质量参数,本地视频质量控制接口,可以由上层应用控制本地视频的编码质量,为某些特定的应用提供了基础,例如:可以实现主持人发言时采用高质量的视频参数,而普通用户采集一般的视频参数,从而达到发言者的视频效果优于普通用户的特定效果。(如果采集的视频信号有“横条”干扰)本地视频质量控制接口可以调节的参数包括“视频帧率”、“视频码率”、“视频质量”、“关键帧间隔”以及“预设参数”的控制,参数定义如下:

01.///< 本地视频编码码率设置(参数为int型,同服务器配置:VideoBitrate)

02.#define BRAC_SO_LOCALVIDEO_BITRATECTRL 30

03.///< 本地视频编码质量因子控制(参数为int型,同服务器配置:VideoQuality)

04.#define BRAC_SO_LOCALVIDEO_QUALITYCTRL 31

05.///< 本地视频编码关键帧间隔控制(参数为int型,同服务器配置:VideoGOPSize)

06.#define BRAC_SO_LOCALVIDEO_GOPCTRL 32

07.///< 本地视频编码帧率控制(参数为int型,同服务器配置:VideoFps)

08.#define BRAC_SO_LOCALVIDEO_FPSCTRL 33

09.///< 本地视频编码预设参数控制(参数为int型,1-5)

10.#define BRAC_SO_LOCALVIDEO_PRESETCTRL 34

其中视频质量控制有两种模式“平均码率模式”(默认设置)和“质量因子模式”,当设置的码率大于0时,启动“平均码率模式”,当设置的码率为0时,启动“质量因子模式”。

典型的设置“平均码率模式”参数代码如下:

01.DWORD dwValue = 0;

02.// 设置本地视频编码的码率

03.dwValue = 60 * 1000; // 60 kbps

04.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_BITRATECTRL,(const

char*)&dwValue,sizeof(DWORD));

05.// 设置本地视频编码的关键帧间隔

06.dwValue = 20;

07.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_GOPCTRL,(const

char*)&dwValue,sizeof(DWORD));

08.// 设置本地视频编码的帧率

相关文档
最新文档