更新记录
1.2.1(2022-11-21) 下载此版本
- 修复 ios云打包异常 *修复 点播插件与直播插件依赖冲突
1.2.0(2022-10-31) 下载此版本
功能添加,支持自定义流量统计;支持获取实时网速
1.1.1(2022-09-28) 下载此版本
- 修复 安卓插件ijkplayer与uni-app videoPlayer冲突
- 修复 安卓无法调节声音、亮度
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:6.0 - 11.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:9 - 15 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
[TOC]
1.版本说明
版本 | 时间 | 版本说明 |
---|---|---|
v1.0.0 | 2022.5.30 | 首次提交,支持场景视频云点播基础播放功能,包括加密和非加密视频的播放,暂停,停止,跳转等功能; |
v1.1.0 | 2022.8.26 | 功能添加,支持画中画、下载、知识点、视频截图、音视频模式切换、弹幕、投屏、选集 |
v1.1.1 | 2022.9.28 | 修复 安卓插件ijkplayer与uni-app videoPlayer冲突 修复 安卓无法调节声音、亮度 |
v1.2.0 | 2022.10.28 | 功能添加,支持自定义流量统计;支持获取实时网速 |
v1.2.1 | 2022.11.19 | 修复 ios云打包异常 修复 点播插件与直播插件依赖冲突 |
2.快速开始
基础播放器
播放器插件为component类型,仅可在nvue页面中使用。为纯播放器视图,开发者可自行实现状态控制部分的样式,也可以下载示例工程复用示例的播放器实现。
页面添加播放器视图组件
播放器视图组件名称为 CCView,可以通过视频id播放获得场景视频
在nvue页面中添加如下代码:
<CCView
ref="CCView"
class="cc-view"
@onCCViewInit="onCCViewInit"
@onPrepared="onPrepared"
@onCompletion="onCompletion"
@onBufferingUpdate="onBufferingUpdate"
@onBufferingStart="onBufferingStart"
@onBufferingEnd="onBufferingEnd"
@onLog="onLog"
@onPlayError="onPlayError"></CCView>
API及回调通知的使用
在CCView组件上添加 ref="CCView", 即可通过this.$refs.CCView调用播放器丰富的API
例如开始播放视频
this.$refs.CCView.start();
在CCView组件上添加@xxx="xxx",即可定义回调事件,xxx为回调事件名称
例如自定义onPrepared视频准备就绪可播放回调
<template>
<CCView @onPrepared="onPrepared"></CCView>
</template>
<script>
// ...
methods: {
onPrepared() {
console.log('视频准备就绪');
}
}
</script>
设置播放信息(必要步骤)
在视图初始化通知事件onCCViewInit中调用设置播放信息API
methods: {
onCCViewInit() {
const options = {
videoId: this.videoId,
userId: this.userId,
apiKey: this.apiKey
}
this.$refs.CCView.setVideoPlayInfo(options);
}
}
视频下载
下载插件为独立的module类型, 需要在 App.vue中引入,并在onLaunch时初始化
使用下载插件
// APP.vue
const CCDownload = uni.requireNativePlugin('HD-CCView-CCDownload');
// 初始化
onLaunch: function () {
const { platform } = uni.getSystemInfoSync();
if (platform === 'android') {
CCDownload.init({
userId: this.userId,
apiKey: this.apiKey
});
} else {
CCDownload.initDownloadManager();
}
}
开始下载
Downloader.start(params); // 参数格式见下方API说明
监听下载状态更新
const globalEvent = uni.requireNativePlugin('globalEvent');
// ios监听下载进度更新
globalEvent.addEventListener('downloadProgressUpdate', (e) => {}
// android监听下载进度
更新globalEvent.addEventListener('onUpdate', (e) => {}
// android监听下载完成
globalEvent.addEventListener('onDownloadFinish', (e) => {}
投屏
投屏插件为独立的module类型, 需要在 App.vue中引入,并在onLaunch时初始化
使用投屏插件
// APP.vue
const CCProjection = uni.requireNativePlugin('HD-CCView-CCProjection');
//初始化
onLaunch: function () {
CCProjection.initProjectionScreen();
}
监听可用投屏设备
const globalEvent = uni.requireNativePlugin('globalEvent');
globalEvent.addEventListener('onDevice', (e) => {})
开始投屏
Projection.startPush(params); // 参数格式见下方API说明
实时网速
实时网速插件为独立的module类型,需要在App.vue中引入, 并在onLaunch时初始化
使用实时网速插件
// APP.vue
const CCNetSpeedModule = uni.requireNativePlugin('HD-CCView-CCNetSpeedModule');
// 初始化并开启网络检测
onLaunch: function () {
if (ios) {
CCNetSpeedModule.initInternetSpeed();
CCNetSpeedModule.speedStart();
}
if (android) {
CCNetSpeedModule.getNetSpeed();
}
}
监听实时网速
const globalEvent = uni.requireNativePlugin('globalEvent');
globalEvent.addEventListener('onNetSpeed', (e) => {})
3.API说明
基础播放器
1.设置播放信息
setVideoPlayInfo(JsonObject json,UniJSCallback callback)
1.作用
初始化播放信息
2.注意
无
3.参数
参数名 | 类型 | 说明 |
---|---|---|
JsonObject | JsonObject | 参数1:videoId(视频id) 参数2:userId(用户id) 参数3:apiKey (请求唯一标识) 参数4:customId (自定义流量统计标识, 非必须) |
callback | UniJSCallback | 回调(当前无作用) |
2.开始播放
start()
1.作用
开始播放
2.注意
如果设置了自动播放无需调用
3.参数
参数名 | 类型 | 说明 |
---|
3.暂停
pause()
1.作用
暂停播放
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
4.停止
stop()
1.作用
停止播放
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
5.释放资源
destory()
1.作用
释放所有播放资源
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
6.获取播放总时长
getDuration(UniJSCallBack callback)
1.作用
获取当前视频的总长度,单位:秒
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
callback | UniJSCallBack | 返回总时间 |
7.获取当前进度
getCurrentPosition(UniJSCallBack callback)
1.作用
获取当前播放的进度,单位:秒
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
callback | UniJSCallBack | 返回当前时间 |
8.跳转
seekTo(long msec)
1.作用
跳转到某一位置
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
msec | Number | 要跳转的时间(秒) |
9.自动播放
setAutoPlay(boolean autoPlay)
1.作用
设置自动播放
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
autoPlay | boolean | true播放/false不自动播放 |
10.获取自动播放状态
isAutoPlay(UniJSCallBack callback)
1.作用
获取自动播放
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
callback | UniJSCallBack | true播放/false不自动播放 |
11.设置清晰度
setDefinition(JSonObject jsonObject)
1.作用
设置清晰度
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
jsonObject | JSonObject | quality:清晰度,通过getDefinition获取 |
12.获取清晰度
getDefinition(UniJSCallBack callback)
1.作用
获取清晰度
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
callback | UniJSCallBack | [{ "quality":10, "desp":"描述" } ] |
13.设置倍速
setSpeed(float speed)
1.作用
设置倍速
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
speed | float |
14.获取标题
getVideoTitle(UniJSCallBack callback)
1.作用
获取标题
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
callback | UniJSCallBack |
15.获取流媒体类型
getMediaType(UniJSCallBack callback)
1.作用
获取媒体类型
2.注意
3.参数
参数名 | 类型 | 说明 |
---|---|---|
callback | UniJSCallBack | 1.视频 2.音频 |
16 截图
getScreenShot()
1.作用
视频截图
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
17 音视频切换
// 安卓
this.$refs.CCView.playModelChanged(this.isVideoMode)
// ios
this.$refs.CCView.playModelChanged(this.isVideoMode ? this.iosPlayModeData.radios[0] : this.iosPlayModeData.videos[0])
1.作用
切换音频或视频播放
2.注意
1 前提
需要先获取当前视频是否支持音频播放
安卓通过回调onPlayMode获取
ios通过 this.$refs.CCView.getVideoData(callback); 获取
2 参数
安卓传入参数true表示 切换到音频播放 ,false 表示切换到视频播放
ios传入上一步获取的音频列表的第一项,切换到音频播放,传入上一步获取的视频列表的第一项,切换到视频播放
3.参数
参数名 | 类型 | 说明 |
---|
18 弹幕初始化(ios)
this.$refs.CCView.barrageInit();
1.作用
初始化弹幕功能
2.注意
1. 仅ios需要调用
2. 在onPrepared中调用
3.参数
参数名 | 类型 | 说明 |
---|
19 设置弹幕视频id (ios)
this.$refs.CCView.setBarrageVideoId(id);
1.作用
设置弹幕视频id
2.注意
1. 仅ios需要调用
2. 在onPrepared中调用
3.参数
参数 | 类型 | 说明 |
---|---|---|
id | string | 视频id |
20. 发送弹幕
this.$refs.CCView.sendBarrageWithBarrage(params);
1.作用
发送弹幕
2.注意
3.参数
参数 | 类型 | 说明 |
---|---|---|
content | string | 弹幕内容 |
fc | string | 颜色 0xffffff (注意格式) |
pt | number | 弹幕时间点 (单位毫秒) |
21. 获取知识点数据 (ios)
this.$refs.CCView.getKnowledgeData(params, callback)
1.作用
获取知识点数据列表
2.注意
仅ios需要调用
3.参数
参数 | 类型 | 说明 |
---|---|---|
videoId | string | 视频id |
userId | string | 用户id |
callback | function | 返回值为知识点数据 |
22. 获取音视频数据 (ios)
this.$refs.CCView.getVideoData(callback);
1.作用
停止播放
2.注意
仅ios需要调用
返回数据调用 this.$refs.CCView.playModelChanged的时候作为参数用到
3.参数
参数 | 类型 | 说明 |
---|---|---|
callback | function | 返回值格式 ischange : true / false 是否支持音频播放 radios: [] 音频数据 videos:[] 视频数据 |
23. 获取视频地址
this.$refs.CCView.getPlayUrl(callback)
1.作用
获取视频地址
2.注意
调用投屏api时会作为参数用到
3.参数
参数 | 类型 | 说明 |
---|---|---|
callback | function | 返回值: string 视频地址 投屏时用到 |
24.回调说明
事件 | 触发时间 | 备注 |
---|---|---|
onCCViewInit | 视图初始化完成 | 在该回调中执行setVideoPlayInfo |
onPrepared | 视频准备就绪,可播放 | 在该回调中执行getVideoTitle等方法获取视频详细信息 |
onCompletion | 播放完毕 | |
onBufferingUpdate | 当前缓冲进度 | 返回值:e.detail.duration 缓存时长 |
onBufferingStart | 缓冲开始 | |
onBufferingEnd | 缓冲结束 | |
onPlayError | 播放错误 -10000 无法播放 |
返回值:视频播放异常信息 |
Knowledge (安卓) | 获取知识点数据 | 返回值:e.detail 知识点数据 |
acceptBarrageEvent | 接收弹幕数据 | 返回值:e.detail.barrageList 弹幕列表 |
barrageError | 弹幕异常 | |
sendBarrageSuccess | 弹幕发送成功 | |
sendBarrageError | 弹幕发送失败 | |
onPlayMode (安卓) | 是否支持音频播放 | 返回值:e.detail.playmode (0 为 支持音视频切换 |
下载插件
1.初始化下载插件
// 安卓
CCDownload.init(JsonObject);
// ios
CCDownload.initDownloadManager();
1.作用
初始化下载插件
2.注意
App全局调用一次
3.参数
参数名 | 类型 | 说明 |
---|---|---|
JsonObject | JsonObject | 参数1:userId(用户id) 参数2:apiKey (请求唯一标识) |
2.开始下载
CCDownload.startWithDownload(JsonArray | JsonObj);
1.作用
开始下载
2.注意
安卓、ios参数格式有差异
3.参数
参数名 | 类型 | 示例 | 说明 |
---|---|---|---|
JsonArray(安卓) | Array | list.map(item => { return { videoId: item.videoId, verificationCode: this.verificationCode, downloadTitle: item.videoTitle } } |
videoId:视频Id verificationCode: downloadTitle: 标题 |
JsonObj(ios) | Object | { userId: this.userId, apiKey: this.apiKey, verificationCode: this.verificationCode, videoIds: list.map(item => item.videoId) } |
userId:用户Id apiKey:请求唯一标识 verificationCode: videoIds:视频id列表 |
3. 暂停下载
CCDownload.setDownloadPause(JsonArray | JsonObj)
-
作用
暂停下载
-
注意
1 安卓、ios参数格式有差异 2 ios的参数是 downloadProgressUpdate的返回值原样传入
-
参数
参数名 | 类型 | 示例 | 说明 |
---|---|---|---|
JsonArray(安卓) | array | { videoId: item.videoId } |
|
JsonObj (ios) | Obj | 为 downloadProgressUpdate 回调的返回值 |
4. 恢复下载
CCDownload.setDownloadResume(params)
1.作用
恢复下载
2.注意
3.参数 | 参数名 | 类型 | 示例 | 说明 |
---|---|---|---|---|
JsonArray(安卓) | array | { videoId: item.videoId } |
||
JsonObj (ios) | Obj | 为 downloadProgressUpdate 回调的返回值 |
5. 删除
CCDownload.setDownloadDelete(params);
1.作用
安卓:删除正在下载或暂停下载(除了下载完成)的视频
ios:删除所有状态的视频
2.注意
3.参数 | 参数名 | 类型 | 示例 | 说明 |
---|---|---|---|---|
JsonArray(安卓) | array | { videoId: item.videoId } |
||
JsonObj (ios) | Obj | 为 downloadProgressUpdate 回调的返回值 |
6. 删除已下载视频(安卓)
CCDownload.setDownloadFinishedDelete(params);
1.作用
删除已下载视频
2.注意
1. 仅安卓
2. 参数格式与删除下载中、暂停中视频有差异
3.参数 | 参数名 | 类型 | 示例 | 说明 |
---|---|---|---|---|
params(安卓) | object | { title: item.videoTitle, format: item.format } |
title: 视频title format:视频格式 |
7. 主动更新进度 (安卓)
CCDownload.update();
1.作用
触发安卓端 的globalEvent onUpdate
2.注意
1. 需要定时调用该方法,才能触发安卓的进度更新通知
3.参数
参数名 | 类型 | 说明 |
---|
8. globalEvent说明
事件 | 触发时机 | 备注 |
---|---|---|
downloadProgressUpdate(ios) | ios下载中进度变化通知 | 返回数据需要缓存,以供暂停、恢复、删除时作为参数 |
onUpdate(安卓) | 安卓监听下载进度 | 需要定时主动调用update方法,才会触发 |
onDownloadFinish(安卓) | 安卓监听下载完成 | 需要定时主动调用update方法,才会触发 |
投屏插件
1. 初始化
CCProjection.initProjectionScreen();
1.作用
投屏插件初始化
2.注意
1. 全局执行一次
3.参数
参数名 | 类型 | 说明 |
---|
2. 获取当前连接wifi名称
CCProjection.getConnectWifiName(callback)
1.作用
获取当前连接wifi的名称
2.注意
3.参数
参数 | 类型 | 说明 |
---|---|---|
callback | function | 返回值:当前wifi名称 |
3. 刷新设备列表
CCProjection.projectionScreenRefresh()
1.作用
刷新当前可用设备列表
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
4. 开始投屏
CCProjection.startPush(params);
1.作用
开始投屏
2.注意
1. 安卓、ios参数有差异
2. 加密视频安卓不支持投屏播放、ios可提示使用airplay播放(加密视频格式为.pcm)
3.参数
参数 | 类型 | 说明 |
---|---|---|
playUrl | string | 视频地址 (通过getPlayUrl获取 |
device | obj | 设备信息 (在golbalEvent onDevice中获取 |
5.投屏暂停
CCProjection.pause();
1.作用
暂停投屏中的视频播放
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
6. 投屏恢复
CCProjection.resume();
1.作用
恢复投屏中的视频播放
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
7. 结束投屏
CCProjection.stopPush();
1.作用
退出投屏
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
8. 设置音量
CCProjection.setVolume(volume);
1.作用
设置投屏音量
2.注意
3.参数
参数 | 类型 | 说明 |
---|---|---|
volume | Number | 投屏音量 |
9. 进度跳转
CCProjection.seek(position);
1.作用
投屏视频进度跳转
2.注意
3.参数
参数 | 类型 | 说明 |
---|---|---|
position | Number | 跳转时间点 (单位 毫秒) |
10. globalEvent说明
事件 | 触发时机 | 说明 |
---|---|---|
onDevice | 搜索到可用设备列表 | 返回值为可用设备列表 |
upnpSearchError | 搜索失败 | |
onProjectionPlay | 投屏开始 | |
connectError | 投屏失败 |
实时网速插件
1. 初始化(ios)
CCNetSpeedModule.initInternetSpeed();
1.作用
插件初始化
2.注意
1. 全局执行一次
3.参数
参数名 | 类型 | 说明 |
---|
2. 开始检测网速 (ios)
CCNetSpeedModule.speedStart();
1.作用
开始检测网速
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
3. 停止检测网速 (ios)
CCNetSpeedModule.speedEnd();
1.作用
停止检测网速
2.注意
3.参数
参数名 | 类型 | 说明 |
---|
4. 获取实时网速 (安卓)
CCNetSpeedModule.getNetSpeed();
1.作用
获取实时网速,触发安卓端 的globalEvent onNetSpeed
2.注意
1. 需要定时调用该方法,才能触发安卓的网速更新通知
3.参数
参数名 | 类型 | 说明 |
---|
5. GlobalEvent说明
事件 | 触发时机 |
---|---|
onNetSpeed | 开始网速检测,获取到实时网速后 |