服务端SDK参考

Size: px
Start display at page:

Download "服务端SDK参考"

Transcription

1 视频点播 服务端 SDK 参考 文档版本 01 发布日期 华为技术有限公司

2 版权所有 华为技术有限公司 2019 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品 服务或特性可能不在您的购买或使用范围之内 除非合同另有约定, 华为公司对本文档内容不做任何明示或默示的声明或保证 由于产品版本升级或其他原因, 本文档内容会不定期进行更新 除非另有约定, 本文档仅作为使用指导, 本文档中的所有陈述 信息和建议不构成任何明示或暗示的担保 文档版本 01 ( ) 版权所有 华为技术有限公司 i

3 目录 目录 1 SDK 介绍 SDK 下载 获取关键参数 开发前准备 初始化 公共参数说明 媒资上传 创建媒资并上传 创建媒资暂不上传 OBS 转存方式上传 OBS 托管方式上传 URL 拉取 创建 HLS 媒资并上传 上传校验 媒资管理 CDN 预热 视频分类 视频更新 音频提取 音视频处理 智能封面 视频剪辑 视频拼接 视频剪切 视频审核 查询密钥 统计分析 获取鉴权 URL 获取临时 AK/SK/securityToken API&SDK 对应关系 异常处理 文档版本 01 ( ) 版权所有 华为技术有限公司 ii

4 目录 连接超时 错误处理 GO SDK 开发前准备 初始化 请求与响应 媒资上传 媒资管理 媒资更新 媒资分类 媒体处理 CDN 预热 API & SDK 对应关系 错误码参考 附录 JDK 环境配置...65 文档版本 01 ( ) 版权所有 华为技术有限公司 iii

5 1 SDK 介绍 1 SDK 介绍 VOD SDK 概述 VOD SDK 是对点播服务接口请求的封装, 提供的接口包括创建媒资 确认媒资上传 媒资更新 媒资发布 媒资发布取消 查询媒资信息 修改媒资属性 删除媒资 媒资处理 CDN 预热 创建媒资分类 修改媒资分类 删除媒资分类 查询分类及其子分类等 请您在使用 SDK 前务必先去查看点播服务的接口文档, 了解相关接口的功能 参数 规则和使用方法 集成开发流程 SDK 工作流程 除了点播服务 SDK 之外, 用户还需集成其他 SDK( 如 OBS SDK) 在创建媒资过程中用户与这几个 SDK 之间的配合如下 : 文档版本 01 ( ) 版权所有 华为技术有限公司 1

6 2 SDK 下载 2 SDK 下载 华为云视频点播服务提供了 JAVA 语言和 GO 语言的 SDK, 您可以根据实际需求下载 但可能缺乏需要的语言版本, 如 Python,C/C++ 等, 此时请在工单系统中提单跟踪, 也可以在华为开发者论坛中发帖求助 JAVA SDK GO SDK 文档版本 01 ( ) 版权所有 华为技术有限公司 2

7 3 获取关键参数 3 获取关键参数 在使用 SDK 前, 我们需要获取一些关键参数, 用于签名认证, 需要获取的参数如下所示 : AK(Access Key ID): 访问密钥 ID 与私有访问密钥关联的唯一标识符 ; 访问密钥 ID 和私有访问密钥一起使用, 对请求进行加密签名 SK(Secret Access Key): 与访问密钥 ID 结合使用的密钥, 对请求进行加密签名, 可标识发送方, 并防止请求被修改 Project_ID: 项目 ID, 部分请求 URL 中需要包含该字段 账户名 : 部分请求 URL 中需要包含该字段 Endpoint: 华为云各服务应用区域和各服务的终端节点 前提条件 获取 AK 和 SK 已完成华为云官网注册, 并进行了实名认证 注意 : 访问密钥对账号具有完全的访问权限, 如果访问密钥泄露, 会带来数据泄露风险, 为了账号安全性, 建议您定期更换并妥善保存访问密钥 每个账号最多只能创建 2 个密钥 步骤 1 登录华为云官网, 在右上角单击账号名, 选择 账号中心 文档版本 01 ( ) 版权所有 华为技术有限公司 3

8 3 获取关键参数 步骤 2 在基本信息页面单击 管理我的凭证, 进入 我的凭证 页面 步骤 3 在左侧导航栏中选择 访问秘钥, 单击 新增访问秘钥, 在弹出的页面中输入华为云账号密码及短信验证码 步骤 4 单击 确定, 即可下载一个命名为 credentials.csv 的文件, 其中包含 AK 和 SK ---- 结束 获取项目 ID 和账号名 步骤 1 登录华为云官网, 在右上角单击账号名, 选择 账号中心 文档版本 01 ( ) 版权所有 华为技术有限公司 4

9 3 获取关键参数 步骤 2 在基本信息页面单击 管理我的凭证, 进入 我的凭证 页面 步骤 3 在左侧导航栏中选择 API 凭证, 即可获取对应的项目 ID 和账号名等信息 文档版本 01 ( ) 版权所有 华为技术有限公司 5

10 3 获取关键参数 获取 EndPoint ---- 结束 在 SDK 初始化时需要使用到 Endpoint, 您可以在地区和终端节点页面获取 EndPoint 值 文档版本 01 ( ) 版权所有 华为技术有限公司 6

11 4.1 开发前准备 4.2 初始化 4.3 公共参数说明 4.4 媒资上传 4.5 媒资管理 4.6 CDN 预热 4.7 视频分类 4.8 视频更新 4.9 音频提取 4.10 音视频处理 4.11 智能封面 4.12 视频剪辑 4.13 视频审核 4.14 查询密钥 4.15 统计分析 4.16 获取鉴权 URL 4.17 获取临时 AK/SK/securityToken 4.18 API&SDK 对应关系 4.19 异常处理 文档版本 01 ( ) 版权所有 华为技术有限公司 7

