更新记录

1.0.0(2023-06-17) 下载此版本

  1. 提供直播间登录录功能
  2. 提供直播拉流播放功能

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 10.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:11 - 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]

概述

插件ID:CCLiveVideoView

直播登录流程:CCLiveVideoView初始化--> startLogin --> start

方法列表

方法名 类型 参数 描述
onViewInit 回调 view初始化的回调,可以在此方法中调用startLogin方法登录直播
startLogin 主动 JSONObject:roomId、accountId、userName、password;UniJSCallback:返回JSONObject对象,"{\"code\":"+code+",\"msg\":\""+msg+"\"}";code:200登陆成功,400登录失败 登录直播间
start 主动 登录直播间成功之后调用此方法
stop 主动 view销毁会自动调用stop直播,无需手动调用
onStreamStart 回调 直播开始
onStreamEnd 回调 boolean isNormal 是否正常结束 直播结束
onPrepared 回调 播放器准备完成
onError 回调 JSONObject {\"code\":"+code+",\"msg\":\""+msg+"\"} 播放器报错
onPlayStateChange 回调 JSONObject {"state":"BUFFERING"}、 {"state":"PLAYING"} 播放状态回调,目前暂时回调缓冲中和播放两个状态,可以用于显示loading状态
onBufferSpeed 回调 string speed 速度 示例:30kb/s

API 文档

CCLiveVideoView

提供直播登录、开始、播放等功能的uniapp component插件。

创建

<CCLiveVideoView
            class="video"
            ref="video" 
            @onViewInit="onViewInit"
            @onStreamStart="onStreamStart"
            @onStreamEnd="onStreamEnd"
            @onPrepared="onPrepared"
            @onError="onError"
            @onPlayStateChange="onPlayStateChange"
            @onBufferSpeed="onBufferSpeed">
</CCLiveVideoView>

回调

  • onViewInit:view初始化回调
  • onStreamStart:直播开始回调
  • onStreamEnd:直播结束回调
  • onPrepared:播放器准备完成回调
  • onError:播放器报错回调
  • onPlayStateChange:播放器状态改变回调
  • onBufferSpeed:播放器缓冲速度回调

回调示例

            onViewInit(e) {
                //view初始化调用
                uni.showLoading({
                    title: "登录中"
                })
                this.logList.push("正在登录直播")
                const data = {
                    accountId: this.accountId,
                    roomId: this.roomId,
                    userName: this.userName,
                    password: this.password
                }
                let _this = this;
                this.$refs.video.startLogin(data, (ret) => {
                    _this.log("ret=" + ret);
                    uni.hideLoading();
                    _this.logList.push("直播登录成功,点击start开始播放")
                    if (ret.code === 200) {
                        uni.showToast({
                            title: "登录成功",
                            icon: "none"
                        })
                    } else {
                        uni.showToast({
                            title: "登录失败:" + ret.msg,
                            icon: "none"
                        })
                        uni.navigateBack();
                    }
                })
            },
      onStreamStart(e){
                //直播开始回调
                this.logList.push("event-->直播开始 onStreamStart")
            },
            onStreamEnd(e){
                //直播结束回调
                this.logList.push("event-->直播结束 onStreamEnd:"+e.detail)
            },
            onPrepared(e){
                //播放器准备完成回调
                this.logList.push("event-->播放器准备完成 onPrepared")
            },
            onError(e){
                //播放器报错回调
                this.logList.push("event-->播放报错 onError:"+e.detail)
            },
            onPlayStateChange(e){
                //播放器状态改变回调
                this.logList.push("event-->播放状态改变 onPlayStateChange:"+JSON.stringify(e.detail))
                if(e.detail.state==="PLAYING"){

                }else if(e.detail.state==="BUFFERING"){

                }
            },
            onBufferSpeed(e){
                //播放器缓冲速度回调
                this.logList.push("event-->播放缓冲 onBufferSpeed:"+e.detail)
            }

startLogin

该方法用于进行登录操作。

参数

  • options(Map<String, Object>):登录所需参数,包括以下字段:

    • accountId(String,必填):账号 ID。
    • roomId(String,必填):房间 ID。
    • userName(String,必填):观众用户名。
    • password(String,必填):观众密码。
  • jsCallback(UniJSCallback):登录结果回调函数。

示例

const options = {
  accountId: 'your_account_id',
  roomId: 'your_room_id',
  userName: 'your_username',
  password: 'your_password'
};

CCLiveVideoView.startLogin(options, function(ret) {
  if (ret.code === 200) {
    console.log('Login success');
  } else {
    console.error('Login failed: ' + message);
  }
});

start

简介

该方法用于开始播放视频。

示例

CCLiveVideoView.start();

Stop

简介

该方法用于销毁直播。调用此方法后,需要重新调用startLogin才能重新开始直播。CCLiveVideoView在destroy的时候自动调用此方法,无需再次手动调用。

示例

CCLiveVideoView.stop();

注意事项

  1. 为避免和您的uniapp项目中使用的ijkplayer产生冲突,插件中不包含播放器模块,请在manifest.json中勾选 VideoPlayer(视频播放) 模块,云直播播放器依赖需要。

隐私、权限声明

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

1. 网络权限(INTERNET):请求云直播服务器实现云直播相关功能 2. 监听网络状态(ACCESS_NETWORK_STATE):监听网络状态改变实现断线重连的功能 3. 获取网络状态 (ACCESS_WIFI_STATE):获取网络状态来进行网络友好度提示 4. 摄像头权限(CAMERA):进行音视频互动需要按需采集摄像头画面 5. 麦克风相关权限(RECORD_AUDIO):进行音视频互动需要按需采集音频 6. 蓝牙,获取蓝牙连接状态(BLUETOOTH):连麦功能需要 7. 允许程序发现和配对蓝牙设备(BLUETOOTH_ADMIN):连麦功能需要 8. 防止锁屏(WAKE_LOCK):音视频互动过程中防止屏幕自动关闭 9. 获取手机状态(READ_PHONE_STATE):SDK需要在音视频通话时,对系统来电做出响应; 10. 文件读写权限(WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE):文件读写

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

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

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

许可协议

作者未提供license.md

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问