更新记录

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

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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. 作用

    暂停下载
  2. 注意

    1 安卓、ios参数格式有差异
    2 ios的参数是 downloadProgressUpdate的返回值原样传入
  3. 参数

参数名 类型 示例 说明
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 开始网速检测,获取到实时网速后

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> iOS: Privacy - Photo Library Additions Usage Description 我们需要访问您的相册

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

SDK名称: 获得场景视频云直播 收集内容: 设备相关信息(例如:设备型号、操作系统版本、唯一设备标识符等软硬件特征信息)、设备所在位置相关信息(例如:IP地址)、设备接入网络的方式和类型(例如:WiFi、4G网络等)。 用户信息:基于您使用获得场景视频服务而产生的用户访问记录、行为记录以及使用的SDK版本等。 收集目的: 用户行为及服务质量统计分析; 隐私协议内容地址:https://admin.bokecc.com/agreement.bo

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

作者未提供license.md