12 4.1 开发前准备 环境准备 已安装 JDK1.8 及以上版本并完成环境配置, 可参考 JDK 环境配置完成配置 已安装 Maven, 如若未安装, 请下载安装 已具备 Eclipse 等开发环境 Maven 安装配置 下载 settings.xml 文件, 覆盖 <Maven 安装目录 >/conf/settings.xml 文件即可 如果您不想覆盖配置文件, 可以依次按照下面方法手动修改 settings.xml 文件 : 1. 在 profiles 节点中添加如下内容 : <profile> <id>myprofile</id> <repositories> <repository> <id>huaweicloudsdk</id> <url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginrepositories> <pluginrepository> <id>huaweicloudsdk</id> <url> url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginrepository> </pluginrepositories> </profile> 2. 在 mirrors 节点中增加华为云 SDK 镜像 <mirror> <id>huaweicloud</id> <mirrorof>*,!huaweicloudsdk</mirrorof> <url> </mirror> 3. 增加 activeprofiles 标签激活配置 <activeprofiles> <activeprofile>myprofile</activeprofile> </activeprofiles> 4. 配置 pom.xml, 添加点播服务的 SDK 依赖, 点播服务最新的 SDK 版本可以在华为开源镜像站查看 <dependencies> <dependency> <groupid>com.huawei.vod</groupid> <artifactid>cloud-java-sdk-vod</artifactid> <version>${vod-sdk-version</version> 文档版本 01 ( ) 版权所有 华为技术有限公司 8

13 </dependency> </dependencies> SDK 工程导入 以 eclipse 工具为例给出 SDK 工程导入步骤, 如果使用其他 IDE 工具, 请参照处理 : 步骤 1 解压下载的点播服务端 SDK 包, 得到两个文件夹 步骤 2 运行 Eclipse 工具, 在左侧工程上点击右键, 选择 Build path->configure Build Path..., 在弹出框中左边选择 "Java Build Path", 在右边选择 "Libraries" 页签, 然后点击右边的 "Add External JARs...", 将 SDK 的解压文件夹 vodjavasdk 中的所有 JAR 包导入 步骤 3 导入后打开工程, 工程目录如下 : 文档版本 01 ( ) 版权所有 华为技术有限公司 9

14 步骤 4 若您需要使用 Demo 包进行开发, 请将 vodjavasdkdemo 文件夹下的 SDK Demo 文件 VodDemo.java 拖入新建的工程的 src 目录下 ---- 结束 4.2 初始化 前提条件 已注册华为云, 并完成实名认证 获取点播服务对应区域的 EndPoint ( 如使用的 华北 - 北京四 的点播服务则 EndPoint 为 vod.cn-north-4.myhuaweicloud.com ), 具体请参见获取 EndPoint 获取访问密钥 AK 和 SK, 具体请参见获取 AK 和 SK 账号在点播服务对应区域的项目 ID 及用户名和账户名, 具体请参考获取项目 ID 和账号名 AK 和 SK 方式初始化 import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; // 初始化 VOD 服务和 OBS 服务 public class Main { public static void main(string[] args) { VodClient vodclient = initvodclient(); public static VodClient initvodclient() { return new VodClient(initVodConfig(), initobsconfig()); //VodConfig 初始化配置 public static VodConfig initvodconfig() { VodConfig vodconfig = new VodConfig(); // 设置项目 ID, 参考前提条件获取 文档版本 01 ( ) 版权所有 华为技术有限公司 10

15 vodconfig.setprojectid("projectid"); // 设置点播服务节点地址, 参考前提条件获取 vodconfig.setendpoint("vod.cn-north-4.myhuaweicloud.com"); // 设置 ak, 参考前提条件获取 vodconfig.setak("ak"); // 设置 sk, 参考前提条件获取 vodconfig.setsk("sk"); return vodconfig; //ObsConfig 上传配置 public static ObsConfig initobsconfig() { // 因点播服务使用了对象存储服务 (OBS) 进行文件存储, 因此文件的上传均需要和对象存储服务进行交互, 所以此处需要配置 OBS 的 EndPoint ObsConfig obsconfig = new ObsConfig(); // 设置 OBS 服务节点地址 obsconfig.setendpoint("obs.cn-north-4.myhuaweicloud.com"); obsconfig.setpartsize(5); // 设置上传视频时分段上传时切分的每一段大小, 最小为 5M obsconfig.setconcurrencylevel(0);// 设置上传时的并发数, 若设置后为则代表采用串行上传 return obsconfig; 账号和密码方式初始化 import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; // 初始化 VOD 服务和 OBS 服务 public class Main { public static void main(string[] args) { VodClient vodclient = initvodclient(); public static VodClient initvodclient() { return new VodClient(initVodConfig(), initobsconfig()); //VodConfig 初始化配置 public static VodConfig initvodconfig() { VodConfig vodconfig = new VodConfig(); // 设置项目 ID, 参考前提条件获取 vodconfig.setprojectid("projectid"); // 设置点播服务节点地址, 参考前提条件获取 vodconfig.setendpoint("vod.cn-north-4.myhuaweicloud.com"); // 用户名 密码及账户名, 参考前提条件获取 vodconfig.setusername("username"); vodconfig.setpassword("password"); vodconfig.setdomainname("domainname"); return vodconfig; //ObsConfig 初始化配置 public static ObsConfig initobsconfig() { // 因点播服务使用了对象存储服务 (OBS) 进行文件存储, 因此文件的上传均需要和对象存储服务进行交互, 所以此处需要配置 OBS 的 EndPoint ObsConfig obsconfig = new ObsConfig(); // 设置 OBS 服务节点地址 obsconfig.setendpoint("obs.cn-north-4.myhuaweicloud.com"); obsconfig.setpartsize(5); // 设置上传视频时分段上传时切分的每一段大小, 最小为 5M obsconfig.setconcurrencylevel(0);// 设置上传时的并发数, 若设置后为则代表采用串行上传 return obsconfig; 文档版本 01 ( ) 版权所有 华为技术有限公司 11

16 4.3 公共参数说明 SDK 是对点播服务的接口的封装, 每一个接口都按照接口文档将对应的请求与响应参数进行了封装, 所以用户在使用时可以通过查找接口文档中需要的参数来使用 SDK 对应封装的请求或响应参数, 具体使用方式可以参考创建视频接口 BaseRequest 每一个接口请求类都继承自 com.huawei.vod.model.baserequest, 并在此基础上根据接口文档需要的请求参数进行了封装, 用户可以根据接口文档需要的参数对指定的请求类进行初始化, 如构造请求参数 BaseResponse 每一个接口响应类都继承自 com.huawei.vod.model.baseresponse, 并在此基础上根据接口文档的响应参数进行了封装 BaseResponse 的公共参数如下 : 参数类型说明缺省值 status int 任务状态, 接入请 求成功则为 0, 失 败为 1; 静态变量值 : BaseResponse.SUC CESS = 0; BaseResponse.FAIL = 1; 0 httpcode int 请求的 http 响应码 200 xrequestid String 每个请求的唯一标识 ID, 可以根据此 ID 联系华为工程师进行问题定位 N/A errorcode String 请求的错误码 N/A errormsg String 请求的错误信息 N/A 发送请求 初始化 VodClient 后, 可以调用 VodClient 的接口, 发起对应点播服务的请求, 并根据对应的响应类来获得此次请求的详细信息 接口对应关系可以参考 API & SDK 对应关系 4.4 媒资上传 文档版本 01 ( ) 版权所有 华为技术有限公司 12

17 4.4.1 创建媒资并上传 构造请求参数 构建创建媒资的请求参数, 具体接口参数请参考创建媒资 : 上传方式 import com.huawei.vod.model.asset.createassetbyfilereq; public static CreateAssetByFileReq buildcreateassetreq() { CreateAssetByFileReq req = new CreateAssetByFileReq();// 设置创建媒资请求参数, 具体参数可以查阅 API 文档 req.settitle("title");// 设置媒资标题, 长度不超过 128 个字节,utf-8 编码 req.setdescription("description");// 设置视频描述, 长度不超过 1024 个字节 req.setcategoryid(1);// 设置媒资分类 id 填 填 必填 // 设置媒资文件地址, 如 d://test.mp4, 该地址是本地文件地址, 如果需要用 SDK 上传, 则该参数必 req.setvideofileurl("fileaddress"); // 设置封面的文件地址, 如 d://cover.png, 该地址是本地文件地址, 如果需要用 SDK 上传封面, 则该参数必 req.setcoverfileurl( "coveraddress"); // 设置字幕文件地址, 如 d://subtitle.srt, 该地址是本地文件地址, 如果需要用 SDK 上传字幕, 则该参数 req.setsubtitlefileurl("d://aa.srt"); req.setvideoname("videoname");// 设置视频文件名, 可以带后缀, 也可以不带后缀 // 设置上传文件类型 支持上传视频文件格式 :MP4 TS MOV MXF MPG FLV WMV AVI M4V F4V MPEG 3GP ASF MKV, 支持上传音频文件格式 :MP3 OGG WAV WMA APE FLAC AAC AC3 MMF AMR M4A M4R WV MP2, 若上传格式为音频文件, 则不支持转码, 添加水印, 添加字幕 req.setvideotype("mp4"); req.setcovertype("png");// 设置封面图片文件类型, 当前支持 :JPG PNG // 创建媒资请求体 CreateAssetByFileReq 中新增 List<SubtitleReq> subtitles List<SubtitleReq> subtitlereqs = new ArrayList<>(); SubtitleReq subtitlereq = new SubtitleReq(); subtitlereq.setid(1);// 字幕 id, 目前只支持上传一个字幕文件, 取值为 [1,8] subtitlereq.settype("srt");// 字幕文件类型, 目前只支持 SRT 文件 subtitlereq.setlanguage("cn");// 字幕语言类型, 目前只能为 CN, 和 EN subtitlereq.setmd5("eiq3imk3cx8dh6ga/pes/q==");// 字幕文件 MD5 值 subtitlereqs.add(subtitlereq); req.setsubtitles(subtitlereqs); req.setautopublish(1);// 是否自动发布, 取值 [0,1],0 表示不自动发布,1 表示自动发布 ; 缺省值为 0 req.setautopreheat(1);// 是否自动预热到 CDN, 取值 [0,1] req.settemplategroupname("templategroupname");// 设置媒资转码的模板组的 Name, 具体的模板组可以去点播 Console 进行创建和查看 // 初始化截图参数 Thumbnail thumbnail = new Thumbnail(); // 设置截图类型为固定时间间隔采样截图,TIME 为定时采样,DOTS 为指定时间点截图 thumbnail.settype(thumbnail.typeenum.time); thumbnail.settime(10);// 设定时间间隔 ( 取值为 [1,100] 区间的整数 );type 设置为 DOTS 时需设置 dots 数组指定截图时间点 thumbnail.setcoverposition(1);// 指定第 1 张截图结果作为封面 req.setthumbnail(thumbnail);// 设置截图参数到请求中 Review review = new Review();// 初始化审核参数,politics terrorism porn 未传参时表示不进行此项检测, 传 -1 表示采用默认的置信度 review.setinterval(5);// 设置截图时间间隔, 单位秒 ( 取值为 5 或者 10) review.setpolitics(80);// 设置政治人物检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默 文档版本 01 ( ) 版权所有 华为技术有限公司 13

18 开始创建并上传 认值 53) review.setterrorism(80);// 设置暴恐元素检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默认值 80) review.setporn(80);// 设置涉黄内容检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默认值 80) req.setreview(review); req.setautoencrypt(1);// 设置是否自动加密 req.setsmartcover(1);// 设置是否开启智能封面, 取值 [0,1],0 表示不开启智能封面,1 表示开启智能封面, 默认不开启 return req; 说明 华北 - 北京四 和 华东 - 上海二 两个区域暂不支持智能封面功能 调用 SDK 方法创建媒资并上传视频 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.createassetbyfilereq; import com.huawei.vod.model.asset.createassetbyfilersp; import com.huawei.vod.service.obsservice; import com.obs.services.model.partetag; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 CreateAssetByFileReq req = buildcreateassetreq(); // 初始化创建媒资请求 /** * 发送创建媒资请求, 带上传操作, 无回调情况 * CreateAssetByFileRsp rsp = vodclient.createassetbyfileauto(req); */ // 发送创建媒资请求, 带上传操作, 有回调, 可以实时查询上传进度 CreateAssetByFileRsp rsp = vodclient.createassetbyfileauto(req, new ObsService.OnPartEtagUploadedListener() public void oninitmultiuploadpart(string uploadid) { // 上传任务开始时回 调 System.out.println("Init end: " + public void onuploadeachpart(partetag partetag, int progress, String uploadid) {// 文件每上传完一段时回调 System.out.println(partEtag.toString() + " is end! Progress: " + progress public void oncompletemultiupload(string uploadid) { System.out.println("Complete end: " + uploadid); // public void onerror(throwable e) { // 上传过程中报错时回调 e.printstacktrace(); ); System.out.println(new Gson().toJson(rsp)); // 返回消息 文档版本 01 ( ) 版权所有 华为技术有限公司 14

19 4.4.2 创建媒资暂不上传 调用 SDK 方法创建媒资但不上传视频, 一般发生在服务器创建视频元数据, 然后交给客户端如 App 浏览器上传 ( 可以参考并使用点播服务的上传 SDK), 在客户端上传完之后需要调用确认上传接口完成整个上传操作 ( 需要配置创建的视频的 ID, 并用该 ID 调用确认上传接口 ) 核心代码 public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 CreateAssetByFileReq req = buildcreateassetreq(); // 初始化创建媒资请求 UploadAssetRsp rsp = vodclient.createassetbyfile(req); // 发送创建媒资请求 String assetid = rsp.getassetid(); // 获取创建的视频数据的 ID, 该 ID 用于后期调用确认上传接口进行上传结果的确认 System.out.println(new Gson().toJson(rsp)); // 返回消息 确认上传 调用 SDK 方法创建媒资但不上传视频, 一般发生在服务器创建视频元数据, 然后交给客户端如 App 浏览器上传 ( 可以参考并使用点播服务的上传 SDK), 在客户端上传完之后需要调用该接口完成视频上传完成的确认, 从而完成视频创建的整改流程 该接口也可以通知点播服务视频任务是否进行取消或者上传失败 具体接口参数请参考确认媒资上传 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.createassetbyfilereq; import com.huawei.vod.model.asset.uploadassetrsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 ConfirmAssetUploadReq confirmassetuploadreq = new ConfirmAssetUploadReq(); // 设置媒资上传请求参数 confirmassetuploadreq.setassetid("assetid"); // 设置媒资上传的媒资 ID confirmassetuploadreq.setstatus(confirmassetuploadreq.upload_status_created); // 通知点播服务上传成功 /** // 通知点播服务需要取消上传任务 * confirmassetuploadreq.setstatus(confirmassetuploadreq.upload_status_cancelled); // 通知点播服务上传失败 * confirmassetuploadreq.setstatus(confirmassetuploadreq.upload_status_failed); */ // 发送请求 ConfirmAssetUploadRsp confirmassetuploadrsp = vodclient.confirmassetupload(confirmassetuploadreq); System.out.println(new Gson().toJson(confirmAssetUploadReq)); OBS 转存方式上传 前提条件 已获取项目编号 (project_id), 请参见获取项目 ID 和账号名 已获取需要转存视频的 OBS 的桶名 读取复制 OBS 上内容需要授权, 请参考以下两种方法进行授权 : 文档版本 01 ( ) 版权所有 华为技术有限公司 15

20 a. 可以通过媒体处理控制台获取 OBS 桶授权, 请参考获取云资源授权 b. 可以通过调用 SDK 方式获取授权, 请参考桶授权 桶授权 在使用 OBS 转存接口创建视频之前, 需要将视频所在的桶对点播服务进行授权, 具体授权方式如下 : import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.common.obs.model.bucketauthorizedrequest; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.baseresponse; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 BucketAuthorizedRequest req = new BucketAuthorizedRequest();// 设置桶授权请求参数, 具体参数可以查看 API 参考 req.setprojectid("projectid");// 设置用户的项目 ID 即 projectid req.setbucket("bucket");// 设置要进行桶授权的 OBS 桶名 req.setoperation("1");// 设置是桶授权还是取消授权 :1 为授权,0 为取消授权 BaseResponse rsp = vodclient.bucketauthorized(req);// 发送创建媒资请求 System.out.println(new Gson().toJson(rsp));// 返回消息 示例代码 该接口是通过点播服务从用户在 OBS 服务的桶里直接将视频复制过来进行视频创建, 用户已提前在 OBS 服务创建好桶, 并将需要创建的视频源文件上传到桶上, 然后通知点播进行视频创建 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.obsobjinfo; import com.huawei.vod.model.asset.*; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 PublishAssetFromObsReq req = new PublishAssetFromObsReq();// 设置创建视频请求参数, 具体参数可以查看 API 参考 ObsObjInfo obj = new ObsObjInfo();// 设置待发布视频地址 obj.setbucket("bucket");// 视频所在的 OBS 桶名 obj.setlocation("location");// 视频所在的桶所在的区域, 如使用 华北 - 北京四 的点播服务则填 cnnorth-4 obj.setobject("object"); // 视频的 objectkey req.setinput(obj); req.settitle("title");// 设置视频标题, 长度不超过 128 字节,utf-8 编码 req.setdescription("description");// 设置视频描述, 长度不超过 1024 个字节 req.setcategoryid(1);// 设置视频分类 id // 设置上传文件类型 支持上传视频文件格式 :MP4 TS MOV MXF MPG FLV WMV AVI M4V F4V 文档版本 01 ( ) 版权所有 华为技术有限公司 16

21 MPEG 3GP ASF MKV, 支持上传音频文件格式 :MP3 OGG WAV WMA APE FLAC AAC AC3 MMF AMR M4A M4R WV MP2, 若上传格式为音频文件, 则不支持转码, 添加水印, 添加字幕 req.setvideotype("videotype"); req.settags("tags");// 设置视频标签 // 设置转码模板组名称, 设置后将根据该模板组进行转码, 具体名称可以在点播服务控制台查看和管理 req.settemplategroupname("template_group_name"); req.setautopublish(1);// 设置是否自动发布,1 为发布,0 为不发布, 默认为 1 自动发布 // 初始化审核参数,politics terrorism porn 未传参时表示不进行此项检测, 传 -1 表示采用默认的置信度 Review review = new Review(); review.setinterval(5);// 设置截图时间间隔, 单位为秒 ( 取值为 5 或者 10) review.setpolitics(80);// 设置政治人物检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默认值 53) review.setterrorism(80);// 设置暴恐元素检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默认值 80) review.setporn(80);// 设置涉黄内容检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默认值 80) req.setreview(review); req.setsmartcover(1);// 设置是否开启智能封面,1: 开启智能封面,0: 不开启智能封面, 默认不开启 // 发送创建视频请求 PublishAssetFromObsRsp rsp = vodclient.publishassetfromobs(req); // 返回消息 System.out.println(new Gson().toJson(rsp)); 说明 OBS 托管方式上传 华北 - 北京四 和 华东 - 上海二 两个区域暂不支持智能封面功能 前提条件 已获取项目 ID(project_id), 请参见获取项目 ID 和账号名 已获取需要托管视频的 OBS 的桶名 托管 OBS 上内容需要进行桶授权, 请参考以下两种方法进行授权 : a. 可以通过点播控制台进行桶授权 b. 可以通过调用 SDK 方式获取授权, 请参考桶授权 桶授权 在使用 OBS 托管接口创建视频之前, 需要将视频所在的桶对点播服务进行授权, 具体方式请参考桶授权 示例代码 点播服务从用户在 OBS 服务的桶里直接将视频进行托管, 用户已提前在 OBS 服务创建好桶, 并将需要创建的视频源文件上传到桶上, 然后通知点播进行视频创建 具体接口请参考托管方式创建媒资 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.obsobjinfo; import com.huawei.vod.model.asset.*; 文档版本 01 ( ) 版权所有 华为技术有限公司 17

22 public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 HostObsAssetReq req = new HostObsAssetReq(); ObsObjInfo obj = new ObsObjInfo();// 设置待发布视频地址 obj.setbucket("bucket");// 视频所在的 OBS 桶名 obj.setlocation("location");// 视频所在的桶所在的区域, 如使用 华北 - 北京四 的点播服务则填 cnnorth-4 obj.setobject("object"); // 视频的 objectkey req.setinput(obj); req.settitle("title");// 设置视频标题, 长度不超过 128 字节,utf-8 编码 req.setdescription("description");// 设置视频描述, 长度不超过 1024 个字节 req.setcategoryid(1);// 设置视频分类 id // 设置上传文件类型 支持上传视频文件格式 :MP4 TS MOV MXF MPG FLV WMV AVI M4V F4V MPEG 3GP ASF MKV, 支持上传音频文件格式 :MP3 OGG WAV WMA APE FLAC AAC AC3 MMF AMR M4A M4R WV MP2, 若上传格式为音频文件, 则不支持转码, 添加水印, 添加字幕 req.setvideotype("videotype"); req.settags("tags");// 设置视频标签 // 设置转码模板组名称, 设置后将根据该模板组进行转码, 具体名称可以在点播服务控制台查看和管理 req.settemplategroupname("template_group_name"); req.setautopublish(1);// 设置是否自动发布,1 为发布,0 为不发布, 默认为 1 自动发布 // 初始化审核参数,politics terrorism porn 未传参时表示不进行此项检测, 传 -1 表示采用默认的置信度 Review review = new Review(); review.setinterval(5);// 设置截图时间间隔, 单位为秒 ( 取值为 5 或者 10) review.setpolitics(80);// 设置政治人物检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默认值 53) review.setterrorism(80);// 设置暴恐元素检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默认值 80) review.setporn(80);// 设置涉黄内容检测时的置信度 ( 取值为 [-1,100] 之间的整数, 取值 -1 表示为默认值 80) req.setreview(review); req.setsmartcover(1);// 设置是否开启智能封面,1: 开启智能封面,0: 不开启智能封面, 默认不开启 // 发送创建视频请求 HostObsAssetRsp rsp = vodclient.hostassetfromobs(req); // 返回消息 System.out.println(new Gson().toJson(rsp)); URL 拉取 支持将其它地方存储的媒体文件离线拉取上传到视频点播系统, 具体参数说明请参考 URL 拉取上传接口 代码示例 import com.huawei.vod.client.vodclient; import com.huawei.vod.model.asset.uploadmetadatabyurlreq; import com.huawei.vod.model.asset.uploadmetadata; import com.huawei.vod.model.asset.uploadmetadatabyurlrsp; public static void main(string[] args) { // 创建并初始化 VOD Client 对象 文档版本 01 ( ) 版权所有 华为技术有限公司 18

23 VodClient vodclient = initvodclient(); UploadMetaDataByUrlReq uploadmetadatabyurlreq = new UploadMetaDataByUrlReq(); UploadMetaData uploadmetadata = new UploadMetaData(); // 设置视频源文件 URL String url = ""; uploadmetadata.seturl(url); // 设置媒资标题 uploadmetadata.settitle("url 拉取 "); // 设置媒资视频文件类型 uploadmetadata.setvideotype("avi"); List<UploadMetaData> uploadmetadatalist = new ArrayList<>(); uploadmetadatalist.add(uploadmetadata); // 设置 url 拉取创建的媒资列表 uploadmetadatabyurlreq.setuploadmetadatas(uploadmetadatalist); UploadMetaDataByUrlRsp uploadmetadatabyurlrsp = vodclient.uploadmetadatabyurl(uploadmetadatabyurlreq); System.out.println(new Gson().toJson(uploadMetaDataByUrlRsp)); 创建 HLS 媒资并上传 创建 HLS 媒姿支持指定文件夹及 m3u8 文件进行创建, 构建媒资的请求参数, 具体接口参数请参考创建媒资 : 上传方式 代码示例 import com.huawei.vod.client.vodclient; import com.huawei.vod.model.asset.uploadmetadatabyurlreq; import com.huawei.vod.model.asset.uploadmetadata; import com.huawei.vod.model.asset.uploadmetadatabyurlrsp; public static void main(string[] args) { // 创建并初始化 VOD Client 对象 VodClient vodclient = initvodclient(); CreateAssetByFileReq req = new CreateAssetByFileReq(); // 媒资标题 req.settitle("hls_sdk_upload_40"); // 媒资名 req.setvideoname("index.m3u8"); // 媒资类型 req.setvideotype("hls"); // 媒资本地地址 req.setvideofileurl("e://ffmpeg/transcode/out"); // 是否自动发布 req.setautopublish(1); UploadAssetRsp uploadassetrsp = vodclient.uploadhlsbyfileauto(req, new ObsService.UploadListener() public void uploadsuccess() { public void uploading(int progress) { System.out.println("process: " + public void uploadfailed(exception e) { System.out.println("errorMessge is : " + e.getmessage()); ); System.out.println(gson.toJson(uploadAssetRsp)); 文档版本 01 ( ) 版权所有 华为技术有限公司 19

24 4.4.7 上传校验 上传校验是指上传媒资时, 视频点播服务会校验是否已经存储即将上传的文件, 避免重复上传 详细参数请参考上传校验接口 代码示例 import com.huawei.common.obs.obsconfig; import com.huawei.common.util.md5utils; import com.huawei.obs.services.obsclient; import com.huawei.obs.services.obsconfiguration; import com.huawei.obs.services.model.getobjectrequest; import com.huawei.obs.services.model.obsobject; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.obsobjinfo; import com.huawei.vod.model.asset.md5checkrequest; import com.huawei.vod.model.asset.md5checkrsp; import org.junit.test; import java.io.ioexception; import java.nio.file.files; import java.nio.file.path; import java.nio.file.paths; public class DuplicationCheckDemo { private VodClient getvodclient() { VodConfig vodconfig = new VodConfig(); vodconfig.setak("********************"); vodconfig.setsk("****************************************"); vodconfig.setprojectid("********************************"); // 对应地区 VOD 节点地址, 请参考 获取关键参数 章节获取 vodconfig.setendpoint("vod.cn-north-4.myhuaweicloud.com"); ObsConfig obsconfig = new ObsConfig(); // 对应地区 OBS 节点地址, 请参考 获取关键参数 章节获取 obsconfig.setendpoint("obs.myhwclouds.com"); return new VodClient(vodConfig, obsconfig); /** * 上传前校验 demo */ public void testcheckbeforeuploaddemo() throws IOException { // 获取 VOD 客户端 VodClient vodclient = getvodclient(); // 初始化请求参数 String fileurl = "D:\\test.mp4"; // 调用 SDK 工具方法计算 MD5 值 String md5 = Md5Utils.computeMd5ByFile(fileUrl); // 获取文件大小 Path filepath = Paths.get(fileUrl); long size = Files.size(filePath); // 利用文件名, 文件大小, 文件 MD5 构建校验请求 Md5CheckRequest checkreq = new Md5CheckRequest(); checkreq.setmd5(md5); checkreq.setsize(string.valueof(size)); // 使用 vod 客户端检查媒资是否重复 Md5CheckRsp rsp = vodclient.checkassetmd5(checkreq); if (rsp.getisduplicated() == 1) { // 输出重复媒资 ID System.out.println(rsp.getAssetIds()); return; // 已存在重复媒资, 可选择返回或者抛出异常 文档版本 01 ( ) 版权所有 华为技术有限公司 20

25 // 如果媒资不重复, 可继续媒资上传逻辑... /** * 发布前校验 demo IOException public void testcheckbeforepublish() throws IOException { // 获取 VOD 客户端 VodClient vodclient = getvodclient(); // 初始化 OBS 对象路径 String bucket = "test-bucket"; String objectkey = "test.mp4"; // 构建 OBS 对象路径 ObsObjInfo input = new ObsObjInfo(); input.setobject(objectkey); input.setbucket(bucket); input.setlocation("cn-north-4"); // 这里可获取 VOD 客户端中的配置或者用户使用自己的配置 String ak = vodclient.getvodconfig().getak(); String sk = vodclient.getvodconfig().getsk(); String obsendpoint = vodclient.getobsconfig().getendpoint(); // 创建 OBS 客户端 ObsConfiguration config = new ObsConfiguration(); config.setendpoint(obsendpoint); ObsClient obsclient = new ObsClient(ak, sk, config); // 下载 OBS 对象获取文件名 GetObjectRequest getreq = new GetObjectRequest(); getreq.setbucketname(bucket); getreq.setobjectkey(objectkey); ObsObject object = obsclient.getobject(getreq); // 获取对象大小 Long size = object.getmetadata().getcontentlength(); // 计算对象 MD5 值 String md5 = Md5Utils.computeMd5ByObs(input, obsclient); // 构建并请求文件上传校验接口 Md5CheckRequest checkreq = new Md5CheckRequest(); checkreq.setsize(string.valueof(size)); checkreq.setmd5(md5); Md5CheckRsp md5checkrsp = vodclient.checkassetmd5(checkreq); if (md5checkrsp.getisduplicated() == 1) { System.out.println(md5CheckRsp.getAssetIds()); return; // 已存在重复媒资 // 如果媒资不重复, 可继续媒资发布逻辑 媒资管理 媒资发布 将媒资设置为发布状态, 可以通过传入多个媒资 ID 来完成多个媒资的发布 具体参数可以参考媒资发布 import com.google.gson.gson; import com.huawei.vod.client.clientconfig; import com.huawei.vod.client.vodclient; 文档版本 01 ( ) 版权所有 华为技术有限公司 21

26 import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.publishassetreq; import com.huawei.vod.model.asset.publishassetrsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 PublishAssetReq req = new PublishAssetReq(); String[] assets = {"asset1", " asset2";// 构造媒资 ID 参数 支持多个 req.setassetid(assets);// 设置媒资发布的媒资 ID PublishAssetRsp rsp = vodclient.publishassets(req);// 发送媒资发布请求 System.out.println(new Gson().toJson(rsp));// 返回处理结果 媒资发布取消 将媒资设置为未发布状态, 可以通过传入多个媒资 ID 来完成多个媒资的取消发布 具体参数可以参考媒资发布取消 import com.google.gson.gson; import com.huawei.vod.client.clientconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.publishassetreq; import com.huawei.vod.model.asset.publishassetrsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 PublishAssetReq req = new PublishAssetReq(); String[] assets = {"asset1", " asset2";// 构造媒资 ID 参数 支持多个 req.setassetid(assets);// 设置媒资发布的媒资 ID PublishAssetRsp rsp = vodclient.unpublishassets(req);// 发送取消媒资发布请求 System.out.println(new Gson().toJson(rsp));// 返回处理结果 查询媒资信息 查询用户媒资信息, 支持指定媒资 ID 分类 状态 起止时间 分页信息等条件查询, 返回源视频的元数据 : 封装格式 大小 分辨率 码率 编码格式等 具体参数可以参考查询媒资信息 指定媒资 ID 查询 : 每次最多查询 10 个, 且指定了媒资 ID, 则起止时间 分页和每页记录数无效 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.queryassetmetareq; import com.huawei.vod.model.asset.queryassetmetarsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 QueryAssetMetaReq req = new QueryAssetMetaReq();// 设置查询视频信息请求参数, 具体参数可以参考点播 API 文档 文档版本 01 ( ) 版权所有 华为技术有限公司 22

27 String[] assets = {"asset1", " asset2";// 构造查询视频信息的媒资 ID, 最多支持同时查询 10 个 req.setassetids(assets);// 设置查询视频信息的媒资 ID req.setcategoryid(-1);// 设置分类 ID req.setstatus(new String[]{QueryAssetMetaReq.STATUS_CREATED);// 设置视频状态, 具体状态可以查看 API 文档 QueryAssetMetaRsp rsp = vodclient.queryassetmeta(req);// 发送查询视频信息请求 System.out.println(new Gson().toJson(rsp));// 返回查询视频信息结果 指定其他条件查询 : import com.google.gson.gson; import com.huawei.vod.client.clientconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.queryassetmetareq; import com.huawei.vod.model.asset.queryassetmetarsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 QueryAssetMetaReq req = new QueryAssetMetaReq();// 设置查询视频信息请求参数 req.setcategoryid(-1);// 设置分类 ID // 设置视频状态, 具体状态可以查看 API 文档 req.setstatus(new String[]{QueryAssetMetaReq.STATUS_CREATING, QueryAssetMetaReq.STATUS_TRANSCODE_SUCCEED); req.setpage(1);// 设置分页编号, 默认为 0 req.setsize(20);// 设置每页记录数 默认 10, 范围 [1,100] req.setstarttime("yyyymmddhhmmss");// 设置起始时间, 格式为 yyyymmddhhmmss 必须是与时区无关的 UTC 时间 时间 req.setendtime("yyyymmddhhmmss");// 设置结束时间, 格式为 yyyymmddhhmmss 必须是与时区无关的 UTC QueryAssetMetaRsp rsp = vodclient.queryassetmeta(req);// 发送查询视频信息请求 System.out.println(new Gson().toJson(rsp)); // 返回查询视频信息结果 查询媒资列表 查询用户媒资列表, 支持指定媒资 ID 分类 状态 起止时间 分页信息等条件查询 具体参数可以参考查询媒资列表 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.queryassetmetareq; import com.huawei.vod.model.asset.queryassetmetarsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 QueryAssetListReq req = new QueryAssetListReq();// 设置查询视频列表信息请求参数 文档版本 01 ( ) 版权所有 华为技术有限公司 23

28 String[] assets = {"asset1", " asset2";// 构造查询视频信息的媒资 ID, 最多支持同时查询 10 个 req.setassetids(assets); req.setstatus(new String[]{"CREATING");// 设置视频状态, QueryAssetListRsp rsp = vodclient.queryassetlist(req);// 发送查询视频列表信息请求 System.out.println(new Gson().toJson(rsp));// 返回查询视频列表信息结果 查询媒资详细信息 查询用户媒资详情, 支持指定媒资 ID 条件查询 具体参数可以参考查询媒资详细信息 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.queryassetmetareq; import com.huawei.vod.model.asset.queryassetmetarsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 // 设置查询视频详情请求参数, 具体参数可以参考点播 API 文档 QueryAssetDetailReq req = new QueryAssetDetailReq(); // 构造查询视频详情的媒资 ID req.setassetid("asset1"); // 发送查询视频详情信息请求 QueryAssetDetailRsp rsp = vodclient.queryassetdetail(req); // 返回查询视频详情信息结果 System.out.println(new Gson().toJson(rsp)); 修改视频属性 支持修改视频属性值, 包括分类 分类名称 描述 所属的项目 ID tags 标题等 具体参数可以参考修改媒资属性 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.baseresponse; import com.huawei.vod.model.asset.updateassetmetareq; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 UpdateAssetMetaReq req = new UpdateAssetMetaReq();// 设置修改媒资属性请求参数 req.setassetid("assetid");// 设置媒资 ID req.setcategoryid("-1");// 设置媒资分类 id req.setdescription("update assetmeta");// 设置视频描述, 长度不超过 1024 个字节 req.setprojectid("projectid");// 设置用户项目编号 ProjectId, 查看项目 ID 参考 " 查看项目 ID" 章节 文档版本 01 ( ) 版权所有 华为技术有限公司 24

29 req.settags("tags");// 视频标签, 单个标签不超过 16 个字节, 最多不超过 16 个标签 多个用逗号分隔,UTF8 编码 req.settitle("title");// 设置媒体标题, 长度不超过 128 个字节,utf-8 编码 BaseResponse rsp = vodclient.updateassetmeta(req);// 发送修改媒资属性请求 System.out.println(new Gson().toJson(rsp));// 返回处理信息 删除视频 具体参数可以参考删除媒资 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.deleteassetreq; import com.huawei.vod.model.asset.deleteassetrsp; import java.util.arraylist; import java.util.list; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 DeleteAssetReq req = new DeleteAssetReq();// 设置删除视频请求参数 List<String> assetids = new ArrayList<String>();// 构造需要删除视频的媒资 ID assetids.add("assetid1"); assetids.add("assetid2"); req.setassetids(assetids);// 设置需要删除的视频 DeleteAssetRsp rsp = vodclient.deleteassets(req);// 发送删除视频请求 System.out.println(new Gson().toJson(rsp)); // 返回处理信息 4.6 CDN 预热 指定媒资 ID 预热 点播发布后可向 CDN 预热, 这样用户初次请求时, 将由 CDN 节点提供内容分发 具体接口参数请参考 CDN 预热 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.preheatingassetreq; import com.huawei.vod.model.asset.preheatingassetrsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 // 设置 CDN 预热请求参数 PreheatingAssetReq req = new PreheatingAssetReq(); // 设置媒资 ID, 已发布的媒资 req.setassetid("assetid"); // 发送 CDN 预热请求 PreheatingAssetRsp rsp = vodclient.preheatasset(req); 文档版本 01 ( ) 版权所有 华为技术有限公司 25

30 // 返回请求消息 System.out.println(new Gson().toJson(rsp)); 指定 URL 预热 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.preheatingassetreq; import com.huawei.vod.model.asset.preheatingassetrsp; import com.huawei.vod.model.asset.querypreheatingassetreq; import com.huawei.vod.model.asset.querypreheatingassetrsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 // 设置 CDN 预热请求参数 PreheatingAssetReq req = new PreheatingAssetReq(); // 设置媒资 URL, 媒资播放地址 ( 最多一次预热 10 个 url) req.seturls(collections.singletonlist(" b057c99bb8c6cd26b7df b2be7/play_video/cd12023af81befc50643a3e48cc6ea75_h. 264_1920X1080_HEAACV1_3000.mp4")); // 发送 CDN 预热请求 PreheatingAssetRsp preheatingassetrsp = vodclient.preheatasset(req); // 构建查询预热任务 QueryPreheatingAssetReq querypreheatingassetreq = new QueryPreheatingAssetReq(); // 根据创建预热任务返回的 taskid 进行查询 if (preheatingassetrsp.getstatus() == BaseResponse.SUCCESS) { querypreheatingassetreq.settaskid(preheatingassetrsp.gettaskid()); // 发送查询预热任务请求 QueryPreheatingAssetRsp querypreheatingassetrsp = vodclient.querypreheatingasset(querypreheatingassetreq); // 返回请求消息 System.out.println(gson.toJson(queryPreheatingAssetRsp)); 4.7 视频分类 创建视频分类 创建媒资分类, 需要设置媒资分类 ID 项目 ID 分类级别 分类名 所属的上级分类 最大支持三级分类, 每个分类最多支持创建 128 个子分类 具体接口参数请参考创建媒资分类 import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.category.createcategoryreq; import com.huawei.vod.model.category.createcategoryrsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 // 设置创建媒资分类请求参数 CreateCategoryReq req=new CreateCategoryReq(); 文档版本 01 ( ) 版权所有 华为技术有限公司 26

31 // 设置媒资分类名称 req.setname("name"); // 设置媒资父分类 ID, 一级分类父 ID 为 0 req.setparentid(0); // 发送创建媒资分类请求 CreateCategoryRsp rsp=vodclient.createassetcategory(req); System.out.println(new Gson().toJson(rsp)); 修改视频分类 支持修改视频分类属性值, 包括分类名 项目 ID 分类级别 所属的上级分类等 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.baseresponse; import com.huawei.vod.model.category.editcategoryreq; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 // 设置修改视频分类请求参数 EditCategoryReq req = new EditCategoryReq(); // 需要修改的分类的 ID req.setid(123); // 需要修改成的分类名称 req.setname("categoryname"); // 发送修改视频分类请求 BaseResponse baseresponse=vodclient.modifyassetcategory(req); System.out.println(new Gson().toJson(baseResponse)); 查询视频分类及子分类 支持查询指定媒资分类 ID 的分类信息, 及其子分类 ( 即下一级分类 ) 的列表 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.category.querycategoryreq; import com.huawei.vod.model.category.querycategoryrsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 // 设置查询视频分类请求参数 QueryCategoryReq req=new QueryCategoryReq(); // 设置视频分类 ID, 填 0 查询所有一级分类 req.setid(21); // 发送查询视频分类请求 QueryCategoryRsp querycategoryrsp = vodclient.queryassetcategory(req); System.out.println(new Gson().toJson(queryCategoryRsp)); 文档版本 01 ( ) 版权所有 华为技术有限公司 27

32 删除视频分类 支持指定视频分类 ID 的删除操作 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.baseresponse; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 // 媒资分类 ID int id=19; // 发送删除视频分类请求 BaseResponse baseresponse=vodclient.deleteassetcategory(id); System.out.println(new Gson().toJson(baseResponse)); 4.8 视频更新 更新文件并上传 对一个已创建的视频单独进行上传封面 更新视频文件或已有封面 如果是更新视频文件, 更新完后要通过 确认媒资上传 接口通知点播服务, 但如果是更新封面或单独上传封面, 则不需通知 具体接口参数请参考视频更新 调用 SDK 方法创建媒资并上传视频, 上传请参考初始化章节中的 ObsConfig 的配置进行 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.uploadassetreq; import com.huawei.vod.model.asset.uploadassetrsp; import com.huawei.vod.service.obsservice; import com.obs.services.model.partetag; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 UploadAssetReq req = new UploadAssetReq();// 设置媒资更新参数 req.setassetid("assetid");// 设置媒资 ID req.setvideoname("videoname");// 设置视频文件名, 可以带后缀, 也可以不带后缀 req.setvideomd5("videomd5");// 设置视频文件 MD5 值 // 设置上传文件类型 支持上传视频文件格式 :MP4 TS MOV MXF MPG FLV WMV AVI M4V F4V MPEG, 支持上传音频文件格式 :MP3 OGG WAV WMA APE FLAC AAC AC3 MMF AMR M4A M4R WV MP2, 若上传格式为音频文件, 则不支持转码, 添加水印, 添加字幕 req.setvideotype("mp4"); // 设置视频文件的本地地址, 即文件所在的文件地址, 如 /home/test.mp4 d://test.mp4, 如果需要使用 SDK 上传则该项必填 req.setvideofileurl("d://test.mp4"); req.setcoverid(0);// 设置封面 ID, 取值 0-7 当前只支持一张封面, 只能填 0 文档版本 01 ( ) 版权所有 华为技术有限公司 28

33 req.setcovertype("png");// 设置封面图片格式类型, 当前支持 JPG PNG req.setcovermd5("covermd5");// 设置封面文件 MD5 值 // 创建媒资请求体 UploadAssetReq 中新增 List<SubtitleReq> subtitles List<SubtitleReq> subtitlereqs = new ArrayList<>(); SubtitleReq subtitlereq = new SubtitleReq(); subtitlereq.setid(1); // 字幕 id, 目前只支持上传一个字幕文件, 取值为 [1,8] subtitlereq.settype("srt");// 字幕文件类型, 目前只支持 SRT 文件 subtitlereq.setlanguage("cn");// 字幕语言类型, 目前只能为 CN, 和 EN subtitlereq.setmd5("eiq3imk3cx8dh6ga/pes/q==");// 字幕文件 MD5 值 subtitlereqs.add(subtitlereq); req.setsubtitles(subtitlereqs); // 设置封面文件的本地地址, 即文件所在的文件地址, 如 /home/test.jpg d://test.jpg, 如果需要使用 SDK 上传则该项必填 req.setcoverfileurl("d://test.jpg"); // 启动上传, 可以设置回调接口, 但该回调接口仅会在更新视频源文件时回调 UploadAssetRsp rsp = vodclient.uploadassetauto(req, new ObsService.OnPartEtagUploadedListener() public void oninitmultiuploadpart(string uploadid) { // 视频文件更新上传任务开始时回调 System.out.println("Init end: " + public void onuploadeachpart(partetag partetag, int progress, String uploadid) { // 文件每上传完一段时回调 System.out.println(partEtag.toString() + " is end! Progress: " + progress public void oncompletemultiupload(string uploadid) { // 文件上传完成时回调 System.out.println("Complete end: " + public void onerror(throwable throwable) { // 上传过程中报错时回调 throwable.printstacktrace(); ); System.out.println(new Gson().toJson(rsp)); // 返回信息 更新文件暂不上传 调用 SDK 方法更新视频文件或封面但不上传, 一般发生在服务器发起更新请求, 然后转交给客户端如 App 浏览器上传 ( 可以参考并使用点播服务的上传 SDK), 如果是更新视频文件则需要在客户端上传完之后, 调用确认上传接口完成整个上传操作 ( 需要配置创建的视频的 ID, 并用该 ID 调用确认上传接口 ) import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.preheatingassetreq; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 UploadAssetReq req = new UploadAssetReq();// 设置媒资更新参数 文档版本 01 ( ) 版权所有 华为技术有限公司 29

34 req.setassetid("assetid");// 设置媒资 ID req.setvideoname("videoname");// 设置视频文件名, 可以带后缀, 也可以不带后缀 req.setvideomd5("videomd5");// 设置视频文件 MD5 值, 如果需要用响应结果的上传 url 进行上传, 则该参数必填且需要正确填写 // 设置上传文件类型 支持上传视频文件格式 :MP4 TS MOV MXF MPG FLV WMV AVI M4V F4V MPEG, 支持上传音频文件格式 :MP3 OGG WAV WMA APE FLAC AAC AC3 MMF AMR M4A M4R WV MP2, 若上传格式为音频文件, 则不支持转码, 添加水印, 添加字幕 req.setvideotype("mp4"); req.setcoverid(0);// 设置封面 ID, 取值 0-7 当前只支持一张封面, 只能填 0 req.setcovertype("png");// 设置封面图片格式类型, 当前支持 JPG PNG req.setcovermd5("covermd5");// 设置封面文件 MD5 值, 如果需要用响应结果的上传 url 进行上传, 则该参数必填且需要正确填写 // 创建媒资请求体 UploadAssetReq 中新增 List<SubtitleReq> subtitles List<SubtitleReq> subtitlereqs = new ArrayList<>(); SubtitleReq subtitlereq = new SubtitleReq(); subtitlereq.setid(1);// 字幕 id, 目前只支持上传一个字幕文件, 取值为 [1,8] subtitlereq.settype("srt");// 字幕文件类型, 目前只支持 SRT 文件 subtitlereq.setlanguage("cn");// 字幕语言类型, 目前仅支持 CN 和 EN // 字幕文件 MD5 值 subtitlereq.setmd5("eiq3imk3cx8dh6ga/pes/q=="); subtitlereqs.add(subtitlereq); req.setsubtitles(subtitlereqs); UploadAssetRsp rsp = vodclient.uploadasset(req);// 发送媒资更新请求 System.out.println(new Gson().toJson(rsp));// 返回信息 4.9 音频提取 对已上传的视频进行音频提取, 具体参数可以参考音频提取 代码示例 import com.google.gson.gson; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.extractaudiotaskreq; import com.huawei.vod.model.asset.extractaudiotaskrsp; import com.huawei.vod.model.asset.parameter; public static void main(string[] args) { VodClient vodclient = initvodclient(); ExtractAudioTaskReq req = new ExtractAudioTaskReq(); req.setassetid("assetid");// 设置媒体 ID // 设置音频封装格式 Parameter parameter = new Parameter(); parameter.setformat("mp3"); req.setparameter(parameter); ExtractAudioTaskRsp rsp = vodclient.extractaudiotask(req);// 发送提取音频请求 文档版本 01 ( ) 版权所有 华为技术有限公司 30

35 System.out.println(new Gson().toJson(rsp));// 返回处理信息 4.10 音视频处理 启动视频转码 视频截图 视频加密等处理 既可以同时启动多种操作, 也可以只启动一种操作 具体接口参数请参考媒体处理 说明 目前仅支持视频转码处理 代码示例 import com.google.gson.gson; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.assetprocessreq; import com.huawei.vod.model.asset.assetprocessrsp; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 AssetProcessReq req = new AssetProcessReq(); req.setassetid("assetid");// 设置媒体 ID req.settemplategroupname("templategroupname");// 设置视频转码的模板组的名称, 具体的模板组可以去点播 Console 进行创建和查看 Thumbnail thumbnail = new Thumbnail();// 初始化截图参数 // 设置截图类型为固定时间间隔采样截图,TIME 为定时采样, // PERCENT 为固定百分比截图, DOTS 为固定时间点截图, // 目前仅支持 TIME,DOTS 类型 thumbnail.settype(thumbnail.typeenum.time); thumbnail.settime(10);// 设定时间间隔, 范围 [1-100] type 设置为 DOTS 时, 需设置 dots 数组来指定时间点 thumbnail.setcoverposition(1);// 指定第一张截图结果作为封面 req.setthumbnail(thumbnail);// 设置截图参数到请求中 req.setautoencrypt(1);// 设置是否自动加密 AssetProcessRsp rsp = vodclient.processasset(req);// 发送媒体处理请求 System.out.println(new Gson().toJson(rsp));// 返回处理信息 4.11 智能封面 对已创建完成的媒资生成智能封面, 具体参数可以参考智能封面 华北 - 北京四 和 华东 - 上海二 两个区域暂不支持智能封面功能 代码示例 import com.huawei.vod.client.vodclient; import com.huawei.vod.model.smartcover.createsmartcoverreq; public static void main(string[] args) { VodClient vodclient = initvodclient();// 创建并初始化 VOD Client 对象 文档版本 01 ( ) 版权所有 华为技术有限公司 31

36 // 创建请求对象, 往请求对象设置媒资 ID CreateSmartCoverReq req = new CreateSmartCoverReq(); req.setassetid("{assetid"); new VodClient(vodConfig).createSmartCover(req); 4.12 视频剪辑 视频拼接 支持将多个已上传的视频按照指定顺序进行拼接, 生成一个完整单独的媒资 前提条件 目前仅支持 MP4 FLV 格式的视频任一种格式拼接或者混合拼接 一次拼接任务最多支持同时拼接 10 个视频 代码示例 SDK 为提交拼接任务的示例, 具体拼接任务的结果可调用查询媒资信息获取或者配置消息通知回调后获取任务结果 import com.google.gson.gson; import com.huawei.vod.client.vodclient; import com.huawei.vod.model.edit.assetconcatrsp; import com.huawei.vod.model.edit.createassetconcatreq; import java.util.arrays; public class Test { public static void main(string[] args) { // 初始化客户端 VodClient vodclient = initvodclient(); // 提交拼接任务 CreateAssetConcatReq createassetconcatreq = new CreateAssetConcatReq(); // 设置拼接视频的列表 CreateAssetConcatReq.setSourceAssets( Arrays.asList( "AssetId1", "AssetId2" )); // 设置参考视频 createassetconcatreq.setreferenceasset("assetid1"); AssetConcatRsp assetconcatrsp = vodclient.createassetconcat(createassetconcatreq); System.out.println(new Gson().toJson(assetConcatRsp)); 视频剪切 支持将源视频文件按指定偏移时间进行剪切, 生成新视频文件 新生成的视频文件属性 ( 分辨率 码率等 ) 和源文件保持一致 前提条件 目前仅支持 MP4 或 FLV 格式的视频剪切 文档版本 01 ( ) 版权所有 华为技术有限公司 32

37 代码示例 SDK 为提交剪切任务的示例, 具体剪切任务的结果可调用查询媒资信息获取或者配置消息通知回调后获取任务结果 import com.google.gson.gson; import com.huawei.vod.client.vodclient; import com.huawei.vod.model.edit.assetcutrsp; import com.huawei.vod.model.edit.createassetcutreq; public class Test { public static void main(string[] args) { // 初始化客户端 VodClient vodclient = initvodclient(); // 提交剪切任务 CreateAssetCutReq createassetconcatreq = new CreateAssetCutReq(); createassetconcatreq.setsourceasset("assetid"); // 设置剪切开始时间, 单位为秒, 可精确到两位小数 createassetconcatreq.setstartoffset(5.55f); // 设置剪切结束时间, 单位为秒, 可精确到两位小数 createassetconcatreq.setendoffset(10.55f); AssetCutRsp assetcutrsp = vodclient.createassetcut(createassetconcatreq); System.out.println(new Gson().toJson(assetCutRsp)); 4.13 视频审核 对媒资进行鉴政, 鉴恐, 鉴黄审核, 具体参数可以参考媒资审核 代码示例 public static void main(string[] args) { VodClient vodclient = initvodclient();// 创建并初始化 VOD Client 对象 // 创建请求对象, 往请求对象设置媒资 ID AsssetReviewReq req = new AssetReviewReq(); req.setassetid("{assetid"); // 初始化审核参数,politics terrorism porn 未传参时表示不进行此项检测, 传 -1 表示采用默认的置信度 Review review = new Review(); review.setinterval(5);// 设置截图时间间隔 review.setpolitics(80);// 设置政治人物检测时的置信度 review.setterrorism(80);// 设置暴恐元素检测时的置信度 review.setporn(80);// 设置涉黄内容检测时的置信度 req.setreview(review); AssetReviewRsp rsp = vodclient.createassetreviewtask(req); System.out.println(new Gson().toJson(rsp)); 4.14 查询密钥 终端播放 HLS AES128 加密视频时, 向租户管理系统请求密钥, 租户管理系统先查询其本地有没有已缓存的密钥, 没有时则向 VOD 查询 具体参数可以参考查询秘钥 文档版本 01 ( ) 版权所有 华为技术有限公司 33

38 代码示例 public static void main(string[] args) { // 创建并初始化 VOD Client 对象 VodClient vodclient = initvodclient(); // 创建请求对象, 往请求对象设置媒资 ID QueryCipherReq req = new QueryCipherReq(); req.setassetid("{assetid"); // 调用查询密钥接口 QueryCipherRsp rsp = vodclient.querycipher(req); // 处理查询到的密钥信息 System.out.println(new Gson().toJson(rsp)); 4.15 统计分析 统计源站信息 用于查询点播源站相关数据, 支持查询存储空间, 转码时长 public void testquerysummary(){ VodConfig vodconfig = new VodConfig(); // 创建 vod 客户端 vodconfig.setprojectid("14ce1d aba8b364ce e"); // 设置用户 projectid vodconfig.setendpoint("vod.cn-north-4.myhuaweicloud.com"); // 设置 vod 服务地址 // 设置 AK SK vodconfig.setak("ys0jvwussq23ql2pbmvh"); vodconfig.setsk("hcxkj2plar8h5kmp3joeaxo9sxab1roeomckonkr"); // 设置 iam 地址 vodconfig.setiamendpoint(" :31943"); // 创建请求 QueryStatReq req = new QueryStatReq(); // 设置查询终止时间 req.setend_time(" "); // 设置查询起始时间 req.setstart_time(" "); // 设置查询时间粒度 req.setinterval(3600); // 调用 vod 查询源站客户端 QueryVodStatRsp queryvodstatrsp = new VodClient(vodConfig).queryVodstat(req); System.out.println(new Gson().toJson(queryVodStatRsp)); 查询 cdn 统计信息 用于查询 cdn 相关数据信息, 支持查询 cdn 峰值带宽 cdn 流量 cdn 请求命中率 流量命中率 请求总数 具体参数可以参考查询 CDN 统计信息 文档版本 01 ( ) 版权所有 华为技术有限公司 34

39 @Test public void testquerycdnstat(){ // 创建 vod 客户端 VodConfig vodconfig = new VodConfig(); // 设置用户 projectid vodconfig.setprojectid("14ce1d aba8b364ce e"); // 设置 vod 地址 vodconfig.setendpoint("vod.cn-north-4.myhuaweicloud.com"); // 设置 AK SK vodconfig.setak("ys0jvwussq23ql2pbmvh"); vodconfig.setsk("hcxkj2plar8h5kmp3joeaxo9sxab1roeomckonkr"); // 设置 iam 地址 vodconfig.setiamendpoint(" :31943"); // 创建请求 QueryStatReq req = new QueryStatReq(); // 设置查询终止时间 req.setend_time(" "); // 设置查询起始时间 req.setstart_time(" "); // 设置统计数据类型, 当前取值有五种,cdn_bw:CDN 峰值带宽,cdn_flux:CDN 流量,req_num: 请求总数, req_hit_rate: 请求命中率,flux_hit_rate: 流量命中率 req.setstattype("cdn_bw"); // 设置查询时间粒度 req.setinterval(3600); // 调用 vod 查询 cdn 客户端 QueryCdnStatRsp querycdnstatrsp = new VodClient(vodConfig).queryCdnstat(req); System.out.println(new Gson().toJson(queryVodStatRsp)); 查询 TopN 视频信息 void testquerytop(){ VodConfig vodconfig = new VodConfig(); vodconfig.setprojectid("14ce1d aba8b364ce e"); vodconfig.setendpoint("vod.cn-north-4.myhuaweicloud.com"); vodconfig.setak("ys0jvwussq23ql2pbmvh"); vodconfig.setsk("hcxkj2plar8h5kmp3joeaxo9sxab1roeomckonkr"); vodconfig.setiamendpoint(" :31943"); QueryTopStatReq req = new QueryTopStatReq(); // 设置查询时间, 精确到天, 不支持查询当天的信息 req.setdate(" "); // 设置域名, 支持查询某一个域名或该用户所有域名, 所有域名设置为 ALL req.setdomain("2.cdn-vod.huaweicloud.com"); QueryTopStatRsp querytopstatrsp = new VodClient(vodConfig).quertTopStat(req); System.out.println(new Gson().toJson(queryTopStatRsp)); 文档版本 01 ( ) 版权所有 华为技术有限公司 35

40 4.16 获取鉴权 URL 给 CDN 加速域名设置 Key 防盗链后, 需要调用本接口获取带有鉴权信息的 URL, 才能进行视频播放 前提条件 获取未带加密信息的原始加速域名 URL 方法一 : 登录视频点播服务控制台, 查询获取启用 CDN 加速服务后的 URL i. 登录华为云, 点击右上角 控制台, 单击 服务列表 > 视频 > 视频点播 进入视频点播服务控制台 ii. 进入 视频管理 页面 单击视频右侧 管理 > 播放地址, 可获取视频播放 URL 方法二 : 调用查询媒资信息接口 获取加速域名上配置的密钥值, 请参见配置 Key 防盗链 代码示例 import com.google.gson.gson; import com.google.gson.gsonbuilder; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.baseresponse; import com.huawei.vod.model.auth.createauthinforeq; import com.huawei.vod.model.auth.createauthinforsp; import com.huawei.vod.model.auth.createdomainauthinforeq; public class DomainUrlAuthTest { private static final Gson gson = new GsonBuilder().disableHtmlEscaping().create(); public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 CreateDomainAuthInfoReq req = new CreateDomainAuthInfoReq(); // 加速域名上配置的密钥值 req.setkey("key"); 文档版本 01 ( ) 版权所有 华为技术有限公司 36

41 // 设置加密算法, 当前支持 Algorithm_A,Algorithm_B,Algorithm_C,Algorithm_D req.setalgorithm(createdomainauthinforeq.algorithm_d); // 未带加密信息的原始 url req.setoriginalurl(" eb501eb1e014fd8e7d15abd126dc3db9/81bc0ab9a7f64d9e9ff bb236d.mp4"); CreateAuthInfoRsp rsp = vodclient.createdomainauthinfourl(req); System.out.println(gson.toJson(rsp)); 4.17 获取临时 AK/SK/securityToken 租户服务端使用公有云账户的账户密码来获取临时 AK/SK/securityToken, 用于上传 SDK 中的上传操作, 用作上传 SDK 的初始化参数 代码说明 代码示例 SDK 中封装接口为统一身份认证服务 (IAM) 的获取临时 AK/SK 接口, 使用华为云账号的用户名 密码 账户名换取有时间限制的临时 AK SK, 需要配置 IAM 服务的 EndPoint, 具体可以查询 IAM 服务地区与终端节点对应关系 临时 AK SK 的有效时间在 15 分钟到 24 小时之间 import com.google.gson.gson; import com.google.gson.gsonbuilder; import com.huawei.common.obs.obsconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.retrofit.model.temporarycredential; public static void main(string[] args) { VodClient vodclient = initvodclient(); // 初始化客户端 // 配置 IAM 的 EndPoint, 请参考 获取关键参数 章节获取 vodclient.getvodconfig().setiamendpoint("iam.cn-north-4.myhuaweicloud.com"); // 传参并发送请求, 此处有 4 个参数, 分别为华为云账户的用户名 密码 账号名, 请参考 获取关键参数 章节获取 // 临时 AK SK securitytoken 的有效时间 ( 在 15 分钟到 24 小时之间, 单位为秒 ) TemporaryCredential result = vodclient.requesttemporarycredential("username", "password", "domainname", 3600); System.out.println(new GsonBuilder().disableHtmlEscaping().create().toJson(result)); 4.18 API&SDK 对应关系 表 4-1 表 1 SDK 与 API 对应关系 SDK API 接口说明 媒资上传 public CreateAssetByFileRsp createassetbyfile(createassetbyfilereq req) POST /v1.0/{project_id/ asset 创建媒资 ( 本地上传方式 ) 文档版本 01 ( ) 版权所有 华为技术有限公司 37

42 SDK API 接口说明 public ConfirmAssetUploadRsp confirmassetupload(confirmassetuploa dreq req) public BaseResponse bucketauthorized(bucketauthorizedreq req) public PublishAssetFromObsRsp publishassetfromobs(publishassetfrom ObsReq publishassetfromobsreq) 媒资管理 public PublishAssetRsp publishassets(publishassetreq req) public BaseResponse unpublishassets(updateassetmetareq req) public BaseResponse updateassetmeta(updateassetmetareq req) public DeleteAssetRsp deleteassets(deleteassetreq req) public UploadAssetRsp uploadasset(uploadassetreq req) public QueryAssetMetaRsp queryassetmeta(queryassetmetareq req) public QueryAssetDetailRsp queryassetdetail(queryassetdetailreq req) public QueryAssetListRsp queryassetlist(queryassetlistreq req) CDN 预热 public PreheatingAssetRsp preheatasset(cdnpreheatingreq req) public PreheatingAssetRsp preheatasset(preheatingassetreq req) 媒资处理 public AssetProcessRsp processasset(assetprocessreq req) PUT /v1.0/{project_id/ asset/status/uploaded PUT /v1.0/{project_id/ asset/authority POST /v1.0/{project_id/ asset/reproduction PUT /v1.0/{project_id/ asset/status/publish PUT /v1.0/{project_id/ asset/status/unpublish PUT /v1.0/{project_id/ asset/info DELETE /v1.0/ {project_id/asset PUT /v1.0/{project_id/ asset GET /v1.0/{project_id/ asset/info GET /v1.0/{project_id/ asset/details GET /v1.0/{project_id/ asset/list POST /v1.0/{project_id/ asset/preheating GET /v1.0/{project_id/ asset/preheating POST /v1.0/{project_id/ asset/process 确认媒资上传 桶授权 创建媒资 (OBS 转存方式 ) 发布媒资 发布媒资取消 修改媒资属性 删除媒资 更新媒资 查询媒资信息 查询媒资详细信息 查询媒资列表 CDN 预热 查询预热结果 媒资处理 文档版本 01 ( ) 版权所有 华为技术有限公司 38

43 SDK API 接口说明 public ExtractAudioTaskRsp extractaudiotask(extractaudiotaskreq extractaudiotaskreq) public AssetReviewRsp createassetreviewtask(assetreviewreq req) public AssetConcatRsp createassetconcat(createassetconcatre q req) public AssetCutRsp createassetcut(createassetcutreq req) public QueryCipherRsp querycipher(querycipherreq querycipherreq) 媒资分类 public CreateCategoryRsp createassetcategory(createcategoryreq req) public BaseResponse modifyassetcategory(modifycategoryre q req) public BaseResponse deleteassetcategory(int categoryid) public QueryCategoryRsp queryassetcategory(querycategoryreq req) 数据统计 public QueryCdnStatRsp querycdnstat(querystatreq querycdnstatreq) public QueryVodStatRsp queryvodstat(querystatreq querycdnstatreq) public QueryTopStatRsp querttopstat(querytopstatreq querytopstatreq) POST /v1.0/{project_id/ asset/extract_audio POST /v1.0/{project_id/ asset/review POST /v1.0/{project_id/ asset/concat POST /v1.0/{project_id/ asset/split GET /v1.0/{project_id/ asset/ciphers POST /v1.0/{project_id/ asset/category PUT /v1.0/{project_id/ asset/category DELETE /v1.0/ {project_id/asset/ category GET /v1.0/{project_id/ asset/category GET /v1.0/{project_id/ asset/cdn-statistics GET /v1.0/{project_id/ asset/vod-statistics GET /v1.0/{project_id/ asset/top-statistics 音频提取 媒资审核 视频拼接 视频剪切 密钥查询 创建媒资分类 修改媒资分类 删除媒资分类 查询分类及其子分类 查询 CDN 统计信息 查询源站统计信息 查询 TopN 视频信息 文档版本 01 ( ) 版权所有 华为技术有限公司 39

44 4.19 异常处理 连接超时 错误处理 出现此类异常原因一般是服务地址 (Endpoint) 错误或网络不通导致无法连接服务, 此时请检查服务地址 网络状况和代理设置 在使用 Java SDK 时, 当服务端或者 SDK 端出错时,SDK 会返回相应的异常信息 这些异常信息中会包含具体的错误信息, 例如错误码 (Error Code) 和错误消息 (Error Message) "Error Code" 是错误码, 可以查看错误码, 找到对应的错误描述, 找出对应的错误类型 "Error Message" 是错误信息, 可以快速的帮助定位问题, 找出错误原因并解决 如果您需要对 SDK 的错误进行处理, 可以参考如下示例编写代码 : /* * 业务流程 : * 1 首先需要导入点播 SDK 包 VodSDK.jar * 2 设置点播服务配置项, 包括点播服务节点地址 AK SK 和 ProjectId 等, 用于连接点播服务和进行授权等 * 3 构造媒资发布请求参数, 没有填必填字段 * 4 发送媒资发布请求 * 5 返回处理信息 */ import com.google.gson.gson; import com.huawei.vod.client.clientconfig; import com.huawei.vod.client.vodclient; import com.huawei.vod.client.vodconfig; import com.huawei.vod.model.asset.publishassetreq; import com.huawei.vod.model.asset.publishassetrsp; // 设置点播服务配置项构造方法 VodConfig vodconfig = new VodConfig(); // 设置用户项目编号 ProjectId, 查看项目 ID 参考 " 查看项目 ID" 章节 vodconfig.setprojectid("projectid"); // 设置点播服务节点地址, 如点播服务的 Endpoint 当前为 vod.cn-north-4.myhuaweicloud.com vodconfig.setendpoint("endpoint"); // 设置 SK,SK 的获取方法请参考 " 创建访问密钥 " 章节 vodconfig.setak("ak"); vodconfig.setsk("sk"); // 点播服务构造方法, 在没有配置代理的情况下使用该构造方法 VodClient vodclient = new VodClient(vodConfig); // 设置媒资发布请求参数 PublishAssetReq req = new PublishAssetReq(); // 媒资 id 是必填的, 但在这里没有填写媒资 id //String[] assets = {"asset1", " asset2"; // 设置媒资发布的媒资 ID req.setasset_id(req); // 发送媒资发布请求 PublishAssetRsp rsp = vodclient.publishassets(req); // 如果返回错误 if(baseresponse.fail == rsp.getstatus()) { 文档版本 01 ( ) 版权所有 华为技术有限公司 40

45 // 这里可以添加您自己的错误处理逻辑 // 例如, 打印具体的错误信息 System.out.println("ErrorCode ="+ rsp.geterrorcode()); System.out.println("ErrorMsg ="+ rsp.geterrormsg()); // 如果返回成功 else { // 返回处理结果 System.out.println(new Gson().toJson(rsp)); 文档版本 01 ( ) 版权所有 华为技术有限公司 41

46 5 GO SDK 5 GO SDK 5.1 开发前准备 5.2 初始化 5.3 请求与响应 5.4 媒资上传 5.5 媒资管理 5.6 媒资更新 5.7 媒资分类 5.8 媒体处理 5.9 CDN 预热 5.10 API & SDK 对应关系 5.1 开发前准备 环境准备 获取并安装 JetBrains GoLand, 可至 Intellij 官网下载 获取并安装 Go 安装包, 可至 Go 官方下载页面下载 SDK 获取 SDK 开发环境准备 如果您当前还没有下载 SDK, 请到视频点播 SDK 开发者中心下载 SDK 以 JetBrains GoLand 为例给出 SDK 工程导入步骤, 如果使用其他 IDE 工具, 请参照处理 : 步骤 1 打开 JetBrains GoLand, 选择菜单 File > New > Project 步骤 2 弹出 New Project 对话框, 选择 Go, 单击 Create 文档版本 01 ( ) 版权所有 华为技术有限公司 42

47 5 GO SDK 步骤 3 步骤 4 将 SDK 复制进工程目录 完成工程创建后, 目录结构如下 ---- 结束 5.2 初始化 VodClient 是 SDK 的客户端, 用户使用 SDK 时, 可以参考 API & SDK 对应关系调用 VodClient 的接口发送请求 在使用前需要初始化 VodClient, 完成调用接口必备参数配置 目前有用 AK SK 方式初始化和账号密码初始化两种方式, 详细配置方式参考下文 前提条件 已注册华为云, 并完成实名认证 文档版本 01 ( ) 版权所有 华为技术有限公司 43

48 5 GO SDK AK SK 方式初始化 获取点播服务对应区域的 EndPoint ( 如使用的 华北 - 北京四 的点播服务则 EndPoint 为 vod.cn-north-4.myhuaweicloud.com ), 具体请参见获取 EndPoint 获取访问密钥 AK 和 SK, 具体请参见获取 AK 和 SK 账号在点播服务对应区域的项目 ID 及用户名和账户名, 具体请参考获取项目 ID 和账号名 初始化客户端, 需要传入用户的 AK SK 项目 ID 点播服务的 EndPoint ObsConfig 为上传配置, 作为初始化客户端的一个参数, 其中需要配置 Obs 服务的 EndPoint, 对应的区域和点播一致 ( 具体可以查询获取 EndPoint) package main import ("./vod") func main() { var vodclient = initvodclientwithaksk() func initvodclientwithaksk() (vod.vodclient) { var vodconfig = vod.vodconfig{ak:"your ak", SK:"your sk", EndPoint:" ProjectId:"your projectid" var client = vod.vodclient{vodconfig:vodconfig return client 账号密码方式初始化 初始化客户端, 需要传入用户的用户名 登录密码 账号名 项目 ID 点播服务和 IAM 服务的 EndPoint 用户名 账号名可以在我的凭证界面查询 package main import ("./vod") func main() { var vodclient = initvodclientwithusername() func initvodclientwithaksk() (vod.vodclient) { var vodconfig = vod.vodconfig{username:"your username", Password:"your password", DomainName:"your domainname", IamEndPoint:" EndPoint:" ProjectId:"your projectid" var client = vod.vodclient{vodconfig:vodconfig return client 以账号密码方式初始化后会向 IAM 服务请求 Token,Token 有效期为 24 小时,Token 过期后可以调用 VodClient 的 RefreshToken() 进行 token 刷新 func (vodclient *VodClient) RefreshToken() (error) 文档版本 01 ( ) 版权所有 华为技术有限公司 44

49 5 GO SDK 5.3 请求与响应 BaseRequest BaseResponse SDK 是对点播服务的接口的封装, 每一个接口都按照接口文档将对应的请求与响应参数进行了封装, 所以用户在使用时可以通过查找接口文档中需要的参数来使用 SDK 对应封装的请求或响应参数, 具体使用方式可以参考创建媒资接口 每一个接口请求类都根据接口文档需要的请求参数进行了封装, 用户可以根据接口文档需要的参数对指定的请求类进行初始化, 如创建媒资接口 每一个接口响应类都包含 BaseResponse, 并在此基础上根据接口文档的响应参数进行了封装 BaseResponse 的公共参数如下 : 参数类型说明缺省值 RequestStatus int 任务状态, 接入请 求成功则为 0, 失 败为 1; 静态变量值 : ResponseSuccess = 0; ResponseFailed = 1; 0 HttpCode int 请求的 http 响应码 200 XRequestId String 每个请求的唯一标识 ID, 可以根据此 ID 联系我们工程师进行问题定位 Content String 请求的原始 json 内 容 N/A N/A ErrorCode String 请求的错误码 N/A ErrorMsg String 请求的错误信息 N/A 发送请求 初始化 VodClient 后, 可以调用 VodClient 的接口, 发起对应点播服务的请求, 并根据对应的响应类来获得此次请求的详细信息 接口对应关系可以参考 API & SDK 对应关系 5.4 媒资上传 点播服务支持两种方式创建媒资 文档版本 01 ( ) 版权所有 华为技术有限公司 45

50 5 GO SDK 以上传文件方式创建视频 通过对象存储服务 (OBS) 转存方式创建视频 点播服务最终会将用户的媒资相关文件存放在在华为云的对象存储服务中, 因此在创建视频和上传时会遇到和对象存储服务相关的一些概念比如对象 (Object) 桶 (Bucket) 等, 具体请参考对象存储服务的相关文档 创建媒资 调用 SDK 方法创建媒资, 一般发生在服务器创建视频元数据, 然后交给客户端如 APP 浏览器上传 ( 可以参考并使用点播服务的上传 SDK), 在客户端上传完之后需要调用确认上传接口完成整个上传操作 ( 需要配置创建的视频的 ID, 并用该 ID 调用确认上传接口 ) package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 createassetbyfile(vodclient) // 创建媒资接口 func createassetbyfile(client vod.vodclient){ var req = vod.createassetreq{ req.title = "test" // 设置媒资的标题 req.videoname = "test.mp4" // 设置媒资的文件名 req.videotype = "MP4" // 设置媒资的文件类型 req.tags = "tags" // 设置媒资的标签 req.description = "video desc" // 设置媒资的描述 req.videomd5 = "md5 of file" // 设置媒资文件的 MD5, 如果希望用响应返回的 url 进行上传, 则该值需正确填写 repose, err := client.createasset(req) // 发送请求 data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 初始化上传段 用于获取媒资文件上传过程中向 OBS 执行初始化上传段操作时需要的带有鉴权信息的 URL, 用户可以根据 OBS 的接口文档直接对改 URL 进行初始化段请求 获取初始化上传段授权信息时需要正确配置在调用创建媒资接口后获得的 Bucket ObjectKey 以及待上传文件的 Content-Type, 具体接口参数以及用法请参考获取授权 文档版本 01 ( ) 版权所有 华为技术有限公司 46

51 5 GO SDK package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 initmultiparttask(vodclient) // 初始化上传段 func initmultiparttask(client vod.vodclient){ response, err := client.initmultipartuploadtask("bucket", "objectkey", "contenttype") data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 上传段 用于获取媒资文件上传过程中向 OBS 执行上传段操作时需要的带有鉴权信息的 URL, 用户可以根据 OBS 的接口文档直接对改 URL 进行上传段请求 获取上传段授权信息时需要正确配置在调用创建媒资接口后获得的 Bucket ObjectKey 以及向 OBS 请求初始化段后返回的 UploadId 每一段文件的 MD5 每一段的编号 ( ), 具体接口参数以及用法请参考获取授权 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 uploadpart(vodclient) // 上传段 func uploadpart(client vod.vodclient){ response, err := client.uploadpart("bucket", "objectkey", "contentmd5", partnumber, "uploadid") data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID 文档版本 01 ( ) 版权所有 华为技术有限公司 47

52 5 GO SDK fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 合并段 用于获取媒资文件上传过程中向 OBS 执行合并段操作时需要的带有鉴权信息的 URL, 用户可以根据 OBS 的接口文档直接对改 URL 进行合并段请求 获取合并段授权信息时需要正确配置在调用创建媒资接口后获得的 Bucket ObjectKey 以及向 OBS 请求初始化段后返回的 UploadId, 具体接口参数以及用法请参考获取授权 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 completemultipartupload(vodclient) // 合并段 func completemultipartupload(client vod.vodclient) { response, err := client.completemultipartupload("bucket", "objectkey", "uploadid") data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 确认上传 调用 SDK 方法创建媒资, 一般发生在服务器创建视频元数据, 然后交给客户端如 App 浏览器上传 ( 可以参考并使用点播服务的上传 SDK), 在客户端上传完之后需要调用该接口完成视频上传完成的确认, 从而完成视频创建的整改流程 该接口也可以通知点播服务视频任务是否进行取消或者上传失败 具体接口参数请参考确认媒资上传 package main import ( "./vod" "encoding/json" "fmt" "strconv") 文档版本 01 ( ) 版权所有 华为技术有限公司 48

53 5 GO SDK func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 confirmassetupload(vodclient) // 确认媒资上传 func confirmassetupload(client vod.vodclient) { var req = vod.confirmassetuploadreq{assetid: "your assetid" // 设置已上传完并需要确认的媒资的 ID response, err := client.confirmassetuploaded(req) // 发送请求 data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 查询已上传段 用于获取媒资文件上传过程中向 OBS 执行查询已上传段操作时需要的带有鉴权信息的 URL, 用户可以根据 OBS 的接口文档直接对改 URL 进行查询已上传段操作请求 获取查询已上传段操作授权信息时需要正确配置在调用创建媒资接口后获得的 Bucket ObjectKey 以及向 OBS 请求初始化段后返回的 UploadId, 获取到已上传段可用于断点续传, 具体接口参数以及用法请参考获取授权 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 listmultipartupload(vodclient) // 列举已上传段 func listmultipartupload(client vod.vodclient) { response, err := client.lismultiparttaskparts("bucket", "objectkey", "uploadid") data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) 文档版本 01 ( ) 版权所有 华为技术有限公司 49

54 5 GO SDK fmt.println("json from vod: " + response.content) OBS 转存方式创建媒资 桶授权 该接口是通过点播服务从用户在 OBS 服务的桶里直接将媒资文件复制过来进行媒资创建, 需要用户提前在 OBS 服务 ( 创建好桶, 并将需要创建的媒资源文件上传到桶上, 然后通知点播进行媒资创建 注 : 在创建媒资前需要将桶对点播服务授权, 授权后点播服务才有权限进行文件复制, 授权操作可以参考桶授权 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 obsreproduction(vodclient) // obs 转存 func obsreproduction(client vod.vodclient) { var req = vod.publishassetfromobsreq{var input = vod.obsobject{ input.bucket = "mpc-test-01" // 配置输入文件所在的 bucket input.object = " mp4" // 配置输入文件所在的 objectkey input.location = "cn-north-4" // 配置输入文件所在的 OBS 的区域, 如 华北 - 北京四 填 cn-north-4 req.input = input req.title = "title" // 配置媒资的标题 req.videotype = "MP4" // 配置媒资的文件类型 req.templategroupname = "system_template_group" // 如果需要转码, 则配置转码模板组, 具体的转码模板组名称可以去控制台配置和获取 req.autopublish = 1 // 配置是否自动发布,1 为自动发布,0 为不发布 response, err := client.obsreproduction(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 在使用 OBS 转存接口创建视频之前, 需要将视频所在的桶对点播服务进行授权 具体参数可以参考桶授权 package main import ( 文档版本 01 ( ) 版权所有 华为技术有限公司 50

55 5 GO SDK "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 bucketauthority(vodclient) // 桶授权 func bucketauthority(client vod.vodclient) { var req = vod.bucketauthorizedreq{projectid:"your projectid", Bucket:"bucket", Operation: "0" response, err := client.bucketauthority(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 5.5 媒资管理 媒资发布 将媒资设置为发布状态, 可以通过传入多个媒资 ID 来完成多个视频的发布 具体参数可以参考媒资发布 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 assetpublish(vodclient) // 媒资发布 func assetpublish(client vod.vodclient) { var req = vod.publishassetreq{assetids: []string{"a4ad67b76bc5f773927e60ee7cce6e8f", "28e667d7daddcb dd55c35574" response, err := client.publishasset(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 文档版本 01 ( ) 版权所有 华为技术有限公司 51

56 5 GO SDK fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 媒资发布取消 将媒资设置为未发布状态, 可以通过传入多个媒资 ID 来完成多个视频的取消发布 具体参数可以参考媒资发布取消 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 assetunpublish(vodclient) // 媒资取消发布 func assetunpublish(client vod.vodclient) { var req = vod.publishassetreq{assetids: []string{"a4ad67b76bc5f773927e60ee7cce6e8f", "28e667d7daddcb dd55c35574" response, err := client.unpublishasset(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 查询媒资信息 查询用户媒资信息, 支持指定媒资 ID 分类 状态 起止时间 分页信息等条件查询 具体参数可以参考查询媒资信息 注意 : 查询用户媒资信息时, 支持指定媒资 ID 分类 状态 起止时间 ( 时间为 UTC 时间 ) 分页查询 如果指定媒资 ID, 则起止时间 分页和每页记录数无效 代码示例 1 指定了媒资 ID, 代码示例 2 未指定媒资 ID 文档版本 01 ( ) 版权所有 华为技术有限公司 52

57 5 GO SDK 通过媒资 ID 查询最多支持同时查询 10 个 示例一 : 该示例是以媒资 ID 为条件进行查询, 每次最多查询 10 个 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 queryassetmetabyassetid(vodclient) // 查询媒资信息 func queryassetmetabyassetid(client vod.vodclient) { var req = vod.queryassetmetareq{assetids: []string{" bce3959bf8bcba2645a59080", "47c3386d0fb008f836bed39b1ff77929" response, err := client.queryassetmeta(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 示例二 : package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 queryassetmetabystatus(vodclient) // 查询媒资信息 func queryassetmetabystatus(client vod.vodclient) { var req = vod.queryassetmetareq{ req.status = []string{"published", "TRANSCODING" // 配置待查询的状态 req.page = 0 // 配置页数 req.size = 10 // 配置每页大小 req.categoryid = 0 // 配置媒资分类 req.tags = "tags" // 配置标签 response, err := client.queryassetmeta(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 文档版本 01 ( ) 版权所有 华为技术有限公司 53

58 5 GO SDK var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 修改媒资属性 可以修改媒资属性值, 包括分类 分类名称 描述 所属的项目 ID tags 标题等 具体参数可以参考修改媒资属性 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 updateassetmeta(vodclient) // 更新媒资信息 func updateassetmeta(client vod.vodclient) { var req = vod.updateassetmetareq{ req.assetid = " bce3959bf8bcba2645a59080" // 设置需要修改的媒资的 ID req.title = "todaytest" // 修改媒资的标题 req.description = "desc" // 修改媒资的描述 req.tags = "test" // 修改媒资的标签 response, err := client.updateassetmeta(req) // 发送请求 data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 删除媒资 具体参数可以参考删除媒资 package main import ( "./vod" "encoding/json" "fmt" "strconv") 文档版本 01 ( ) 版权所有 华为技术有限公司 54

59 5 GO SDK func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 deletetasset(vodclient) // 删除媒资 func deletetasset(client vod.vodclient) { response, err := client.deleteasset("47c3386d0fb008f836bed39b1ff77929") // 设置需要删除的媒资的 ID data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 5.6 媒资更新 调用 SDK 方法更新媒资文件或封面, 一般发生在服务器发起更新请求, 然后转交给客户端如 App 浏览器上传 ( 可以参考并使用点播服务的上传 SDK), 如果是更新媒资文件则需要在客户端上传完之后, 调用确认上传接口完成整个上传操作 ( 需要配置创建的媒资的 ID, 并用该 ID 调用确认上传接口 ) 具体参数请参考媒资更新 代码示例 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 updateasset(vodclient) // 更新媒资文件 func updateasset(client vod.vodclient) { var req = vod.updateassetreq{ req.assetid = "assetid" // 需要更新的媒资 ID req.videomd5 = "videomd5" // 需要更新的文件的 MD5 req.videotype = "videotype" // 需要更新的文件的类型, 如 MP4 req.videoname = "videoname" // 需要更新的文件名 response, err := client.updateasset(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse 文档版本 01 ( ) 版权所有 华为技术有限公司 55

60 5 GO SDK fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 5.7 媒资分类 创建媒资分类 创建媒资分类 最大支持三级分类, 每个分类最多支持创建 128 个子分类 具体接口参数请参考创建媒资分类 注意 : 创建媒资分类, 需要设置媒资分类 ID 项目 ID 分类级别 分类名 所属的上级分类 最大支持三级分类, 每个分类最多支持创建 128 个子分类 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 createcategory(vodclient) // 创建媒资分类 func createcategory(client vod.vodclient) { var req = vod.createcategoryreq{ req.name = "gogo" req.parentid = response, err := client.createcategory(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 修改媒资分类 可以修改媒资分类属性值, 包括分类名 项目 ID 分类级别 所属的上级分类等 文档版本 01 ( ) 版权所有 华为技术有限公司 56

61 5 GO SDK package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 updatecategory(vodclient) // 修改媒资分类 func updatecategory(client vod.vodclient) { var req = vod.modifycategoryreq{ req.name = "gogo1" req.id = response, err := client.modifycategory(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 查询媒资分类及子分类 查询指定分类信息, 及其子分类 ( 即下一级分类 ) 的列表 支持根据媒资分类 ID 查询 注意 : 查询视频分类及子分类时, 需要指定媒资 ID package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 querycategory(vodclient) // 查询媒资分类 func querycategory(client vod.vodclient) { response, err := client.querycategory(27963) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 文档版本 01 ( ) 版权所有 华为技术有限公司 57

62 5 GO SDK fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 删除媒资分类 删除媒资分类需要提供媒资分类 ID package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 deletecategory(vodclient) // 删除媒资分类 func deletecategory(client vod.vodclient) { response, err := client.deletecategory(27964) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 5.8 媒体处理 启动媒资转码 截图 添加水印等处理 既可以同时启动多种操作, 也可以只启动一种操作 具体接口参数请参考媒体处理 说明 目前仅支持视频转码处理 截图处理和添加水印处理暂不支持 代码示例 package main import ( "./vod" "encoding/json" "fmt" "strconv") 文档版本 01 ( ) 版权所有 华为技术有限公司 58

63 5 GO SDK func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 processasset(vodclient) // 媒资处理 func processasset(client vod.vodclient) { var req = vod.assetprocessreq{ req.assetid = "your assetid" // 需要进行转码的媒资 ID req.templategroupname = "system_template_group " // 转码模板组名称, 具体可以登录控制台获取 response, err := client.processasset(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 5.9 CDN 预热 点播发布后可向 CDN 预热 具体接口参数请参考 CDN 预热 代码示例 package main import ( "./vod" "encoding/json" "fmt" "strconv") func main() { var vodclient = initvodclientwithaksk() // 初始化客户端 cdnpreheating(vodclient) // 媒资预热 func cdnpreheating(client vod.vodclient) { var req = vod.preheatingassetreq{ req.assetid = "your assetid" // 需要预热的媒资的 ID response, err := client.cdnpreheating(req) data, _ := json.marshal(response) if err!= nil{ fmt.println(err) if response.requeststatus == vod.responsesuccess { // 此时 vod 返回的 http 错误码表示请求成功, 如 200 fmt.println("response: " + string(data)) // 打印结果 var baseresponse = response.baseresponse fmt.println("httpcode: " + strconv.itoa(baseresponse.httpcode)) // 请求的 http 响应码 fmt.println("xrequestid: " + baseresponse.xrequestid) // 请求的唯一标识 ID fmt.println("json from vod: " + baseresponse.content) // 从 vod 获得的原始 json else { 文档版本 01 ( ) 版权所有 华为技术有限公司 59

64 5 GO SDK fmt.println("errorcode: " + response.errorcode) fmt.println("errormsg: " + response.errormsg) fmt.println("json from vod: " + response.content) 代码说明 点播发布后可向 CDN 预热, 需要设置已发布的媒资 ID 5.10 API & SDK 对应关系 表 5-1 表 1 SDK 与 API 对应关系 SDK API 接口说明 媒资上传 func (vodclient *VodClient) CreateAsset(req CreateAssetReq) func (vodclient *VodClient) ConfirmAssetUploaded(req ConfirmAssetUploadReq) func (vodclient *VodClient) InitMultipartUploadTask(bucket string, objectkey string, contenttype string) func (vodclient *VodClient) UploadPart(bucket string, objectkey string, contentmd5 string, partnumber int, uploadid string) func (vodclient *VodClient) CompleteMultipartUpload(bucket string, objectkey string, uploadid string) func (vodclient *VodClient) ListMultipartTaskParts(bucket string, objectkey string, uploadid string) func (vodclient *VodClient) BucketAuthority(req BucketAuthorizedReq) func (vodclient *VodClient) ObsReproduction(req PublishAssetFromObsReq) 媒资管理 POST /v1.0/ {project_id/asset PUT /v1.0/{project_id/ asset/status/uploaded GET /v1.1/{project_id/ asset/authority GET /v1.1/{project_id/ asset/authority GET /v1.1/{project_id/ asset/authority GET /v1.1/{project_id/ asset/authority PUT /v1.0/{project_id/ asset/authority POST /v1.0/ {project_id/asset/ reproduction 上传方式创建媒资确认媒资上传初始化上传段上传段合并段查询已上传段桶授权 OBS 转存方式创建媒资 文档版本 01 ( ) 版权所有 华为技术有限公司 60

65 5 GO SDK SDK API 接口说明 func (vodclient *VodClient) UpdateAssetMeta(req UpdateAssetMetaReq) func (vodclient *VodClient) PublishAsset(req PublishAssetReq) func (vodclient *VodClient) UnPublishAsset(req PublishAssetReq) func (vodclient *VodClient) QueryAssetMeta(req QueryAssetMetaReq) func (vodclient *VodClient) UpdateAssetMeta(req UpdateAssetMetaReq) func (vodclient *VodClient) DeleteAsset(assetId string) func (vodclient *VodClient) ProcessAsset(req AssetProcessReq) func (vodclient *VodClient) CdnPreheating(req PreheatingAssetReq) 分类管理 func (vodclient *VodClient) CreateCategory(req CreateCategoryReq) func (vodclient *VodClient) ModifyCategory(req ModifyCategoryReq) func (vodclient *VodClient) DeleteCategory(categoryId int) func (vodclient *VodClient) QueryCategory(categoryId int) PUT /v1.0/{project_id/ asset PUT /v1.0/{project_id/ asset/status/publish PUT /v1.0/{project_id/ asset/status/unpublish GET /v1.0/{project_id/ asset/info PUT /v1.0/{project_id/ asset/info DELETE /v1.0/ {project_id/asset POST /v1.0/ {project_id/asset/ process POST /v1.0/ {project_id/asset/ preheating POST /v1.0/ {project_id/asset/ category PUT /v1.0/{project_id/ asset/category DELETE /v1.0/ {project_id/asset/ category GET /v1.0/{project_id/ asset/category 媒资更新媒资发布媒资发布取消查询媒资信息修改媒资属性删除媒资媒资处理 CDN 预热创建媒资分类修改媒资分类删除媒资分类查询分类及其子分类 文档版本 01 ( ) 版权所有 华为技术有限公司 61

66 6 错误码参考 6 错误码参考 错误码 VOD VOD 错误信息描述 系统问题, 请联系华为工程师解决 服务内部通信异常, 请联系华为工程师解决 VOD 请求参数非法, 非法字段 :{0 VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD 身份认证失败 用户未实名认证, 请检查 用户处于异常状态, 请检查 租户 ID 校验失败, 请检查 请求方式不正确, 请检查 请求内容类型不正确, 请检查 媒资处于未下载成功或者未发布状态, 请检查 操作失败, 当前媒资状态不允许更新 媒资或资源不存在, 请检查 媒资类型暂不支持 媒资分类不存在, 请检查 媒资分类已存在, 请检查 媒资分类超过最大层级, 请检查 媒资分类超过最大个数限制, 请检查 主题不存在, 请检查 主题已存在, 请检查 设置消息通知失败, 无权限发布消息到主题, 请检查 文档版本 01 ( ) 版权所有 华为技术有限公司 62

67 6 错误码参考 错误码 VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD VOD 错误信息描述 Referer 头域校验失败, 请检查 url 鉴权设置失败, 旧密钥尚未过期, 无法设置新密钥, 过期后请再次设置新密钥 创建媒资转码任务失败, 请联系华为工程师解决 无权限执行该操作 对象存储源地址或者目的地址不正确, 请检查 获取对象存储源文件失败 hms 请求播放接口鉴权失败 公测限额, 用量超过阈值 任务处理成功 任务处理中 请求参数非法, 请检查 模板组已存在 当前媒资状态不支持该操作 媒资发布失败 VOD 允许创建的域名数不能超过 {0 个 VOD 预热 url 总数不能超过 {0 个 VOD 刷新 url 总数不能超过 {0 个 VOD https 配置中, 请稍后重试 VOD 未开通 cdn 加速域名或者加速域名未生效. VOD 修改失败, 请求先确认水印图片上传. VOD VOD VOD VOD 媒资转码成功 媒资转码失败 OBS 转存媒资发布成功 OBS 转存媒资发布失败 VOD Request parameters is invalid VOD Request is invalid 请求参数非法, 缺少必要参数, 或者参数值格式不正确, 具体错误信息请查看错误描述 message 字段 响应体异常, 具体错误信息请查看错误描述 errormsg 字段 文档版本 01 ( ) 版权所有 华为技术有限公司 63

68 6 错误码参考 错误码 错误信息描述 VOD encrypt url failed 加密失败, 具体错误信息请查看错误描述 errormsg 字段 VOD Connect to VOD Fail,please check request url 连接 VOD 异常,URL 地址有误或网络连接异常 文档版本 01 ( ) 版权所有 华为技术有限公司 64

69 7 附录 7 附录 7.1 JDK 环境配置 7.1 JDK 环境配置 步骤 1 根据系统情况下载 JDK 安装包, 建议下载 JDK1.8 您需要根据自己的 Windows 系统版本下载对应的 JDK1.8 版本, 下载前请先勾选 Accept License Agreement 步骤 2 双击安装包, 根据安装向导完成 JDK 安装 步骤 3 Windows 桌面右键单击 计算机, 选择 属性 步骤 4 步骤 5 步骤 6 在左侧导航中选择 高级系统设置, 弹出 系统属性 窗口 单击 环境变量, 弹出 环境变量 窗口 配置环境变量 1. 在 用户变量 下单击 新建, 新建用户变量, 变量名为 JAVA_HOME, 变量值为 JDK 的安装路径, 如 C:\ProgramFiles\Java\jdk1.8.0_45 文档版本 01 ( ) 版权所有 华为技术有限公司 65

70 7 附录 2. 在 系统变量 下选择 PATH 变量, 单击 编辑, 将变量值末尾新增 ; %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 3. 在 系统变量 下新建系统变量, 变量名为 CLASSPATH, 变量值为.; %JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 4. 单击 确定, 完成环境变量的配置 步骤 7 选择 开始 -> 运行, 输入 cmd, 执行命令 :java -version 若命令执行成功, 则说明环境变量配置成功 ---- 结束 文档版本 01 ( ) 版权所有 华为技术有限公司 66

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

SDK参考

SDK参考 文档版本 03 发布日期 2019-01-30 华为技术有限公司 版权所有 华为技术有限公司 2019 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

SDK参考

SDK参考 文档版本 01 发布日期 2019-09-11 华为技术有限公司 版权所有 华为技术有限公司 2019 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

API参考

API参考 文档版本 03 发布日期 2018-06-20 华为技术有限公司 版权所有 华为技术有限公司 2018 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

SDK参考

SDK参考 文档版本 05 发布日期 2019-06-25 华为技术有限公司 版权所有 华为技术有限公司 2019 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

SDK参考

SDK参考 发布日期 2018-10-23 目录 目录 1 内容审核 SDK 环境搭建... 1 1.1 申请服务... 1 1.2 获取 SDK... 1 1.3 Java 开发环境配置... 1 1.4 Eclipse 安装与 SDK 工程导入... 2 1.5 AK/SK 认证... 3... 5 2.1 文本审核... 5 2.1.1 文本内容检测示例... 5 2.2 图像审核... 6 2.2.1

More information

云数据库 RDS SDK

云数据库 RDS SDK 云数据库 RDS SDK SDK SDK 下载 SDK 下载 最新版本 java_sdk.zip python_sdk.zip php_sdk.zip c#_sdk.zip 历史版本 2015-11-3 java_sdk.zip python_sdk.zip php_sdk.zip c#_sdk.zip JAVA 教程 JAVA 创建 Access Key 登陆阿里云账号 打开 我的 Access

More information

SDK参考

SDK参考 文档版本 03 发布日期 2018-07-30 华为技术有限公司 版权所有 华为技术有限公司 2018 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址   access_token=access_token (http 停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)

More information

untitled

untitled How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream

More information

新美大酒店开放平台SDK(.NET版)使用说明.pages

新美大酒店开放平台SDK(.NET版)使用说明.pages SDK(.NET 版 ) 使 用说明 1 SDK 包说明 1.1 获取 SDK SDK 可以在数据平台下载, 也可直接通过下载地址获得 下载地址 : http://s3.meituan.net/v1/mss_de81c933e113413ea913a772b707b9c9/open-platform-sdk/mthotelopenplatform-sdk-1.0-net.zip 下载成功后, 解压后可获得

More information

1. 基本概念 作业 (job) 一次多媒体操作称之为一个作业, 一次多媒体请求里可以包含多个作业 容器 (container) 多媒体文件的格式 编码器 (codec) 音视频文件的编码格式 搜狐多媒体服务支持转码格式 Container Audio Codecs Video Codecs fla

1. 基本概念 作业 (job) 一次多媒体操作称之为一个作业, 一次多媒体请求里可以包含多个作业 容器 (container) 多媒体文件的格式 编码器 (codec) 音视频文件的编码格式 搜狐多媒体服务支持转码格式 Container Audio Codecs Video Codecs fla 搜狐云台多媒体服务 Java SDK User Guide 搜狐云台多媒体服务 Java SDK User Guide 欢迎使用 1. 基本概念 2.Media java 客户端 2.1 初始化客户端 2.2 初始化客户端 3.Job 操作 3.1 创建 Job 3.2 查询 Job 3.3 取消 Job 3.4 检验 job 参数 欢迎使用 本文档是搜狐多媒体服务提供的开发者指南文档 本文档并不会详细描述

More information

ÿþ

ÿþ 100 15 http://www.cyberlink.com 886-2-8667-1298 886-2-8667-1385 Copyright (C) 2014 CyberLink Corporation. All rights reserved. ...1...1...1...3...3...3...4...4...7...7...8...9...9...10...12...13...14...17...17...18...19...21...21

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

javascript sdk javascript sdk 列出 Bucket 内的对象上传 textarea 内容到 Bucket 上传本地文件生成私有下载链接生成带过期时间的私有链接删除对象下载对象拷贝对象查看文件访问权限设置文件访问权限获取静态网站配置设置静态网站删除静态网站查询对象元数据查询

javascript sdk javascript sdk 列出 Bucket 内的对象上传 textarea 内容到 Bucket 上传本地文件生成私有下载链接生成带过期时间的私有链接删除对象下载对象拷贝对象查看文件访问权限设置文件访问权限获取静态网站配置设置静态网站删除静态网站查询对象元数据查询 javascript sdk javascript sdk 列出 Bucket 内的对象上传 textarea 内容到 Bucket 上传本地文件生成私有下载链接生成带过期时间的私有链接删除对象下载对象拷贝对象查看文件访问权限设置文件访问权限获取静态网站配置设置静态网站删除静态网站查询对象元数据查询桶的多版本 Bucket 开启对象多版本支持挂起 Bucket 的多版本对象功能浏览器客户端浏览器客户端的

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

复件 Chinese usermanual android tv box

复件 Chinese usermanual android tv box Android TV Box User Manual 産 品 說 明 書 型 號 : TD-Q8 序 言 非 常 感 謝 您 選 擇 安 卓 多 媒 體 播 放 器, 爲 了 方 便 您 盡 快 熟 悉 使 用, 我 們 爲 您 配 備 了 用 戶 使 用 說 明 書, 在 使 用 前 請 認 真 閱 讀 並 妥 善 保 存, 以 備 參 考 聲 明 本 産 品 內 含 自 動 聯 網 功 能, 該

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

United Nations Convention Against Transnational Organized Crime and the Protocols thereto

United Nations Convention Against Transnational Organized Crime and the Protocols thereto 联 合 国 打 击 跨 国 有 组 织 犯 罪 公 约 及 其 议 定 书 联 合 国 联 合 国 毒 品 和 犯 罪 问 题 办 事 处 维 也 纳 联 合 国 打 击 跨 国 有 组 织 犯 罪 公 约 及 其 议 定 书 联 合 国 2004 年, 纽 约 前 言 通 过 于 2000 年 12 月 在 意 大 利 巴 勒 莫 签 署 联 合 国 打 击 跨 国 有 组 织 犯 罪 公 约,

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

SDK参考

SDK参考 文档版本 10 发布日期 2019-05-15 华为技术有限公司 版权所有 华为技术有限公司 2019 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 华为云帮助中心 消息通知服务 发送短信 六步发送短信 消息通知服务是可靠的 可扩展的 海量的消息处理服务 它大大简化系统耦合, 能够根据用户的需求, 向订阅终端推送不同类型的消息, 如电子邮件 短信等 消息通知服务提供短信业务, 目前仅面向企业用户开放 在发送短信前, 您需要创建华为云帐号 完成企业认证 进行帐号充值和申请短信签名, 等短信签名审批通过就可发送短信 发送短信的方式有三种 : 登录控制台

More information

使用手册 产品功能介绍 控制台 视频上传 媒体库 视频预览 媒体工作流 转码设置 消息发送设置 CDN 加速域名查询 添加 媒资 存储 - 支持媒资库 标题 标签 分类 描述 搜索 - 媒体工作流 集成对象存储服务 (OSS), 提供海量 安全和高可靠的云存储服务, 支持文件上传多平台 SDK 转码

使用手册 产品功能介绍 控制台 视频上传 媒体库 视频预览 媒体工作流 转码设置 消息发送设置 CDN 加速域名查询 添加 媒资 存储 - 支持媒资库 标题 标签 分类 描述 搜索 - 媒体工作流 集成对象存储服务 (OSS), 提供海量 安全和高可靠的云存储服务, 支持文件上传多平台 SDK 转码 视频点播 使用手册 使用手册 产品功能介绍 控制台 视频上传 媒体库 视频预览 媒体工作流 转码设置 消息发送设置 CDN 加速域名查询 添加 媒资 存储 - 支持媒资库 标题 标签 分类 描述 搜索 - 媒体工作流 集成对象存储服务 (OSS), 提供海量 安全和高可靠的云存储服务, 支持文件上传多平台 SDK 转码 集成媒体转码服务 (Media Transcoding), 媒体转码服务功能介绍,

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

SDK参考

SDK参考 文档版本 02 发布日期 2018-01-14 华为技术有限公司 版权所有 华为技术有限公司 2018 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

活动指南

活动指南 附 件 2014 年 第 十 五 届 全 国 中 小 学 电 脑 制 作 活 动 第 三 届 中 国 国 际 学 生 信 息 科 技 创 意 大 赛 指 南 全 国 中 小 学 电 脑 制 作 活 动 中 国 国 际 学 生 信 息 科 技 创 意 大 赛 组 织 委 员 会 编 二 一 三 年 十 二 月 目 录 一 人 员 范 围 二 项 目 设 置 三 评 选 类 项 目 项 目 设 置 相

More information

预热缓存接口

预热缓存接口 1 3 3 4 4 4 4 4 6 6 6 6 6 7 7 10 10 10 10 11 目录目录目录 PreloadCaches 描述请求语法请求参数 返回参数示例 RefreshCaches 描述请求语法请求参数 返回参数示例 GetRefreshOrPreloadTask 描述请求参数 返回参数 Data 示例 GetRefreshOrPreloadQuota 描述请求语法返回参数示例目录 018-04-1

More information

ViewStick 2_UG_TC.pdf

ViewStick 2_UG_TC.pdf ViewStick 2 Wireless Presentation Gateway : VS16704 ViewSonic ViewSonic 25 ViewSonic ViewSonic ViewSonic 50 C (122 F) 0 C (32 F) 35 C (95 F) FCC FCC FCC / FCC ID FCC ID: GSS-VS15989 FCC 15 (1) (2) FCC

More information

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

}; P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ,   string imagedata; if(0!= read_image(a.jpg,imagedata)) { return -1; } string rsp; ytopen_sdk m_sd tencentyun-youtu c++ sdk for 腾讯云智能优图服务 & 腾讯优图开放平台 安装 运行环境 Linux 依赖项 - curl-7.40.0, 获取更新版本 https://github.com/bagder/curl - openssl-1.0.1k, 获取更新版本 https://github.com/openssl/openssl 构建工程 工程采用 CMake 构建 1.

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo 魔盾安全分析报告 分析类型 开始时间 结束时间 持续时间 分析引擎版本 FILE 2016-11-25 00:20:03 2016-11-25 00:22:18 135 秒 1.4-Maldun 虚拟机机器名 标签 虚拟机管理 开机时间 关机时间 win7-sp1-x64 win7-sp1-x64 KVM 2016-11-25 00:20:03 2016-11-25 00:22:18 魔盾分数 0.0

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

MoStash_User_Guide_TW

MoStash_User_Guide_TW 魔立碟 ios Flash Drive with Smart Stand 使用說明書 MoStash MoStash MoStash MoStash 1-2 MoStash App 3 MoStash App App 4-5 MoStash App ios MoStash MoStash ios MoStash 6-14 15-16 MoStash Lightning USB 3.0 Apple MFi

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

关 于 本 说 明 书 本 设 备 采 用 三 星 的 高 标 准 和 专 门 技 术, 提 供 优 质 的 移 动 通 讯 和 娱 乐 体 验 本 使 用 说 明 书 专 门 设 计 用 于 详 细 介 绍 设 备 的 功 能 和 特 性 使 用 设 备 之 前, 请 阅 读 本 说 明 书, 以

关 于 本 说 明 书 本 设 备 采 用 三 星 的 高 标 准 和 专 门 技 术, 提 供 优 质 的 移 动 通 讯 和 娱 乐 体 验 本 使 用 说 明 书 专 门 设 计 用 于 详 细 介 绍 设 备 的 功 能 和 特 性 使 用 设 备 之 前, 请 阅 读 本 说 明 书, 以 SM-N9005 使 用 说 明 书 www.samsung.com 关 于 本 说 明 书 本 设 备 采 用 三 星 的 高 标 准 和 专 门 技 术, 提 供 优 质 的 移 动 通 讯 和 娱 乐 体 验 本 使 用 说 明 书 专 门 设 计 用 于 详 细 介 绍 设 备 的 功 能 和 特 性 使 用 设 备 之 前, 请 阅 读 本 说 明 书, 以 确 保 安 全 和 正 确 使

More information

SDK参考

SDK参考 文档版本 06 发布日期 2019-02-02 华为技术有限公司 版权所有 华为技术有限公司 2019 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

業 用 地 出 讓 最 低 價 標 準 不 得 低 於 土 地 取 得 成 本 土 地 前 期 開 發 成 本 和 按 規 定 收 取 的 相 關 費 用 之 和 工 業 用 地 必 須 採 用 招 標 拍 賣 掛 牌 方 式 出 讓 其 出 讓 價 格 不 得 低 於 公 佈 的 最 低 價 標

業 用 地 出 讓 最 低 價 標 準 不 得 低 於 土 地 取 得 成 本 土 地 前 期 開 發 成 本 和 按 規 定 收 取 的 相 關 費 用 之 和 工 業 用 地 必 須 採 用 招 標 拍 賣 掛 牌 方 式 出 讓 其 出 讓 價 格 不 得 低 於 公 佈 的 最 低 價 標 我 們 為 一 間 所 有 運 營 均 在 中 國 進 行 的 甲 級 物 流 設 施 供 應 商 以 下 為 對 我 們 在 中 國 的 業 務營運有重大關係的中國法律及法規概要 項目的開發 開發用地 儘 管 中 國 的 所 有 土 地 均 歸 國 家 或 集 體 所 有 然 而 個 人 及 企 業 可 獲 得 土 地 使 用 權 及 持 有 有關土地使用權作開發用途 全 國 人 民 代 表 大

More information

条款

条款 中 银 保 险 有 限 公 司 国 内 贸 易 信 用 保 险 (C 款 ) 条 款 1. 承 保 范 围 1.01 被 保 险 人 所 获 得 的 保 障 我 们 是 特 别 条 款 中 所 称 的 保 险 人 我 们 向 您, 即 特 别 条 款 中 所 称 的 被 保 险 人, 签 发 本 保 单, 并 就 本 保 单 收 取 保 险 费 根 据 保 单 的 条 款 和 条 件, 如 果 由

More information

SDK参考

SDK参考 文档版本 05 发布日期 2018-12-12 华为技术有限公司 版权所有 华为技术有限公司 2018 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束, 本文档中描述的全部或部分产品

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

展 望 与 述 评 2 广 电 设 备 与 技 术 2013.2

展 望 与 述 评 2 广 电 设 备 与 技 术 2013.2 展 望 与 述 评 2013.2 广 电 设 备 与 技 术 1 展 望 与 述 评 2 广 电 设 备 与 技 术 2013.2 展 望 与 述 评 2013.2 广 电 设 备 与 技 术 3 展 望 与 述 评 4 广 电 设 备 与 技 术 2013.2 展 望 与 述 评 2013.2 广 电 设 备 与 技 术 5 展 望 与 述 评 骆 萧 萧 卜 筱 皛 本 文 讨 论 了 在 非

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

S3.Net SDK 文档 1 SDK 说明 对象存储.Net SDK 使用开源的 S3.Net SDK 本文档介绍用户如何使用 S3.Net SDK 来 使用对象存储服务 更加详细的接口参数说明, 请在使用时参照 S3.Net SDK 官方说 明

S3.Net SDK 文档 1 SDK 说明 对象存储.Net SDK 使用开源的 S3.Net SDK 本文档介绍用户如何使用 S3.Net SDK 来 使用对象存储服务 更加详细的接口参数说明, 请在使用时参照 S3.Net SDK 官方说 明 S3.Net SDK 文档 1 SDK 说明 对象存储.Net SDK 使用开源的 S3.Net SDK 本文档介绍用户如何使用 S3.Net SDK 来 使用对象存储服务 更加详细的接口参数说明, 请在使用时参照 S3.Net SDK 官方说 明 https://aws.amazon.com/cn/sdk-for-net/ 2 安装 SDK 2.1 依赖环境 windows 平台 : 安装.Net

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information

第一章简介 RippleTek 微信认证服务 API 为开发者提供 HTTP 接口, 即开发者可通过发起包含 JSON 数据的 HTTP POST 请求, 向 RippleTek 微信认证服务器申请特定操作 ( 认证 URL 上网验证码 取消认证和查询用户 OPENID) 开发者可以使用此套 API

第一章简介 RippleTek 微信认证服务 API 为开发者提供 HTTP 接口, 即开发者可通过发起包含 JSON 数据的 HTTP POST 请求, 向 RippleTek 微信认证服务器申请特定操作 ( 认证 URL 上网验证码 取消认证和查询用户 OPENID) 开发者可以使用此套 API 微信认证接口文档 v1.1 第一章简介 RippleTek 微信认证服务 API 为开发者提供 HTTP 接口, 即开发者可通过发起包含 JSON 数据的 HTTP POST 请求, 向 RippleTek 微信认证服务器申请特定操作 ( 认证 URL 上网验证码 取消认证和查询用户 OPENID) 开发者可以使用此套 API 定制开发基于 RippleTek 热点解决方案的微信认证管理 第二章获取认证链接

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

暴风云视点播解决方案

暴风云视点播解决方案 暴 风 云 视 频 点 播 解 决 方 案 目 录 1. 简 介...2 1.1. 点 播 的 定 义...2 1.2. 点 播 的 基 本 功 能 描 述... 2 1.2.1. 基 本 功 能...2 1.2.2. 功 能 示 意 图...3 1.2.3. 工 作 流 程 演 示 图... 4 1.2.4. 特 性 和 指 标 描 述... 4 2. 应 用 场 景...5 2.1. 适 合 的

More information

【早盘!在线聊天室免费 策略】时间窗口大限将至 惊天变盘或将开启

【早盘!在线聊天室免费 策略】时间窗口大限将至 惊天变盘或将开启 早 盘! 在 线 聊 天 室 免 费 策 略 时 间 窗 口 大 限 将 至 惊 天 变 盘 或 将 开 启 www.3888hk.com http://www.3888hk.com 早 盘! 在 线 聊 天 室 免 费 策 略 时 间 窗 口 大 限 将 至 惊 天 变 盘 或 将 开 启 以 方 便 解 决 您 的 困 惑 没 加 关 注 的 朋 友 们 现 在 点 击 加 关 注 长 期 观

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

untitled

untitled 1 Outline 類别 欄 (1) 類 類 狀 更 易 類 理 若 類 利 來 利 using 來 namespace 類 ; (2) namespace IBM class Notebook namespace Compaq class Notebook 類别 類 來 類 列 欄 (field) (property) (method) (event) 類 例 立 來 車 類 類 立 車 欄 料

More information

友普云对象存储操作手册 友普云对象存储操作手册 1 登录友普云管理平台 对象存储服务订购 对象存储使用方法 使用 Cyberduck 客户端管理对象存储 客户端下载 新建连接 新建容器..

友普云对象存储操作手册 友普云对象存储操作手册 1 登录友普云管理平台 对象存储服务订购 对象存储使用方法 使用 Cyberduck 客户端管理对象存储 客户端下载 新建连接 新建容器.. 1 登录友普云管理平台... 2 2 对象存储服务订购... 2 3 对象存储使用方法... 3 3.1 使用 Cyberduck 客户端管理对象存储... 4 3.1.1 客户端下载... 4 3.1.2 新建连接... 4 3.1.3 新建容器... 6 3.1.4 上传文件 ( 对象 )... 7 3.1.5 下载容器或对象... 9 3.1.6 删除文件 ( 对象 )... 10 3.1.7

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他 使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他 Eclipse 插件 ( 比如 MyEclipse 插件 ), 其开发方式和步骤可能略有差异和不同 在该例中,

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

前 言 版 权 2012 Vivitek Corporation. 是 Vivitek Corporation 的 商 标 其 他 商 标 是 其 各 自 所 有 者 的 资 产 值 重 量 和 尺 寸 等 均 为 近 似 值 规 格 如 有 变 更, 恕 不 另 行 通 知 免 责 声 明 本 文

前 言 版 权 2012 Vivitek Corporation. 是 Vivitek Corporation 的 商 标 其 他 商 标 是 其 各 自 所 有 者 的 资 产 值 重 量 和 尺 寸 等 均 为 近 似 值 规 格 如 有 变 更, 恕 不 另 行 通 知 免 责 声 明 本 文 前 言 版 权 2012 Vivitek Corporation. 是 Vivitek Corporation 的 商 标 其 他 商 标 是 其 各 自 所 有 者 的 资 产 值 重 量 和 尺 寸 等 均 为 近 似 值 规 格 如 有 变 更, 恕 不 另 行 通 知 免 责 声 明 本 文 档 中 的 信 息 如 有 变 更, 恕 不 另 行 通 知 制 造 商 对 于 本 文 档 中 的

More information

Microsoft Word - 2010第11期_总167期__0.3.doc

Microsoft Word - 2010第11期_总167期__0.3.doc 利 用 DLNA/UPnP 提 供 融 合 的 数 字 家 庭 生 活 王 劲 松 摘 要 : 本 文 介 绍 了 一 个 综 合 的 数 字 家 庭 应 用 场 景, 涉 及 通 信 计 算 机 和 广 播 电 视 行 业, 并 由 此 引 出 DLNA/UPnP 对 数 字 家 庭 生 活 的 支 持 DLNA/UPnP 协 议 是 构 建 在 IP 协 议 之 上, 并 完 成 家 庭 网 络

More information

FileMaker 16 ODBC 和 JDBC 指南

FileMaker 16 ODBC 和 JDBC 指南 FileMaker 16 ODBC JDBC 2004-2017 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. FileMaker WebDirect FileMaker Cloud FileMaker,

More information

地域相关接口API文档

地域相关接口API文档 云服务器 地域相关接口 API 文档 版权声明 2015-2016 腾讯云版权所有 本文档著作权归腾讯云单独所有, 未经腾讯云事先书面许可, 任何主体不得以任何形式复制 修改 抄袭 传 播全部或部分本文档内容 商标声明 及其它腾讯云服务相关的商标均为腾讯云计算 ( 北京 ) 有限责任公司及其关联公司所有 本文档涉及的第三方 主体的商标, 依法由权利人所有 服务声明 本文档意在向客户介绍腾讯云全部或部分产品

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

相 惜 033 女 子 受 是 靠 德 行 而 非 美 貌 033 刘 庭 式 与 盲 妻 道 义 人 生 036 什 么 是 爱, 什 么 是 欲 038 相 爱 040 爱 感 觉 是 温 暖 040 爱 言 语 是 正 直 043 爱 心 地 是 无 私 045 爱 行 为 是 成 全 050

相 惜 033 女 子 受 是 靠 德 行 而 非 美 貌 033 刘 庭 式 与 盲 妻 道 义 人 生 036 什 么 是 爱, 什 么 是 欲 038 相 爱 040 爱 感 觉 是 温 暖 040 爱 言 语 是 正 直 043 爱 心 地 是 无 私 045 爱 行 为 是 成 全 050 目 录 出 版 前 言 Ⅴ 自 由 恋 爱 慎 于 始 006 相 识 010 好 心 境 感 来 好 缘 分 010 平 常 表 现 最 能 看 清 一 个 人 011 娶 妻 首 贤 德 016 相 知 021 孝 是 选 择 对 象 好 法 宝 021 欲 知 人 者 先 自 知 025 我 们 价 值 观 是 利 害 还 是 道 义 029 I 相 惜 033 女 子 受 是 靠 德 行 而

More information

IoC容器和Dependency Injection模式.doc

IoC容器和Dependency Injection模式.doc IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component

More information

开放数据处理服务 ODPS 批量数据通道

开放数据处理服务 ODPS 批量数据通道 开放数据处理服务 ODPS 批量数据通道 批量数据通道 SDK 介绍 概要 ODPS Tunnel 是 ODPS 的数据通道, 用户可以通过 Tunnel 向 ODPS 中上传或者下载数据 目前 Tunnel 仅支持表 ( 不包括视图 View) 数据的上传下载 ODPS 提供的数据上传下载工具即是基于 Tunnel SDK 编写的 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk-core"

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

Hive:用Java代码通过JDBC连接Hiveserver

Hive:用Java代码通过JDBC连接Hiveserver Hive: 用 Java 代码通过 JDBC 连接 Hiveserver 我们可以通过 CLI Client Web UI 等 Hive 提供的用户接口来和 Hive 通信, 但这三种方式最常用的是 CLI;Client 是 Hive 的客户端, 用户连接至 Hive Server 在启动 Client 模式的时候, 需要指出 Hive Server 所在节点, 并且在该节点启动 Hive Server

More information

filesizelimit 说明 : 上传文件大小限制, 默认单位是 KB, 若需要限制大小在 100KB 以内, 可设置该属性为 : 100KB filetypedesc 说明 : 文件类型的说明, 比如设置该属性为 : Any Old file you want, 那么, 选择文件时可以看到 (

filesizelimit 说明 : 上传文件大小限制, 默认单位是 KB, 若需要限制大小在 100KB 以内, 可设置该属性为 : 100KB filetypedesc 说明 : 文件类型的说明, 比如设置该属性为 : Any Old file you want, 那么, 选择文件时可以看到 ( 1.Uploadify 配置选项 : auto 类型 :Boolen 缺省值 :true 说明 : 表示在选择文件后是否自动上传 buttonclass 说明 : 额外增加的上传按钮样式类型 buttoncursor 说明 : 上传按钮 Hover 时的鼠标形状, 默认值是 hand buttonimage 说明 : 按钮的背景图片, 默认为 NULL l buttontext 说明 : 按钮上显示的文字,

More information

Java 1 Java String Date

Java 1 Java String Date JAVA SCJP Java 1 Java String Date 1Java 01 Java Java 1995 Java Java 21 Java Java 5 1-1 Java Java 1990 12 Patrick Naughton C++ C (Application Programming Interface API Library) Patrick Naughton NeXT Stealth

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

附 件 : 第 十 四 届 全 省 中 小 学 讯 飞 杯 电 脑 制 作 活 动 指 南 安 徽 省 中 小 学 电 脑 制 作 活 动 组 织 委 员 会 编 二 一 四 年 二 月 目 录 一 人 员 范 围 二 项 目 设 置 三 评 选 类 项 目 项 目 设 置 相 关 要 求 评 比 指 标 及 办 法 四 竞 赛 类 项 目 项 目 设 置 竞 赛 规 则 及 有 关 要 求 五 奖

More information

什么是视频点播 阿里云视频点播 (ApsaraVideo for VoD) 是集音视频采集 编辑 上传 自动化转码处理 媒体资源管理 分发加速 视频播放于一体的一站式音视频点播解决方案 视频点播服务构建在阿里云强大的基础设施服务之上, 借助灵活和可伸缩的存储 高质量的视频转码处理技术, 以及稳定快速

什么是视频点播 阿里云视频点播 (ApsaraVideo for VoD) 是集音视频采集 编辑 上传 自动化转码处理 媒体资源管理 分发加速 视频播放于一体的一站式音视频点播解决方案 视频点播服务构建在阿里云强大的基础设施服务之上, 借助灵活和可伸缩的存储 高质量的视频转码处理技术, 以及稳定快速 什么是视频点播 阿里云视频点播 (ApsaraVideo for VoD) 是集音视频采集 编辑 上传 自动化转码处理 媒体资源管理 分发加速 视频播放于一体的一站式音视频点播解决方案 视频点播服务构建在阿里云强大的基础设施服务之上, 借助灵活和可伸缩的存储 高质量的视频转码处理技术, 以及稳定快速的内容分发服务, 帮助企业和开发者快速搭建安全 弹性 高可定制的点播平台和应用 视频点播服务提供 Web

More information

phar 方式 使用 phar 单文件方式, 在 https://github.com/aws/aws sdk php/releases?after= 页面中, 选择 版本 , 下载已经打包好的 phar 文件, 然后在你的代码中引入这个文件即可 : require_once

phar 方式 使用 phar 单文件方式, 在 https://github.com/aws/aws sdk php/releases?after= 页面中, 选择 版本 , 下载已经打包好的 phar 文件, 然后在你的代码中引入这个文件即可 : require_once S3 PHP SDK 使用文档 S3 PHP SDK 说明 对象存储 S3 PHP SDK 使用开源的 S3 PHP SDK aws/aws sdk php 本文档介绍用户如何使用 aws/aws sdk php 来使用对象存储服务 更加详细的接口参数说明, 请在使用时参照 aws/aws sdkphp API 官方说明 http://docs.aws.amazon.com/aws sdk php/v3/api/api

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

获取 Access Token 1 基础概念 access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要妥善保存,access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新

获取 Access Token 1 基础概念 access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要妥善保存,access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新 获取 Access Token 1 基础概念 access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要妥善保存,access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新 接入方可以使用 app_id 和 server_app_secret 调用本接口来获取 access_token

More information

上海市教育考试院关于印发新修订的

上海市教育考试院关于印发新修订的 沪 教 考 院 社 考 2012 7 号 上 海 市 教 育 考 试 院 关 于 印 发 上 海 市 高 等 学 校 计 算 机 等 级 考 试 大 纲 (2012 年 修 订 ) 的 通 知 各 有 关 高 校 : 为 进 一 步 加 强 本 市 高 校 计 算 机 基 础 教 学 工 作, 推 进 学 校 更 加 科 学 合 理 地 设 置 计 算 机 基 础 课 程 及 安 排 教 学 内 容,

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) 09 (File Processes) 9-1 9-2 (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) Java Servlet 9-1 Servlet (File Processes) Client Servlet Servlet Java Java (Stream)

More information

Session Number VVT-291 Cisco ACNS / Microsoft WMT Don't Know None Others Investor relations Business to business collaboration Marketing events raining for customers and suppliers External communications

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

什么是视频点播 阿里云视频点播 (ApsaraVideo for VoD) 是集音视频采集 编辑 上传 自动化转码处理 媒体资源管理 分发加速 视频播放于一体的一站式音视频点播解决方案 视频点播服务构建在阿里云强大的基础设施服务之上, 借助灵活和可伸缩的存储 高质量的视频转码处理技术, 以及稳定快速

什么是视频点播 阿里云视频点播 (ApsaraVideo for VoD) 是集音视频采集 编辑 上传 自动化转码处理 媒体资源管理 分发加速 视频播放于一体的一站式音视频点播解决方案 视频点播服务构建在阿里云强大的基础设施服务之上, 借助灵活和可伸缩的存储 高质量的视频转码处理技术, 以及稳定快速 什么是视频点播 阿里云视频点播 (ApsaraVideo for VoD) 是集音视频采集 编辑 上传 自动化转码处理 媒体资源管理 分发加速 视频播放于一体的一站式音视频点播解决方案 视频点播服务构建在阿里云强大的基础设施服务之上, 借助灵活和可伸缩的存储 高质量的视频转码处理技术, 以及稳定快速的内容分发服务, 帮助企业和开发者快速搭建安全 弹性 高可定制的点播平台和应用 视频点播服务提供 Web

More information

常见问题

常见问题 数据管理服务 常见问题 文档版本 03 发布日期 2018-12-21 华为技术有限公司 版权所有 华为技术有限公司 2019 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 商标声明 和其他华为商标均为华为技术有限公司的商标 本文档提及的其他所有商标或注册商标, 由各自的所有人拥有 注意 您购买的产品 服务或特性等应受华为公司商业合同和条款的约束,

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

54 15 ipod/iphone/mp3/psp/pda

54 15 ipod/iphone/mp3/psp/pda 54 15 ipod/iphone/mp3/psp/pda 21 38 35 PCuSER Contents Part 1...11 Trick 01...12 Trick 02...14 Trick 03...18 Trick 04...19 Trick 05 DVD-R/RW...21 Trick 06 DVD+R/RW...22 Trick 07 DVD-RAM...23 Trick 08 Doubler

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 系 统 下 Java 编 程 详 解 作 者 : 华 清 远 见 第 1 章 Android 基 本 概 念 本 章 简 介 本 章 主 要 介 绍 Android 基 本 概 念 方 面 的 内 容, 包 括 Android 平 台 特 性 Android 系 统 架 构 Android 开 发 框 架 和 Android 开 发 环 境 搭 建 1.1 Android 简 介 Android

More information

新美大酒店开放平台SDK(JAVA版)使用说明.pages

新美大酒店开放平台SDK(JAVA版)使用说明.pages 新美 大酒店开放平台 SDK(JAVA 版 ) 使 用说明 说明 : 本 SDK 是 JAVA 版, 基于 JDK1. 版本 1 SDK 包说明 1.1 获取 SDK 得 SDK 包可以在新美 大酒店开放平台数据平台 (SDK 下载 ) 下载, 也可直接通过下载地址获 下载地址 : http://s3.meituan.net/v1/mss_de81c933e113413ea913a772b707b9c9/open-platform-sdk/mthotelopenplatform-sdk-1.0-jdk1..zip

More information

目录 1. 视频上传接口 ( 已集成在 SDK 中 ) 请求上传 web 端请求上传 上传 通知上传完成 取消上传 获取视频状态 获取视频信息

目录 1. 视频上传接口 ( 已集成在 SDK 中 ) 请求上传 web 端请求上传 上传 通知上传完成 取消上传 获取视频状态 获取视频信息 视频云提供第三方客户端接口 API 文档 文档版本控制 版本号 日期 作者 修改项 1.0 2013/05/09 束欢 视频云提供第三方客户端接口定义 2.0 2013/05/31 束欢 增加获取视频列表接口 API 定义 3.0 2013/06/14 束欢 增加 token 过期 code 定义 4.0 2013/06/18 束欢 接口 2 修改,vide 修改为 video 5.0 2013/06/24

More information

FileMaker 15 ODBC 和 JDBC 指南

FileMaker 15 ODBC 和 JDBC 指南 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. / FileMaker WebDirect FileMaker, Inc. FileMaker

More information