华为云用户手册

  • 删除网卡 登录Windows裸金属服务器。 进入裸金属服务器的Windows PowerShell命令行界面,执行以下命令,查询需要删除的增强高速网卡bond信息。 Get-NetLbfoTeamNIC -Team Team2 执行以下命令,删除网卡bond。 Remove-NetLbfoTeam -Name "Team2" 执行如下命令,查询网络信息,确认网卡已被删除。 Get-NetAdapter
  • 增加网卡 登录Windows裸金属服务器。 进入裸金属服务器的Windows PowerShell命令行界面,执行以下命令,查询网卡信息。 Get-NetAdapter 返回信息示例如下: 其中,“eth0”和“eth1”为承载VPC网络的网络设备,“以太网 3”和“以太网 4”为承载增强高速网络bond的网络设备。下面步骤将使用“以太网 3”和“以太网 4”配置增强高速网络。 如果想提高OS侧出方向流量请参考方法一配置;如果对流量没有特殊要求,请参考方法二配置。 方法一:OS内组bond为交换机独立模式,出方向流量可达到主主的效果,但入方向仍然与主备模式保持一致。 执行以下命令,创建增强高速网络bond的端口组。 New-NetLbfoTeam -Name qinq -TeamMembers "以太网 3","以太网 4" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic -Confirm:$false 其中,“qinq”为给增强高速网络端口组规划的端口组名称,“以太网 3”和“以太网 4”为2中获取的承载增强高速网络的网络设备。 执行以下命令,查询网络适配器列表。 get-NetLbfoTeamMember Get-NetAdapter 方法二:主备模式OS内组bond。 执行以下命令,创建增强高速网络bond的端口组。 New-NetLbfoTeam -Name Team2 -TeamMembers "以太网 3","以太网 4" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm IPAddresses -Confirm:$false 其中,“Team2”为给增强高速网络端口组规划的端口组名称,“以太网 3”和“以太网 4”为2中获取的承载增强高速网络的网络设备。 执行以下命令,设置3.a中创建的“Team2”端口组中一个网口模式为备用模式。 Set-NetLbfoTeamMember -Name "以太网 4" -AdministrativeMode Standby -Confirm:$false 当前增强高速网络配置的端口组只支持主备模式,其中,“以太网 4”为组成增强高速网络端口组中的其中一个端口,配置哪个端口为备用端口,根据您的规划自行决定。 get-NetLbfoTeamMember Get-NetAdapter 执行以下命令,进入“网络连接”界面。 ncpa.cpl 执行完成后,进入如下界面: 配置增强高速网络。 在“网络连接”界面,双击在3中创建的端口组“Team2”,进入“Team2 状态”页面。 单击“属性”,进入“Team2 属性”页面。 在“网络”页签下双击“Internet 协议版本 4 (TCP/IPv4)”,进入“Internet 协议版本 4 (TCP/IPv4) 属性”页面。 选择“使用下面的IP地址”,配置增强高速网络的IP地址和子网掩码,单击“确定”。 其中,为增强高速网络规划的IP地址在没有与VPC网段冲突的情况下可任意规划,需要通过增强高速网络通信的裸金属服务器须将增强高速网络配置在同一个网段。 参见上述步骤,完成其他裸金属服务器的配置。 待其他裸金属服务器配置完成后,互相ping对端增强高速网络配置的同网段IP,检查是否可以ping通。
  • VPC网卡查看方式 VPC网络的网络接口可以在管理控制台查看(裸金属服务器详情页“网卡”页签下,如图1所示)。对于Linux镜像,也可以根据分配的IP地址在操作系统中找到对应的vlan子接口或bond接口。 图1 查看VPC网卡 以CentOS 7.4 64 bit为例,登录到操作系统中,在“/etc/sysconfig/network-scripts”目录下可以看到以下网卡配置文件:ifcfg-eth0,ifcfg-eth1,ifcfg-bond0,ifcfg-bond0.3029,ifcfg-bond0.3187,ifcfg-bond0.3189,用户需要通过IP映射来匹配网络。 执行ifconfig命令,从控制台查看VPC网卡1的私有IP地址分别为192.168.0.48,MAC地址为fa:16:3e:04:5c:8c;VPC网卡2的私有IP地址为192.168.0.14,MAC地址为fa:16:3e:04:5c:6a。eth0和eth1自动组成bond0,它们拥有相同的MAC地址。同时我们可以确定,ifcfg-eth0,ifcfg-eth1,ifcfg-bond0,ifcfg-bond0.3029,ifcfg-bond0.3187,ifcfg-bond0.3189为VPC网卡配置文件。 各网卡和bond配置文件的配置信息如下:
  • 配置自定义VLAN网络(Windows Server系列) 下面以Windows Server 2012 R2 Standard操作系统为例,介绍裸金属服务器的自定义VLAN网络配置方法: Windows Server系列其他操作系统的配置方法与Windows Server 2012 R2 Standard类似。 登录Windows裸金属服务器。 进入裸金属服务器的Windows PowerShell命令行界面,执行以下命令,查询网卡信息。 Get-NetAdapter 返回信息示例如下: 其中,“eth0”和“eth1”为承载VPC网络的网络设备,“以太网 4”和“以太网 6”为承载自定义VLAN网络的网络设备。下面步骤将使用“以太网 4”和“以太网 6”配置自定义VLAN网络。 如果想提高OS侧出方向流量,请参考方法一配置;如果对流量没有特殊需求,请参考方法二配置。 方法一:OS内组bond为交换机独立模式,出方向流量可达到主主的效果,但入方向仍然与主备模式保持一致。 执行以下命令,创建自定义VLAN网络的端口组。 New-NetLbfoTeam -Name qinq -TeamMembers "以太网 4","以太网 6" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic -Confirm:$false 其中,“qinq”为给自定义VLAN网络端口组规划的端口组名称,“以太网 4”和“以太网 6”为2中获取的承载自定义VLAN网络的网络设备。 执行以下命令,查询网络适配器列表。 Get-NetLbfoTeamMember Get-NetAdapter 方法二:OS内组bond为主备模式。 执行以下命令,创建自定义VLAN网络的端口组。 New-NetLbfoTeam -Name Team2 -TeamMembers "以太网4","以太网 6" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm IPAddresses -Confirm:$false 其中,“Team2”为给自定义VLAN网络端口组规划的端口组名称,“以太网 4”和“以太网 6”为2中获取的承载自定义VLAN网络的网络设备。 执行以下命令,设置3.a中创建的“Team2”端口组中一个网口模式为备用模式。 Set-NetLbfoTeamMember -Name "以太网 4" -AdministrativeMode Standby -Confirm:$false 当前自定义VLAN网络配置的端口组只支持主备模式,其中,“以太网 4”为组成自定义VLAN网络端口组中的其中一个端口,配置哪个端口为备用端口,根据您的规划自行决定。 get-NetLbfoTeamMember Get-NetAdapter 执行以下命令,进入“网络连接”界面。 ncpa.cpl 执行完成后,进入如下界面: 配置自定义VLAN网络。 在“网络连接”界面,双击在3中创建的端口组“Team2”,进入“Team2 状态”页面。 单击“属性”,进入“Team2 属性”页面。 在“网络”页签下双击“Internet 协议版本 4 (TCP/IPv4)”,进入“Internet 协议版本 4 (TCP/IPv4) 属性”页面。 选择“使用下面的IP地址”,配置自定义VLAN网络的IP地址和子网掩码,单击“确定”。 其中,为自定义VLAN网络规划的IP地址在没有与VPC网段冲突的情况下可任意规划,需要通过自定义VLAN网络通信的裸金属服务器须将自定义VLAN网络配置在同一个网段。 参见上述步骤,完成其他裸金属服务器的配置。 待其他裸金属服务器配置完成后,互相ping对端自定义VLAN网络配置的同网段IP,检查是否可以ping通。 如果需要在此基础上配置VLAN子接口进行网络平面隔离,可以进行如下操作: 执行以下命令,在已有Team2基础上建立VLAN子接口。 Add-NetLbfoTeamNIC -Team "Team2" -VlanID XXX -Confirm:$false 其中“Team2”为组建bond的名称,“XXX”为VLAN ID。 新建VLAN子接口完成后,参考4和5完成网口“Team2-VLAN 500”的IP和掩码等网络设置。 父主题: 自定义VLAN网络
  • 操作场景 停止服务器,即对裸金属服务器执行关机操作。停止服务器的前提条件是裸金属服务器必须处于“运行中”状态。 停止服务器不会影响“包年/包月”付费类型(也称包周期)服务器的费用。如有其他绑定的产品,如云硬盘、弹性公网IP、带宽等,按各自产品的计费方式(“包年/包月”或“按需付费”)进行收费。 停止服务器为“强制关机”方式,会中断您的业务,请确保服务器上的文件已保存。 当前仅支持从管理控制台关机裸金属服务器,不支持在单独实例OS内部使用关机命令关机裸金属服务器。由于在单独实例OS内部使用shutdown等其他关机命令时,会被系统认为异常关机操作,导致命令不生效。
  • 操作场景 当您不再需要裸金属服务器时,可将其删除。服务器的状态一旦变为“已删除”,就不再产生与该服务器相关的费用。 在您删除服务器之后,短时间内仍可在控制台看见该服务器(状态为“已删除”),然后该条目将自动被删除。在服务器删除后,标签和卷等资源会逐步与服务器取消关联,存储卷上的数据也会被删除。 对于“包年/包月”裸金属服务器,计费周期到期后,您可以手动释放;如果一直未续费,服务器也会自动释放。服务器到期前,您可以申请“退订”提前释放服务器。
  • 操作场景 用户创建裸金属服务器后,可以通过“申请状态”栏查看任务的创建状态。创建裸金属服务器的任务可以包括创建裸金属服务器资源、绑定弹性公网IP、挂载云硬盘等子任务。 申请状态栏的任务状态包括如下两类: 处理中:指系统正在处理的请求。 处理失败:指未能成功处理的请求。对于处理失败的任务,系统会自动回退,同时在界面上直观的展示错误码,例如“(BMS.3033)创建系统卷失败。” 本节介绍如何查看裸金属服务器的申请状态以及申请状态栏的提示信息说明。
  • 删除网卡 获取待删除增强高速网卡的bond网卡地址。 以“root”用户,使用密钥或密码登录裸金属服务器。 找到bond关联的网络设备,然后执行命令关闭并删除网络设备。如果bond有VLAN子接口,这一步将自动删除VLAN子接口。 [root@bms-ubuntu ~]# ifdown p4p1[root@bms-ubuntu ~]# ifdown p4p2[root@bms-ubuntu ~]# ifdown bond1 执行以下命令,删除网络配置文件“/etc/network/interfaces.d/60-cloud-init.cfg”。 rm -f /etc/network/interfaces.d/60-cloud-init.cfg
  • Ubuntu 16.04安装操作 登录裸金属服务器,执行以下命令,切换至root权限。 sudo root (可选)如果不存在依赖包gcc、g++和make,请执行以下命令进行安装。 apt-get install gcc apt-get install g++ apt-get install make (可选)将Nouveau驱动列入黑名单。 如果已经安装并加载了Nouveau的显卡驱动,请执行以下操作将Nouveau驱动列入黑名单以避免冲突。 编辑“/etc/modprobe.d/blacklist.conf”,在文件后面加入以下内容: blacklist nouveauoptions nouveau modeset=0 执行以下命令备份与重建initramfs: mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak sudo update-initramfs -u 重启:sudo reboot (可选)如果X服务正在运行,请执行systemctl set-default multi-user.target命令并重启裸金属服务器以进入多用户模式。 (可选)安装NVIDIA GPU驱动。 如果选择了特定版本的NVIDIA GPU驱动,而不是捆绑在CUDA工具包中的版本,则需要执行此步骤。 下载NVIDIA GPU驱动安装包NVIDIA-Linux-x86_64-xxx.yy.run(下载链接:https://www.nvidia.com/Download/index.aspx?lang=en),并将该安装包上传至裸金属服务器的“/tmp”目录下。 图2 搜索NVIDIA驱动包(Ubuntu 16.04) 执行以下命令,安装NVIDIA GPU驱动。 sh ./NVIDIA-Linux-x86_64-xxx.yy.run 执行以下命令,删除安装包。 rm -f NVIDIA-Linux-x86_64-xxx.yy.run 安装CUDA工具包。 下载CUDA Toolkit安装包cuda_a.b.cc_xxx.yy_linux.run(下载链接:https://developer.nvidia.com/cuda-downloads),并将该安装包上传至裸金属服务器的“/tmp”目录下。 执行以下命令,修改安装包的权限。 chmod +x cuda_a.b.cc_xxx.yy_linux.run 执行以下命令,安装CUDA工具包。 ./cuda_a.b.cc_xxx.yy_linux.run --toolkit --samples --silent --override --tmpdir=/tmp/ 执行以下命令,删除安装包。 rm -f cuda_a.b.cc_xxx.yy_linux.run 执行如下三条命令,验证是否安装成功。 cd /usr/local/cuda/samples/1_Utilities/deviceQueryDrv/ make ./deviceQueryDrv 回显信息中包含“Result = PASS”,表示CUDA工具包和NVIDIA GPU驱动安装成功。
  • CentOS 7.4安装操作 登录裸金属服务器,执行以下命令,切换至root权限。 su root (可选)如果不存在依赖包gcc、gcc-c++、make和kernel-devel,请执行以下命令进行安装。 yum install gcc yum install gcc-c++ yum install make yum install kernel-devel-`uname -r` (可选)将Nouveau驱动列入黑名单。 如果已经安装并加载了Nouveau的显卡驱动,请执行以下操作将Nouveau驱动列入黑名单以避免冲突。 编辑“/etc/modprobe.d/blacklist.conf”,在文件后面添加blacklist nouveau。 运行以下命令备份与重建initramfs: mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak dracut -v /boot/initramfs-$(uname -r).img $(uname -r) 重启:reboot。 (可选)如果X服务正在运行,请执行systemctl set-default multi-user.target命令并重启裸金属服务器以进入多用户模式。 (可选)安装NVIDIA GPU驱动。 如果选择了特定版本的NVIDIA GPU驱动,而不是捆绑在CUDA工具包中的版本,则需要执行此步骤。 下载NVIDIA GPU驱动安装包NVIDIA-Linux-x86_64-xxx.yy.run(下载链接:https://www.nvidia.com/Download/index.aspx?lang=en),并将该安装包上传至裸金属服务器的“/tmp”目录下。 图1 搜索NVIDIA驱动包(CentOS 7.4) 执行以下命令,安装NVIDIA GPU驱动。 sh ./NVIDIA-Linux-x86_64-xxx.yy.run 执行以下命令,删除安装包。 rm -f NVIDIA-Linux-x86_64-xxx.yy.run 安装CUDA工具包。 下载CUDA Toolkit安装包cuda_a.b.cc_xxx.yy_linux.run(下载链接:https://developer.nvidia.com/cuda-downloads),并将该安装包上传至裸金属服务器的“/tmp”目录下。 执行以下命令,修改安装包的权限。 chmod +x cuda_a.b.cc_xxx.yy_linux.run 执行以下命令,安装CUDA工具包。 ./cuda_a.b.cc_xxx.yy_linux.run --toolkit --samples --silent --override --tmpdir=/tmp/ 执行以下命令,删除安装包。 rm -f cuda_a.b.cc_xxx.yy_linux.run 执行如下三条命令,验证是否安装成功。 cd /usr/local/cuda/samples/1_Utilities/deviceQueryDrv/ make ./deviceQueryDrv 回显信息中包含“Result = PASS”,表示CUDA工具包和NVIDIA GPU驱动安装成功。
  • 前提条件 已绑定弹性公网IP。 已下载对应操作系统所需驱动的安装包。 表1 NVIDIA GPU驱动和CUDA工具包下载 操作系统 需要下载的驱动 下载地址 Ubuntu 16.04、CentOS 7.4 NVIDIA GPU驱动安装包“NVIDIA-Linux-x86_64-384.81.run” https://www.nvidia.com/download/driverResults.aspx/124722/en-us CUDA工具包安装包“cuda_9.0.176_384.81_linux.run” https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=CentOS&target_version=7&target_type=runfilelocal
  • 什么是华为云WSA 全站加速(Whole Site Acceleration)适用于各行业动静态内容混合、含较多动态资源请求(如asp、jsp、php等格式的文件)的源站应用服务。通过智能网络加速技术及优质的全线路、跨区域覆盖网络,优化客户在动静态混合、纯动态站点/APP、内容上传、API调用、四层协议传输、跨区域传输等场景下网络传输的成本、性能、稳定性、安全性,提高访问成功率,实现网站整体加速与实时优化。 了解更多全站加速详情请见全站加速WSA。 图1 全站加速请求示意图
  • WSA计费说明 WSA采用基础费用+增值服务费用的方式收取,计费方式详见表1,具体收费标准请参见价格详情。 开通WSA服务后,全站加速 域名 产生的费用由WSA服务收取,CDN和WSA资源包不能相互抵扣。 表1 WSA计费方式 计费项 计费方式 描述 基础服务计费 流量计费 按照每小时实际使用的流量进行计费,也可以购买流量包抵扣使用的流量。 峰值带宽计费 按照每日峰值带宽进行计费,系统每5分钟统计1个峰值带宽,每日得到288个值,取其中的最大值作为计费带宽。 月结95峰值带宽计费 在一个自然月内,将每个有效日的所有峰值带宽的统计点进行排序,去掉数值最高的5%的统计点,取剩下的数值最高统计点为计费点,再根据合同约定的单价计费。 日峰值月平均计费 在一个自然月内,对所有有效日的最大峰值带宽求和取平均,获得当月的计费带宽,再根据合同约定的单价计费。 增值服务计费 全站加速请求数 全站加速的动态请求数和静态请求数计费。
  • JDK 1.8安装方法 访问JDK官网下载链接:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 。 您也可以在搜索引擎中查找JDK1.8,并前往官网下载。 查找最新版本,并选择相应的操作系统进行下载。 示例: 最新版本:8u271 操作系统:选择Windows x64 安装过程可以直接按照默认设置来完成,连续单击“下一步”完成JDK的安装。 安装完成之后,需要配置相应的环境变量。 右键单击“我的电脑”,选择“属性”,打开“系统”页面。 图1 系统 单击“高级系统设置”,打开“系统属性”页面。 图2 高级系统设置 单击“环境变量”。 图3 环境变量 在“系统变量”栏单击“新建”,输入如下信息: 变量名:JAVA_HOME 变量值:以实际JDK安装时使用的目录为准 单击“确定”,保存变量。 图4 新建系统变量 再次单击“新建”新建系统变量: 变量名:classpath 变量值: .;%JAVA_HOME%\lib; 在“系统变量”栏查找并选中变量Path,然后单击“编辑”,在弹出的对话框中的变量值末尾,添加如下字符串: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 父主题: 附录
  • 集成SDK 在Demo.cpp文件的main函数中,调用Windows SDK接口完成初始化。 访问https://cloudvr.obs.cn-east-3.myhuaweicloud.com/example.zip下载模板example项目。 打开“example/src”路径对应的main.cpp文件,以模板为基准按照本地项目的实际情况进行修改。 模板使用说明: 模板提供了三种类型的CVRParameter构造函数分别对应的初始化逻辑,只需要修改下图中各变量的值就可以使用,客户端会根据linkType的变量选择执行的逻辑: 图1 初始化3D业务时需要注意和修改的参数 A类(linkType = TYPE_ACCOUNT):将账号密码等变量传入SDK内部,由SDK处理平台调度逻辑,之后进行VR业务的初始化。 该方式适用于对于定制要求不高,希望能尽快体验CVR服务的场景。 B类(linkType = TYPE_ IAM TOKEN):客户端通过账号密码访问IAM云服务,将获取到用户token和对应的projectID传入SDK内部,而不是直接传入账号密码。 该方式适用于客户端对账号安全有一定要求的场景。 C类(linkType = TYPE_GPUINFO):客户端通过账号密码访问IAM云服务,在获取到用户Token和对应的projectID后,访问CVR服务的调度接口,获取到对应区域的GPU服务器的IP和Token,传入SDK内部,完成VR业务的初始化。 该方式适用于对调度策略有定制要求的场景。 您可以根据需要自行提取相关逻辑到自己的客户端中。
  • SDK下载 如需获取VR云渲游平台CVR Web SDK,请执行以下操作: 打开SDK开发者中心。 选择“VR云渲游Web SDK”进行“SDK下载”。 获取WebSDK.zip文件,并解压。 解压后的文件如表 WebSDK.zip包含的文件所示。 表1 WebSDK.zip包含的文件 文件名 说明 README.md 使用说明 CloudVR-Web-SDK.exe Example示例服务的启动程序 version.txt 版本号文件 appsettings.json Example 示例服务程序配置文件(无需修改) config.yml Example 示例服务程序配置文件,运行示例前需要配置该文件 wwwroot/ wwwroot为SDK文件夹 父主题: Web SDK
  • SDK导入和使用 根据使用的终端设备下载对应的DemoApplication并导入。 设备若为VR头显,通过https://cvr-east-3.obs.myhuaweicloud.com/DemoVrApplication.zip下载DemoVrApplication.zip; 设备若为手机、平板、华为智慧屏,通过https://cvr-east-3.obs.myhuaweicloud.com/Demo3dApplication.zip下载Demo3dApplication.zip 下载后解压,并使用android studio打开。 图1 打开项目 配置。 解压下载的SDK.zip文件,根据头显种类获取对应的aar文件。 将所需的aar文件放入模板项目的app\libs中 图2 解压的SDK文件 表1 SDK依赖 头显 依赖命令 华为VR Glass implementation(name: 'app-Android-Normal-HWVR-debug',ext:'aar') Pico Neo1、Pico Neo2、Pico G2、 Pico Neo3 implementation(name: 'app-Android-Normal-Pico-debug',ext:'aar') implementation(name: 'PvrSDK-Native-release',ext:'aar') Oculus Quest、Oculus Go、 Oculus Quest2 implementation(name: 'app-Android-Normal-OVR-debug',ext:'aar') 小米超级玩家一体机 implementation(name: 'app-Android-Normal-MiVR-debug',ext:'aar') 手机、平板、华为智慧屏 implementation(name: 'app-Android-Normal-Mobile-debug',ext:'aar') 根据引入的sdk名称,在app\build.gradle文件修改配置。 在注释中选用实际使用aar包对应的implementation字段即可。 图3 app\build.gradle的引用配置 修改app\src\main\java\com\example\myapplication\MainActivity.java。 在MainActivity.java中对参数配置进行修改,两种模板所需修改的参数如下所示。 图4 VR客户端的模板所需参数 图5 3D客户端的模板所需参数 (只有VRGlass的客户端需要的配置)在AndroidManifest.xml中,参照注释修改Intent-Filter字段。 图6 app\src\main\AndroidManifest.xml中的intent-filter字段 编译和打包。 选择“Sync Project With Gradle Files”,完成SDK集成。 图7 选择“Sync Project With Gradle Files” 选择Build APK(s),完成APK打包。 图8 选择Build APK(s) 父主题: 客户端开发
  • SDK使用 获取X-Subject-Token和 ProjectId需要用到华为云账号、密码、项目名称,请参考获取IAM用户Token。 通过wwwroot/js/init.js文件,获取device_id,device_type,device_brand,protocol_type参数信息。具体可参考wwwroot/login.html文件。 获取gpu_ip,port,link_token,task_id。需要用到X-Subject-Token,device_id,device_type,device_brand,protocol_type。X-Subject-Token需要添加在请求头中,请参考VR云渲游平台节点调度API。 确保安全组配置中已放通所有UDP端口、TCP/10100-10101、TCP/10200-10201、TCP/10300-10301端口。 父主题: 客户端开发
  • 修订记录 发布时间 修订记录 2021-07-30 修改 SDK接口参考,SDK1.4.1上线,新增部分SDK接口。 SDK导入和使用,修改SDK使用方式,新增模板。 2021-04-30 第二次正式发布。 新增 JDK 1.8安装方法 旧版客户端升级 错误信息回调 修改 SDK接口参考,SDK1.4.0上线,新增部分SDK接口。 SDK导入和使用,修改SDK使用方式,新增模板。 2020-09-08 第一次正式发布。 父主题: 附录
  • SDK介绍 华为云VR云渲游平台Android SDK集成华为自研音、视频传输协议及网络优化算法,为您提供低时延、高可靠的云VR和云3D体验。 华为开发者中心提供两类云渲游SDK:Mobile-SDK和VR-SDK,分别面向移动端设备和VR设备,可捕获与预测动作数据(移动端设备:键鼠、触屏等动作数据;VR设备:头显和手柄的动作数据),并将其上传至云端,待云端完成渲染、编码后,将接收到的画面呈现在对应的设备上。此外,SDK还提供获取设备标识符等通用接口,便于您在SDK外层封装自身业务逻辑。 父主题: Android SDK
  • 下载SDK 如需获取VR云渲游平台CVR Android SDK,请执行以下操作: 打开SDK开发者中心。 选择“VR云渲游平台”的“Android SDK”进行下载。 获取VRClientSDK.zip文件,并解压。 解压后的文件如表1所示。 表1 VRClientSDK.zip包含的文件 文件名 适应机型 app-Android-Normal-HWVR-debug.aar 华为VR Glass app-Android-Normal-OVR-debug.aar Oculus Quest、Oculus Quest2 app-Android-Normal-MiVR-debug.aar 小米超级玩家一体机 assembleAndroidNormalPicoDebug.zip Pico Neo1、Pico Neo2、Pico G2、Pico Neo3 app-Android-Normal-Mobile-debug.aar 手机、平板、华为智慧屏 version.txt SDK版本 说明: 1.4.0及以上版本的新增文件,1.4.0以下版本暂无识别版本号方式。 其中,assembleAndroidNormalPicoDebug.zip解压后包含的文件如表2所示。 表2 assembleAndroidNormalPicoDebug中包含的文件 文件名 说明 是否必须依赖 app-Android-Normal-Pico-debug.aar VR云渲游提供的SDK 是 PvrSDK-Native-release.aar Pico官方提供的SDK 是
  • SDK下载 如需获取VR云渲游平台CVR Windows SDK,请执行以下操作: 打开SDK开发者中心。 选择“VR云渲游Windows SDK”进行“SDK下载”。 获取WindowsSDK.zip文件,并解压。 解压后的文件如表1所示。 表1 WindowsSDK.zip包含的文件 文件名 说明 bin 二进制文件 include 包含的头文件 lib 静态数据链接库文件 version.txt 版本号文件 父主题: Windows SDK
  • SDK概述 VR云渲游平台服务软件开发工具包(CVR SDK,VR Cloud Rendering & Gaming Platform Software Development Kit)是对CVR服务提供的客户端API进行的封装。用户直接调用SDK提供的接口函数即可实现使用不同类型客户端,使用VR应用或者3D应用的目的。 我们针对不同SDK类型提供了开发指南,开发指南详细介绍了SDK的下载、开发操作、参数、示例和常见问题处理。 SDK类型 开发指南 Android Android SDK开发指南 Windows Windows SDK开发指南 Web Web SDK开发指南
  • Example示例 本章节为测试示例,方便您快速调通整个流程并体验。 具体操作如下: 解压Sdk后的目录。 图1 Sdk目录 确保环境已经安装dotnet 5.0(若没有安装,运行CloudVR-Web-SDK.exe会出现闪退)。 配置config.yml信息。 表1 参数说明 参数 说明 取值样例 ListenIp 监听ip 0.0.0.0 ListenPort 监听端口 8080 LaunchBrowser 运行CloudVR-Web-SDK.exe后是否自动打开网页 true AuthCode web页面访问的验证码 1A2B3c IAMEndpoint IAM终端节点 - SchedulerEndpoint Scheduler终端节点 - DomainName 账户名。 - UserName IAM用户名。 - Password IAM用户登录密码。 - ProjectName 项目名称。 - ApplicationId 应用ID,请确保云服务器已经安装该应用。 后续可以根据业务需求自行分配调度。 - ApplicationUser 应用用户名,应用使用者的唯一标识。 TestUser1 ApplicationLaunchArgs 应用启动参数。 - GpuIpType 使用ip类型(公网ip:public,私网ip: private, 私网ip使用场景:专线, vpn) public Resolution 分辨率 1080p 具体信息获取方式如下: 登录管理控制台。 鼠标悬停在右上角的用户名,选择下拉列表中的“我的凭证”。 在“API凭证”页面,查看IAM用户名、账户名、项目名称信息。 在左侧服务列表中选择“VR云渲游平台”,在“应用管理”中选择应用ID。如果没有应用,请先创建应用。 在IAM_API终端节点查找区域对应的终端节点信息,选择全局终端节点或资源所在区域的终端节点。 图2 IAM的终端节点 在地区和终端节点查找CVR服务对应终端节点信息,根据资源所在区域选择相应的终端节点。 图3 终端节点信息 运行CloudVR-Web-SDK.exe可执行文件。 打开浏览器访问:http://127.0.0.1:8080。 在浏览器页面输入验证码,单击“登录”。 父主题: Web SDK
  • SDK接口 接口 描述 是否必选 Init.getDevice_id() 【功能说明】 获取设备id,用于作为渲染调度接口的请求参数。 详细使用请参考wwwroot/login.html文件。 是 Init.getDevice_type() 【功能说明】 获取设备类型,用于作为渲染调度接口的请求参数。 详细使用请参考wwwroot/login.html文件。 是 Init.getDevice_brand() 【功能说明】 获取设备品牌,用于作为渲染调度接口的请求参数。 详细使用请参考wwwroot/login.html文件。 是 Init.getProtocol_type() 【功能说明】 获取协议类型,用于作为渲染调度接口的请求参数。 详细使用请参考wwwroot/login.html文件。 是 cloudDesktopApp.loadApp() 【功能说明】 启动并加载云应用。 【请求参数】 详细使用请参考wwwroot/index.html文件。 是 cloudDesktopApp.on() 【功能说明】 回调函数。 ready:连接就绪。 exit:退出回调。 streamPause:串流画面暂停回调。 streamResume:串流画面恢复回调。 appClosed:远程app应用关闭回调。 否 cloudDesktopApp.appEnterFullscreen() 【功能说明】 进入全屏。 否 cloudDesktopApp.appExitFullscreen() 【功能说明】 退出全屏。 否 cloudDesktopApp.restartApp() 【功能说明】 重启远程app。 否 cloudDesktopApp.pauseStream() 【功能说明】 暂停串流画面。 否 cloudDesktopApp.resumeStream() 【功能说明】 恢复串流画面。 否 父主题: 客户端开发
  • SDK接口参考 接口 描述 是否必选 IntentCVR() 【功能说明】 初始化IntentCVR接口。 是 CVRParameter(std::string userName, std::string userDomain, std::string userPassWord, std::string projectName) 【功能说明】 用户通过该接口配置华为云用户名及密码,客户端根据该信息访问华为云IAM 获取Token 后再连接至VR云渲游平台进行鉴权,以下简称“A类 CVRParameter构造函数”。 【请求参数】 userDomain:华为云租户名 userName:华为云用户名 password:华为云用户密码 projectName:项目名称 说明: 如何获取上述参数对应值,请参考: https://support.huaweicloud.com/sis_faq/sis_04_0032.html 是 CVRParameter构造函数包括A类、B类、C类,请根据需要自选其中一类使用。 三类构造函数的适用场景请参考SDK使用。 CVRParameter(std::string iamToken) 【功能说明】 用户可自行访问IAM获取Token,通过该接口注入Token进行CVRParameter初始化,以下简称“B类 CVRParameter构造函数”。 【请求参数】 iamToken:用户Token。 CVRParameter(std::string gpuIp, std::string gpuToken) 【功能说明】 用户自行获取gpuIp与gpuToken,通过该接口配置gpuIp与gpuToken用于设备直连GPU服务器,以下简称“C类 CVRParameter构造函数”。 【请求参数】 gpuIP:GPU服务器公网IP。 gpuIP的获取方式,请参考“渲染节点调度”。 gpuToken:访问GPU服务器所需鉴权Token。 gpuToken的获取方式,请参考“渲染节点调度”。 void setServiceDomain(std::string serviceDomain) 【功能说明】 设置Service域名,用于指定连接的 GPU云服务器 所在区域。 【请求参数】 ServiceDomain:Service域名。 ServiceDomain的取值,请参见“地区和终端节点”中的“终端节点(Endpoint)”。 是 void setAppId(std::string appID) 【功能说明】 设置设备要访问的应用。 【请求参数】 appID:应用对应的应用ID。获取应用ID,请参考APP ID的获取方法。 是 void setPort(int port) 【功能说明】 GPU默认监听端口是10020,如果您更改了GPU监听端口(如使用多路会话模式),则需要使用该接口修改客户端访问端口号 【请求参数】 port:指定设备发送连接请求的目的端口信息。 否 std::string initiateLoad(CVRParameter customParameter) 【功能说明】 加载相关参数,启动云应用流化业务,并对输入参数进行检验。 【请求参数】 customParameter:已经初始化的鉴权参数。 是 void setLocation(std::string location) 【功能说明】 设置客户端连接的目标云服务器所在区域。 【请求参数】 location:用于设置调度接口的策略,可以指定一个或多个区域,CVR服务会从指定区域中分配空闲的服务器。支持配置公有云region_id,如cn-east-3。 如果未设置location,默认为空数组,此时CVR服务会根据设备的调度策略进行GPU服务器的分配。 location的取值,请参见“地区和终端节点”中的“区域”。 否 void setProjectID(std::string projectID) 【功能说明】 设置访问客户端调度接口使用的项目ID。 【请求参数】 projectID:项目ID,用于访问调度接口。获取projectID,请参见“获取项目ID”。 否 仅使用B类的CVRParameter构造函数时需要传入该值。 void setApplicationUserID(std::string userID) 【功能说明】 设置访问客户端调度接口使用的用户标识ID,如不存在用户标识ID,则不需要设置。 【请求参数】 userID:用户标识ID,用于访问调度接口。 否 void setAppLaunchArgs(std::string appLaunchArgs) 【功能说明】 设置应用启动参数,如应用启动无额外参数,则不需要设置。 【请求参数】 appLaunchArgs:应用启动参数。 否 public void setResolution(String resolution) 【功能说明】 设置应用启动的分辨率,默认为1080p。 【请求参数】 resolution:应用启动的分辨率。可以设置的参数为“480p”,“540p”,“720p”,“1080p”,“2k”,“4k” 否 public String getResolution() 【功能说明】 获取设置的应用启动分辨率。 【请求参数】 无 否 public void setGpuIpType(String gpuInfoType) 【功能说明】 设置gpu服务器ip的类型,默认为public。 【请求参数】 gpuInfoType:gpu服务器ip的类型,弹性公有ip填“public”,私有ip填"private"。 否 public String getGpuIpType() 【功能说明】 获取设置的gpu服务器ip类型。 【请求参数】 无 否 std::string getDeviceID() 【功能说明】 获取设备ID。 【请求参数】 无 否 仅使用C类的CVRParameter构造函数时需要获取该值。 std::string getBrand() 【功能说明】 获取设备品牌。 【请求参数】 无 否,仅使用C类的CVRParameter构造函数时需要获取该值。 void setErrCallback(CvrErrCallback errCallback) 【功能说明】 用于获取SDK内部的错误信息并处理。 【请求参数】 errCallback:回调接口,支持用户自定义。相关注意事项请参考错误信息回调。 否 CVRInstance_t* CVRCreateInstance() 【功能说明】 创建一个云应用客户端实例。 【请求参数】 无 是 CVRCode CVRSetConfig(CVRInstance_t* thiz, CVRConfig_t* config) 【功能说明】 对云应用客户端实例设置属性。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 config:CVRConfig_t类型的初始化参数对象。 是 CVRCode CVRStart(CVRInstance_t* thiz) 【功能说明】 开始显示画面。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 是 void CVRSetLogLevel(int level); 【功能说明】 设置日志级别。 【请求参数】 level:范围[0-8]。数值越大,日志越详细。 否 CVRCode CVRSetRenderView(CVRInstance_t* thiz,void* view) 【功能说明】 画面显示在指定窗口句柄。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 view:一个窗口句柄。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 CVRCode CVRSetControlStateChangedCallback(CVRInstance_t* thiz, CVRControlStateChangedCallback_t callback,void* user_data) 【功能说明】 设置主控模式状态变化的回调通知。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 callback:事件触发时的回调函数。 view:一个窗口句柄。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 CVRCode CVRSetOnVideoSizeChangedCallback(CVRInstance_t* thiz, CVROnVideoSizeChangedCallback_t callback,void* user_data) 【功能说明】 设置当前视频大小变化的回调通知。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 callback:事件触发时的回调函数。 user_data:设置回调函数中自定义数据。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 CVRCode CVRSetShowDebug(CVRInstance_t* thiz,int show_debug) 【功能说明】 是否显示调试参数。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 CVRCode CVRGetStatistics(CVRInstance_t* thiz, CVRStatistics_t* statistics) 【功能说明】 获取当前串流的统计数据。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 statistics:接收相关统计数据的外部变量。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 是 CVRCode CVRGetAuth(CVRInstance_t* thiz, CVRAuth* out_val) 【功能说明】 获取当前是主控客户端还是旁观客户端。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 out_val:接收当前模式的变量。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 CVRCode CVRSetOnAppClosedCallback(CVRInstance_t* thiz,CVROnAppClosedCallback_t callback,void* user_data) 【功能说明】 设置应用关闭的回调通知。 【请求参数】 thiz:由CVRCreateInstance()创建的云应用客户端实例。 callback:事件触发时的回调函数。 user_data:设置回调函数中自定义数据。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 CVRCode CVRRestartApp(CVRInstance_t* thiz,bool cancel) 【功能说明】 重新启动应用。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 CVRCode CVRPause(CVRInstance_t* thiz) 【功能说明】 暂停云应用资源。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 CVRCode CVRResume(CVRInstance_t* thiz) 【功能说明】 恢复云应用资源。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 否 void CVRRelease(CVRInstance_t* thiz) 【功能说明】 获取资源并停止云应用。 【返回值】 返回CVRCode类型的返回码,如果值为CVR_CODE_OK常量,则为成功。 是 父主题: Windows SDK
  • Visual Studio 2017安装方法 下载Visual Studio 下载地址:https://docs.microsoft.com/en-us/visualstudio/productinfo/vs-roadmap 在归档版本中找到Visual Studio 2017并下载系统匹配的版本。 图1 下载Visual Studio 2017 安装并配置Visual Studio 双击下载的可执行文件进行安装。 图2 双击可执行文件 等待安装完成。 图3 安装Visual Studio 父主题: 附录
  • Android Studio 3.2.1安装方法 下载Android Studio 下载地址:https://developer.android.google.cn/studio/archive 在归档版本中找到Android Studio3.2.1并下载系统匹配的版本。 图1 下载Android Studio3.2.1 安装并配置Android Studio 在下载文件的“bin”目录下找到并双击“Studio64.exe”执行文件进行安装。 图2 双击“Studio64.exe” 勾选“Android Virtual Devices”选项,然后单击“Next”。 图3 Choose Components 选择Android Studio安装的本地路径,建议不要安装在C盘。 图4 Install Locations 安装设置完成之后,单击“Install”,等待安装完成。 初步设置 安装完成后单击“Finish”,启动Android Studio,此时将会进行首次启动前的初步设置。 如果系统提示您无法访问SDK加载项列表,此时请单击“Cancel”退出,后续会下载SDK。 图5 Android Studio First Run 根据个人喜好选择其他配置,并单击“Next”完成初步设置。 Gradle配置 根据图6所示,完成Gradle配置。 图6 Gradle配置 配置ADB至环境变量 将adb.exe所在路径(Android Studio SDK安装路径“\platform-tools”)添加至Windows系统变量:Path。 图7 adb路径 打开“控制面板”,进入“高级系统设置”。 图8 高级系统设置 单击“环境变量”。 图9 系统属性 在“系统变量”栏,选中“Path”所在行,并单击“编辑”。 图10 环境变量 单击“新建”。 图11 编辑环境变量 添加adb路径,然后单击“确定”。 图12 粘贴adb路径 打开CMD命令提示窗口,输入命令adb,如图13所示,adb环境变量配置成功。 图13 adb命令 至此,Android Studio及adb环境变量配置成功。 父主题: 附录
  • 基本概念 账号 用户注册时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用用户进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和IAM用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中的资源,使得资源的权限控制更加精确。 图1 项目隔离模型 同样在我的凭证下,您可以查看项目ID。 企业项目 企业项目是项目的升级版,针对企业不同项目间的资源进行分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理用户指南》。 父主题: 使用前必读
  • 调用API获取项目ID 项目ID可以通过调用查询指定条件下的项目列表API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65ewtrgaggshhk1223245sghjlse684b", "is_domain": false, "parent_id": "65ewtrgaggshhk1223245sghjlse684b", "name": "project_name", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4adasfjljaaaakla12334jklga9sasfg" }, "id": "a4adasfjljaaaakla12334jklga9sasfg", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" }}
共99354条