二、使用条件
·目前移动端播放器 SDK 11.3 以上版本及移动端播放器 SDK(高级版)均可使用 VR 播放插件。
·VR 播放需获取 移动端播放器高级版 License 方可使用。
四、步骤1:获取插件
1. VR 播放插件(下文简称“插件”)作为独立的 SDK 提供,你可以根据项目需求进行集成,下载地址如下:
| 终端类别 | VR 插件下载地址 |
| Android 端 | VR 插件 |
| iOS 端 | 移动端播放器 SDK大于或等于13.1版本 SDK 下载:VR 插件 小于13.1版本 SDK 下载:VR 插件 |
2. 将下载的插件 plugin_monet-release-v.x.x.x.aar 或 TXCMonetPlugin-release-v.x.x.x.framework(x.x.x. 为版本号)集成到工程,启动播放器实例后,宿主会自动加载插件。
五、步骤2:初始化 License
使用 VR 播放功能需要使用移动端播放器高级版 License,你可参见 移动端播放器 License 指引获取。若你已获取对应 License,可前往 腾讯云视立方控制台 > License 管理 > 移动端 License 获取对应 LicenseURL 和 LicenseKey,随后通过下面的接口进行初始化 License。
AndroidiOSString licenceUrl = "填入你购买的 License 的 URL";String licenseKey = "填入你购买的 License 的 Key"TXLiveBase.getInstance().setLicence(context, licenceUrl, licenseKey);NSString *licenceURL = "填入你购买的 License 的 URL";NSString *licenseKey = "填入你购买的 License 的 Key"[TXLiveBase setLicenceURL:licenceURL key:licenseKey];
六、步骤3:开启或关闭终端 VR 全景视频能力
启动播放后(建议在收到 TXLiveConstants.PLAY_EVT_VOD_PLAY_PREPARED 事件后调用),可以通过 TXVodPlayer 下面的接口,进行开启和关闭 VR 全景视频:
AndroidiOS@Overridepublic void onPlayEvent(TXVodPlayer player, int event, Bundle param) { if (event == TXLiveConstants.PLAY_EVT_VOD_PLAY_PREPARED) { //开启终端VR全景视频单目模式,如需开启双目模式,value设为“12”即可 mVodPlayer.setStringOption("PARAM_MODULE_TYPE", 11); }}//关闭终端VR全景视频mVodPlayer.setStringOption("PARAM_MODULE_TYPE", 0);//开启VR全景视频单目模式,如需开启双目模式value设为“12”//注意:VR全景视频的开启设置需要在播放器播放之前,或者如果在播放过程中进行设置,在设置以后需要重启一下//播放,建议这里可以做一个切换动画NSMutableDictionary *extInfoMap = [NSMutableDictionary dictionary];[extInfoMap setObject:@"11" forKey:@"PARAM_MODULE_TYPE"];[_txVodPlayer setExtentOptionInfo:extInfoMap];//关闭VR全景视频:[extInfoMap setObject:@"0" forKey:@"PARAM_MODULE_TYPE"];
七、相关配置
AndroidiOS
八、配置常量
所在类 TXVodConstants.java。
| 常量名 | 常量值 | 说明 |
| PLAYER_OPTION_PARAM_MODULE_TYPE | "PARAM_MODULE_TYPE" | Module 类型。 |
| PLAYER_OPTION_PARAM_MODULE_CONFIG | "PARAM_MODULE_CONFIG" | Module 配置。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ENABLE_SENSOR | "ENABLE_SENSOR" | 是否开启传感器,默认 true。 |
| PLAYER_OPTION_PARAM_MODULE_VR_FOV | "FOV" | 视场角,默认65.0f度,限制范围30.0f-110.0f度。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_X | "ANGLE_X" | 水平旋转角度,正值右转,负值左转。0°表示正前方,取值范围-180°到180°。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_Y | "ANGLE_Y" | 垂直旋转角度,正值上转,负值下转。0°表示水平视角,取值范围-85°到85°。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_RATE | "ANGLE_RATE" | 手势滑动距离与角度比例,比例越大灵敏度越高,默认值为1/8f。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_SLOPE_THRESHOLD | "ANGLE_SLOPE_THRESHOLD" | 旋转XY角度斜率阈值,默认值为0.5f,阈值范围内只选取长边旋转。 |
| PLAYER_OPTION_PARAM_MODULE_VR_DO_ROTATE | "MONET_AC_DO_ROTATE" | VR 旋转角度。 |
九、Module类型值
| 常量名 | 值 | 说明 |
| PLAYER_OPTION_PARAM_MODULE_TYPE_NONE | 0 | 空类型,即关闭超分和 VR 等。 |
| PLAYER_OPTION_PARAM_MODULE_TYPE_SR | 1 | 超分类型。 |
| PLAYER_OPTION_PARAM_MODULE_TYPE_VR_PANORAMA | 11 | VR 全景模型,单目。 |
| PLAYER_OPTION_PARAM_MODULE_TYPE_VR_BINOCULAR | 12 | VR 全景模型,双目。 |
十、VR 播放回调事件
| 常量名 | 值 | 说明 |
| PLAYER_OPTION_EVT_ANGLES | 8001 | 旋转角度变化事件。 |
| PLAYER_OPTION_EVT_KEY_ANGLE_X | "ANGLE_X" | 水平旋转角度,正值右转,负值左转。 |
| PLAYER_OPTION_EVT_KEY_ANGLE_Y | "ANGLE_Y" | 垂直旋转角度,正值上转,负值下转。 |
十一、配置常量
所在头文件 TXVodSDKEventDef.h。
| 宏定义 | 值 | 说明 |
| PLAYER_OPTION_PARAM_MODULE_TYPE | @"PARAM_MODULE_TYPE" | Module 类型。 |
| PLAYER_OPTION_PARAM_MODULE_CONFIG | @"PARAM_MODULE_CONFIG" | Module 配置。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ENABLE_SENSOR | @"ENABLE_SENSOR" | 是否开启传感器,默认 true。 |
| PLAYER_OPTION_PARAM_MODULE_VR_FOV | @"FOV" | 视场角,默认65.0f度。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_X | @"ANGLE_X" | 水平旋转角度,正值右转,负值左转。0°表示正前方,取值范围-180°到180°。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_Y | @"ANGLE_Y" | 垂直旋转角度,正值上转,负值下转。0°表示水平视角,取值范围-85°到85°。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_RATE | @"ANGLE_RATE" | 手势滑动距离与角度比例,比例越大灵敏度越高,默认值为1/3.0f。 |
| PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_SLOPE_THRESHOLD | @"ANGLE_SLOPE_THRESHOLD" | 旋转 XY 角度斜率阈值,默认值为0.5f,阈值范围内只选取长边旋转。 |
| PLAYER_OPTION_PARAM_MODULE_VR_DO_ROTATE | @"MONET_AC_DO_ROTATE" | VR 旋转角度。 |
十二、Module类型值
| 常量名 | 值 | 说明 |
| PLAYER_OPTION_PARAM_MODULE_TYPE_NONE | 0 | 空类型,即关闭超分和 VR 等。 |
| PLAYER_OPTION_PARAM_MODULE_TYPE_SR | 1 | 超分类型。 |
| PLAYER_OPTION_PARAM_MODULE_TYPE_VR_PANORAMA | 11 | VR 全景模型,单目。 |
| PLAYER_OPTION_PARAM_MODULE_TYPE_VR_BINOCULAR | 12 | VR 全景模型,双目。 |
十三、VR 播放回调事件
| 常量名 | 值 | 说明 |
| PLAYER_OPTION_EVT_ANGLES | 8001 | 旋转角度变化事件。 |
| PLAYER_OPTION_EVT_KEY_ANGLE_X | "ANGLE_X" | 水平旋转角度,正值右转,负值左转。 |
| PLAYER_OPTION_EVT_KEY_ANGLE_Y | "ANGLE_Y" | 垂直旋转角度,正值上转,负值下转。 |
十四、插件加载配置
终端极速高清插件加入到工程后,默认会自动加载, 如果你不希望播放器加载该插件,可以通过下面的方式关闭:
AndroidiOSTXVodPlayConfig playConfig = new TXVodPlayConfig();playConfig.mEnableRenderProcess = false;mVodPlayer.setConfig(playConfig);TXVodPlayConfig *playConfig = [[TXVodPlayConfig alloc] init];playConfig.enableRenderProcess = NO;[_txVodPlayer setConfig:playConfig];
十五、设置混淆规则
在 proguard-rules.pro 文件中,将终端极速高清相关类加入不混淆名单(iOS 默认无):
-keep class com.tencent.** { *; }
十七、启播前配置 VR 相关信息
AndroidiOS// 创建VR配置字典,用于存放具体的VR参数Map<String, Object> config = new HashMap<>();// 关闭传感器(陀螺仪),设置为false表示不通过设备转动改变视角config.put(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_VR_ENABLE_SENSOR, false);// 设置视场角为90度,取值范围30.0f-110.0f度,默认65.0f度config.put(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_VR_FOV, 90.0f);// 设置手势滑动距离与角度比例,比例越大灵敏度越高,默认值为1/8fconfig.put(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_RATE, 0.2f);// 设置旋转XY角度斜率阈值为0.3,默认值0.5f,阈值范围内只选取长边旋转config.put(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_SLOPE_THRESHOLD, 0.3f);// 将VR配置字典应用到播放器mVodPlayer.setStringOption(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_CONFIG, config);// 设置VR类型为全景单目模式(如需双目模式,使用PLAYER_OPTION_PARAM_MODULE_TYPE_VR_BINOCULAR)mVodPlayer.setStringOption(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_TYPE, TXVodConstants.PLAYER_OPTION_PARAM_MODULE_TYPE_VR_PANORAMA);// 启播int result = mVodPlayer.startVodPlay(playUrl);// 创建扩展信息字典,用于存放VR配置NSMutableDictionary *extInfoMap = [NSMutableDictionary dictionary];// 设置VR类型为全景单目模式(如需双目模式,使用PLAYER_OPTION_PARAM_MODULE_TYPE_VR_BINOCULAR)[extInfoMap setObject:@(PLAYER_OPTION_PARAM_MODULE_TYPE_VR_PANORAMA) forKey:PLAYER_OPTION_PARAM_MODULE_TYPE];// 创建VR配置字典,用于存放具体的VR参数NSMutableDictionary *vrconfig = [NSMutableDictionary dictionary];// 开启传感器(陀螺仪),设置为YES表示可通过设备转动改变视角[vrconfig setObject:@(YES) forKey:PLAYER_OPTION_PARAM_MODULE_VR_ENABLE_SENSOR];// 设置视场角为110度,取值范围30.0f-110.0f度,默认65.0f度[vrconfig setObject:@(110.0f) forKey:PLAYER_OPTION_PARAM_MODULE_VR_FOV];// 设置旋转XY角度斜率阈值为0.3,默认值0.5f,阈值范围内只选取长边旋转[vrconfig setObject:@(0.3f) forKey:PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_SLOPE_THRESHOLD];// 将VR配置字典添加到扩展信息字典中[extInfoMap setObject:vrconfig forKey:PLAYER_OPTION_PARAM_MODULE_CONFIG];// 将扩展信息应用到播放器,完成VR配置[self.vodPlayer setExtentOptionInfo:extInfoMap];
十八、播放过程中旋转角度
AndroidiOSMap<String, Object> action = new HashMap<>();// 水平旋转角度,正值右转,负值左转action.put(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_X, 10.0f);// 垂直旋转角度,正值上转,负值下转action.put(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_Y, 10.0f);mVodPlayer.setStringOption(TXVodConstants.PLAYER_OPTION_PARAM_MODULE_VR_DO_ROTATE, action);NSMutableDictionary *extInfoMap = [NSMutableDictionary dictionary];NSMutableDictionary *action = [NSMutableDictionary dictionary];/// 水平旋转角度,正值右转,负值左转[action setObject:@(10.0f) forKey:PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_X];/// 垂直旋转角度,正值上转,负值下转[action setObject:@(10.0f) forKey:PLAYER_OPTION_PARAM_MODULE_VR_ANGLE_Y];[extInfoMap setObject:action forKey:PLAYER_OPTION_PARAM_MODULE_VR_DO_ROTATE];[self.vodPlayer setExtentOptionInfo:extInfoMap];
十九、监听 VR 播放回调事件
AndroidiOS@Overridepublic void onPlayEvent(TXVodPlayer player, int event, Bundle param) { if (event == TXVodConstants.PLAYER_OPTION_EVT_ANGLES) { if (param != null) { // 获取水平旋转角度 float angleX = param.getFloat(TXVodConstants.PLAYER_OPTION_EVT_KEY_ANGLE_X); // 获取垂直旋转角度 float angleY = param.getFloat(TXVodConstants.PLAYER_OPTION_EVT_KEY_ANGLE_Y); } return; }}-(void) onPlayEvent:(TXVodPlayer *)player event:(int)EvtID withParam:(NSDictionary*)param{ if (EvtID == PLAYER_OPTION_EVT_ANGLES) { float angleX = 0; float angleY = 0; // 解析角度数据 for (NSString *key in param) { id value = [param objectForKey:key]; if ([key isEqualToString:PLAYER_OPTION_EVT_KEY_ANGLE_X]) { angleX = [value floatValue]; } else if ([key isEqualToString:PLAYER_OPTION_EVT_KEY_ANGLE_Y]) { angleY = [value floatValue]; } } }}
20、日志查看
AndroidiOS1. 终端 VR 全景视频插件加载成功日志:D/HostEngine-PluginManger: [loadPlugin], succeed loading pluginId=2 ,pluginClazzName=com.tencent.liteav.monet.MonetPlugin2. VR 全景视频功能成功开启日志:D/MonetPlugin-Process: [updateModule], moduleType=113. 如果出现下面的日志,表示签发的 License 不合法:E/MonetPlugin-Process: [updateModule], error, reason = license is invalid!!1. 终端 VR 全景视频插件加载成功日志:[PluginsSDK] plugin config : pluginId = 2, pluginName = Monet2. 终端 VR 全景视频成功开启日志:[MonetProcessor] monet change VR*** module, processor: 0x100345233. 如果出现下面的日志,表示签发的 License 不合法:[MonetProcessor] Monet License invalid, processor:0x10034523, set module is null