本文为您介绍如何将 HarmonyOS NEXT 播放器 SDK 集成至您的项目中并以最简单快捷的方式让视频播放起来。
"compatibleSdkVersion": "5.0.0(12)"
视频点播通过 License 管理播放器 SDK 及其增值服务的使用权限和时间。在项目测试阶段,您可以在视频点播控制台申请免费的测试 License。您需完成以下操作:
注意
测试 License 仅限项目测试阶段使用,不可续期。测试 License 到期会导致鉴权失败,进而影响业务的正常使用。项目上线前,请升级至正式 License。
在项目根目录下创建 .ohpmrc
文件并配置 OpenHarmony 三方库中心仓和火山引擎仓库地址。
registry=https://ohpm.openharmony.cn/ohpm/,https://artifact.bytedance.com/repository/byted-ohpm/
示意图如下:
在 entry
下的 oh-package.json5
中添加 SDK 依赖:
说明
请参见发布历史获取 SDK 最新版本号。
{ "name": "entry", "version": "1.0.0", "description": "Please describe the basic information.", "main": "", "author": "", "license": "", "dependencies": { // 将 xxx 替换成最新版本号 "@simplayer/simkit_api": "xxx", } }
示意图如下:
在 enrty
下的 module.json5
文件中声明权限:
"requestPermissions": [ { // 网络权限,建议添加 "name": "ohos.permission.INTERNET" }, { // 获取 WIFI 信息,如获取 mac,建议添加 "name": "ohos.permission.GET_WIFI_INFO" }, { // 获取网络信息,建议添加 "name": "ohos.permission.GET_NETWORK_INFO" }, { // 资产持久化,建议添加 "name": "ohos.permission.STORE_PERSISTENT_DATA" }, ],
初始化播放器 SDK 之前,开启日志,便于调试和排查问题。
注意
线上版本请务必关闭日志,减少性能开销。
VodEnv.openLog()
初始化 SDK 并配置 License 文件。这是全局接口,app 生命周期内仅需调用一次。
注意
License 文件需由应用服务端下发,定期更新,否则 License 过期后您将无法使用播放器 SDK。更多信息,请见如何处理 License 相关错误?
// 初始化 applog,需传入您在视频点播控制台获取的 App ID ApplogWrapper.intApplog(getContext(), 'your app id') // 初始化 license 模块 VodEnv.init() // 详见本文获取 License 部分 VodEnv.addLicenseFile('{"Signature":"A1VA/mZ63eEUKLZEs4mzMa8xLVqUHkEzeUdC........') // 初始化 SDK SimKitService.instance().init(new SimKitInitModel() ,getContext());
this.simPlayer = SimKitService.instance().createSimPlayer();
播放器 SDK 支持设置 Vid 和 DirectUrl 播放源。
Vid 播放源:如果您已将视频上传至火山引擎视频点播服务,可使用 Vid 方式播放视频。您需要设置 Vid
和 PlayAuthToken
参数。这两个参数是由应用服务端下发给客户端。详情请见通过临时播放 Token 播放。
let vid = "your vid"; // appServer 下发的 videoId let playAuthToken = "your video id's play auth token"; // appServer 下发的临时播放 Token // 构造播放源 let dataSource = new VidSource(vid, playAuthToken) // 使用播放源播放 this.simPlayer.play(dataSource);
DirectUrl 播放源:如使用 DirectUrl 播放源,您需要将播放地址设置给播放器。播放地址可以是第三方点播地址或火山引擎视频点播服务生成的播放地址。此外,你还必须设置以下参数:
vid
:播放源唯一标识,必须与视频源一一对应。vid
可以是您自己的视频管理系统中的唯一标识,也可以在 App 层自行生成一个 ID。此 ID 会用于播放器 SDK 的日志上报、预渲染等功能中。fileHash
:作为缓存 key 使用,需能和视频资源文件一一对应,不带特殊字符,能作为文件名。可使用 URL 的 MD5 作为缓存 key。// 视频源与 vid 必须一一对应 let vid = "your vid"; // 视频 url let url = "http://www.example.com/h264.mp4"; // 播放源唯一标识,与视频源一一对应,如 url 的 MD5 let fileHash = getMd5(url); // 构造播放源 let videoInfo = new VideoInfo(); videoInfo.urls = [url] videoInfo.fileHash = fileHash let dataSource = new VideoModel(); dataSource.videoInfos = [videoInfo]; dataSource.vid = vid; // 使用播放源播放 this.simPlayer.play(dataSource);
build() { Stack() { // 构造视图控件并传入播放器和播放源 SimVideoView({ playRequest: this.dataSource, simPlayer: this.simPlayer, }) .width('100%') .height('100%') } .width('100%') .height('100%') }
调用 play
开始播放。SDK 默认会边播边缓存。
this.simPlayer.play(this.dataSource, PlayOptions.create() .setEnableMdl(true));
说明
HLS 视频目前不支持边播边缓存。播放 HLS 视频时,需将 setEnableMdl
设为 false
。
this.simPlayer.release(this.dataSource.getVid())
参考以下文档实现播放器 SDK 的基础功能和进阶功能: