-
- Anychat Gamevideo SDK 适用于游戏的开发包 立即下载免费试用
- Anychat Core SDK 通用开发包 立即下载免费试用
Navigation
用户登录
更多相关问答
- 什么是SDK Filter?
- 在什么时候调用BRAC_Release来释放资源最合适?
- 如何快速使用AnyChat SDK开发?
- 为什么在WM_GV_USERATROOM消息中查询不到摄像头的状态?
- 为什么默认的录音设备无法语音说话?
- 什么是回调函数及其主要用途?
- 部分计算机上视频不能自动刷新的解决方案
- AnyChat SDK在申请发言的同时会自动发布视频数据吗?
- 如何设置AnyChat视频质量?
- 如何使用流媒体数据代理功能?
- 应用程序是否能控制SDK的P2P连接?
- 如何设置AnyChat的P2P连接策略
- 在什么情况下需要开启“反交织”模式?
- 音频工作(采集)模式是什么?
- 如何排查AnyChat故障信息?
- 如何修改音频通信质量?
- 什么是透明通道,如何使用?
Tags
开发指南
如何设置AnyChat视频质量?
AnyChat SDK视频质量主要是通过服务器的“AnyChatCoreServer.ini”配置文件来控制,该配置是整个系统所有房间的默认配置,早期的版本无法实现由上层应用来控制不同的用户采用不同的视频质量参数,自“AnyChat Platform Core SDK V2.8”版本开始,AnyChat便提供了本地视频质量控制接口,可以由上层应用控制本地视频的编码质量,为某些特定的应用提供了基础,例如:可以实现主持人发言时采用高质量的视频参数,而普通用户采集一般的视频参数,从而达到发言者的视频效果优于普通用户的特定效果。(如果采集的视频信号有“横条”干扰,可参考:183. 在什么情况下需要开启“反交织”模式?)
AnyChat SDK的本地视频质量控制接口可以调节的参数包括“视频帧率”、“视频码率”、“视频质量”、“关键帧间隔”以及“预设参数”的控制,参数定义如下:
///< 本地视频编码码率设置(参数为int型,同服务器配置:VideoBitrate) #define BRAC_SO_LOCALVIDEO_BITRATECTRL 30 ///< 本地视频编码质量因子控制(参数为int型,同服务器配置:VideoQuality) #define BRAC_SO_LOCALVIDEO_QUALITYCTRL 31 ///< 本地视频编码关键帧间隔控制(参数为int型,同服务器配置:VideoGOPSize) #define BRAC_SO_LOCALVIDEO_GOPCTRL 32 ///< 本地视频编码帧率控制(参数为int型,同服务器配置:VideoFps) #define BRAC_SO_LOCALVIDEO_FPSCTRL 33 ///< 本地视频编码预设参数控制(参数为int型,1-5) #define BRAC_SO_LOCALVIDEO_PRESETCTRL 34
其中视频质量控制有两种模式“平均码率模式”(默认设置)和“质量因子模式”,当设置的码率大于0时,启动“平均码率模式”,当设置的码率为0时,启动“质量因子模式”。
典型的设置“平均码率模式”参数代码如下:
DWORD dwValue = 0; // 设置本地视频编码的码率 dwValue = 60 * 1000; // 60 kbps BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_BITRATECTRL,(const char*)&dwValue,sizeof(DWORD)); // 设置本地视频编码的关键帧间隔 dwValue = 20; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_GOPCTRL,(const char*)&dwValue,sizeof(DWORD)); // 设置本地视频编码的帧率 dwValue = 8; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_FPSCTRL,(const char*)&dwValue,sizeof(DWORD)); // 设置本地视频编码的预设参数 dwValue = 3; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_PRESETCTRL,(const char*)&dwValue,sizeof(DWORD)); // 使参数设置生效 BOOL bUseAppParam = TRUE; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_APPLYPARAM,(const char*)&bUseAppParam,sizeof(DWORD));
典型的设置“质量因子模式”参数代码如下:
DWORD dwValue = 0; // 设置本地视频编码的码率 dwValue = 0; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_BITRATECTRL,(const char*)&dwValue,sizeof(DWORD)); // 设置本地视频编码的质量因子 dwValue = 4; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_QUALITYCTRL,(const char*)&dwValue,sizeof(DWORD)); // 设置本地视频编码的关键帧间隔 dwValue = 20; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_GOPCTRL,(const char*)&dwValue,sizeof(DWORD)); // 设置本地视频编码的帧率 dwValue = 8; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_FPSCTRL,(const char*)&dwValue,sizeof(DWORD)); // 设置本地视频编码的预设参数 dwValue = 3; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_PRESETCTRL,(const char*)&dwValue,sizeof(DWORD)); // 使参数设置生效 BOOL bUseAppParam = TRUE; BRAC_SetSDKOption(BRAC_SO_LOCALVIDEO_APPLYPARAM,(const char*)&bUseAppParam,sizeof(DWORD));
当启动“平均码率模式”时,质量因子的参数设置仍然有效,只是系统会限制输出的最高码率。另外要使设置的参数生效,需要调用“BRAC_SetSDKOption”接口并使用“BRAC_SO_LOCALVIDEO_APPLYPARAM”标志启用所设置的参数,同时也可利用该标志恢复服务器配置的默认视频质量参数。
关于视频帧率与关键帧间隔的参数设置可参考如下原则:
1、帧率越高,视频越流畅(最大值为25fps),同时帧率也会对码率和CPU资源占用产生一定的影响,通常的建议是互联网应用(8-12fps),局域网应用(18-25fps);
2、关键帧间隔是指在编码的过程中,两个关键帧之间非关键帧的数量,值越大,码率越小,但会降低视频的质量,值越小,码率越大,视频质量较好,但不宜过小,通常的建议是互联网应用(帧率的3、4倍),局域网应用(等于帧率),不要小于帧率;
关于本地视频编码的预设参数:BRAC_SO_LOCALVIDEO_PRESETCTRL,其取值范围为1-5,主要用来控制CPU资源占用率和画面细节,值越小,编码时的CPU占用率越低,但会损失对画面细节的处理;值越大,编码时的CPU占用率越高,但对画面细节的处理会更细腻,该参数主要针对高码率有效,低码率时由于码率的限制,视频画面细节无法表现出来,所以低码率模式下,可以将该参数调节低一些,以降低CPU的利用率。
关于本地视频编码的码率参数:BRAC_SO_LOCALVIDEO_BITRATECTRL,单位为bps,码率越小,视频质量越差;码率越高,视频质量越好,同时该参数还与视频画面的分辩率有关,不同的分辨率有不同的取值范围,如在互联网应用状态下,分辩率是176x144典型的取值范围是(10kbps ~ 60kbps),分辨率是320x240典型的取值范围是50kbps ~ 120kbps,如果是局域网应用,则码率可适当提高。
关于本地视频编码的质量因子参数:BRAC_SO_LOCALVIDEO_QUALITYCTRL,取值范围为1-6,值越小,画面质量越低,输出码率也越低,值越大,画面质量越高,输出码率也越高。
关于“平均码率模式”和“质量因子模式”两种视频质量控制模式的区别和应用,可参考如下原则:
1、“平均码率模式”:视频编码时以输出码率为优先考虑条件,当画面静止时,输出的码率较低,动态画面码率会较高,瞬时码率可能会超过设置的参数(最高不会超过10%),但是其输出的视频数据平均码率将会维持在设置的参数附近,当画面运动量过大时,编码器为了维持平均码率,将会损失画面的质量,通常互联网应用可采用该模式;
2、“质量因子模式”:当码率参数设置为0时,该模式生效,视频编码时以视频质量为优先考虑条件,静止的画面和动态画面将会用不同的量化因子进行编码,维持在一个固定的画面质量下,当画面静止时,码率较低,当画面运动时,码率较高,通常局域网应用可采用该模式。由于该模式下没有限制码率,所以大运动量画面时,为了保持固定的画面质量,码率的变化将会比较大,所以该模式不适合于互联网应用。
3、如果希望在互联网的环境下获得较高质量的视频效果(在网络带宽许可的情况下),建议采用“平均码率模式”,只是可以适当提高视频质量参数(VideoQuality)的值,视频码率参数根据需要进行设置。低码率,配置较低的视频质量,高码率就需要配置较高的视频质量。
注:“AnyChat GameVideo SDK”暂时没有提供控制本地视频编码质量参数的接口,还是采用服务器配置的参数。
Tags: -
相关项目:
更新日期:2010-07-27 08:32 作者:: 佰锐科技 修订: 1.10