如何设置AnyChat视频质量?
AnyChat SDK视频质量主要是通过服务器的“AnyChatCoreServer.ini”配置文件来控制,该配置是整个系统所有房间的默认配置,早期的版本无法实现由上层应用来控制不同的用户采用不同的视频质量参数,自“AnyChat Platform Core SDK V2.8”版本开始,AnyChat便提供了本地视频质量控制接口,可以由上层应用控制本地视频的编码质量,为某些特定的应用提供了基础,例如:可以实现主持人发言时采用高质量的视频参数,而普通用户采集一般的视频参数,从而达到发言者的视频效果优于普通用户的特定效果。如果采集的视频信号有“横条”干扰。
AnyChat SDK的本地视频质量控制接口可以调节的参数包括“视频采集分辩率”、“视频帧率”、“视频码率”、“视频质量”、“关键帧间隔”以及“预设参数”的控制,参数定义如下:
01.///< 本地视频编码码率设置参数为int型,同服务器配置:VideoBitrate)
02.#defineBRAC_SO_LOCALVIDEO_BITRATECTRL 30
03.///< 本地视频编码质量因子控制参数为int型,同服务器配置:VideoQuality)
04.#defineBRAC_SO_LOCALVIDEO_QUALITYCTRL 31
05.///< 本地视频编码关键帧间隔控制参数为int型,同服务器配置:VideoGOPSize)
06.#defineBRAC_SO_LOCALVIDEO_GOPCTRL 32
07.///< 本地视频编码帧率控制参数为int型,同服务器配置:VideoFps)
08.#define BRAC_SO_LOCALVIDEO_FPSCTRL 33
09.///< 本地视频编码预设参数控制参数为int型,1-5)
10.#defineBRAC_SO_LOCALVIDEO_PRESETCTRL 34
11.///< 本地视频采集分辨率宽度控制参数为int型,同服务器配置:VideoWidth)
12.#defineBRAC_SO_LOCALVIDEO_WIDTHCTRL 38
13.///< 本地视频采集分辨率高度控制参数为int型,同服务器配置:VideoHeight)
14.#defineBRAC_SO_LOCALVIDEO_HEIGHTCTRL 39
其中视频质量控制有两种模式“平均码率模式”默认设置)和“质量因子模式”,当设置的码率大于0时,启动“平均码率模式”,当设置的码率为0时,启动“质量因子模式”。
典型的设置“平均码率模式”参数代码如下:
01.DWORD dwValue = 0;
02.// 设置本地视频编码的码率
03.dwValue = 60 *1000; // 60 kbps
04.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_BITRATECTRL,(constchar*)&dwValue,sizeof(DWORD));
05.// 设置本地视频编码的关键帧间隔
06.dwValue = 20;
07.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_GOPCTRL,(constchar*)&dwValue,sizeof(DWORD));
08.// 设置本地视频编码的帧率
09.dwValue = 8;
10.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_FPSCTRL,(constchar*)&dwValue,sizeof(DWORD));
11.// 设置本地视频编码的预设参数
12.dwValue = 3;
13.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_PRESETCTRL,(constchar*)&dwValue,sizeof(DWORD));
14.// 使参数设置生效
15.BOOL bUseAppParam = TRUE;
16.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_APPLYPARAM,(constchar*)&bUseAppParam,sizeof(DWORD));
典型的设置“质量因子模式”参数代码如下:
01.DWORD dwValue = 0;
02.// 设置本地视频编码的码率
03.dwValue = 0;
04.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_BITRATECTRL,(constchar*)&dwValue,sizeof(DWORD));
05.// 设置本地视频编码的质量因子
06.dwValue = 4;
07.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_QUALITYCTRL,(constchar*)&dwValue,sizeof(DWORD));
08.// 设置本地视频编码的关键帧间隔
09.dwValue = 20;
10.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_GOPCTRL,(constchar*)&dwValue,sizeof(DWORD));
11.// 设置本地视频编码的帧率
12.dwValue = 8;
13.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_FPSCTRL,(constchar*)&dwValue,sizeof(DWORD));
14.// 设置本地视频编码的预设参数
15.dwValue = 3;
16.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_PRESETCTRL,(constchar*)&dwValue,sizeof(DWORD));
17.// 使参数设置生效
18.BOOL bUseAppParam = TRUE;
19.BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_APPLYPARAM,(constchar*)&bUseAppParam,sizeof(DWORD));
当启动“平均码率模式”时,质量因子的参数设置仍然有效,只是系统会限制输出的最高码率。另外要使设置的参数生效,需要调用“BRAC_SetSDKOption”接口并使用“BRAC_SO_LOCALVIDEO_APPLYPARAM”标志启用所设置的参数,同时也可利用该标志恢复服务器配置的默认视频质量参数。
关于视频帧率与关键帧间隔的参数设置可参考如下原则:
1、帧率越高,视频越流畅最大值为25fps),同时帧率也会对码率和CPU资源占用产生一定的影响,通常的建议是互联网应用8-12fps),局域网应用18-25fps);
2、关键帧间隔是指在编码的过程中,两个关键帧之间非关键帧的数量,值越大,码率越小,但会降低视频的质量,值越小,码率越大,视频质量较好,但不宜过小,通常的建议是互联网应用帧率的3、4倍),局域网应用等于帧率),不要小于帧率;

