引入组件
引入 ar-rtcp 组件,实现实时直播。
组件地址:https://docs.anyrtc.io/v1/RTCP/web.html
兼容情况
- Chrome、Firefox、safari 11(以上)等,具体使用webRTC检测工具
- H5支持chrome内核。
1、使用 npm 命令安装 ar-rtcp
在 uni-app 项目的根目录
,执行 npm 命令:
npm install ar-rtcp --save-dev
# 安装或更新至最新版本
npm install ar-rtcp@latest --save-dev
2、在 vue 文件 引入 ar-rtcp
import ArRTCPKit from 'ar-rtcp';
3、使用指南
文档地址:https://ding-doc.dingtalk.com/doc#/dev/ep7bpq
使用以下代码获取免登授权码(调用此api不需要进行鉴权,即不需要进行dd.config)。获取的免登授权码有效期5分钟,且只能使用一次,请查看获取免登授权码API。
3.1、实例化对象
let options = {};
let rtcp = new ArRTCPKit (options);
3.2、监听回调
//加入频道成功
rtcp.on("join-success", () =>{
);
//加入频道失败
//根据code码查询错误原因
rtcp.on("join-failed", (code) => {
});
//收到远程视频
rtcp.on("stream-subscribed", (rtcpID, mediaRender) =>{
});
//收到辅流视频
rtcp.on("exstream-subscribed", (rtcpID, mediaRender) =>{
});
3.3、配置开发者信息
配置开发者信息,开发者信息可在anyRTC管理后台中获得,详见创建anyRTC账号。
//配置开发者信息
rtcp.initAppInfo(APP_ID, APP_TOKEN);
//配置私有云(默认无需配置)
//rtcp.configServer(SERVE_URL);
3.4、设置本地显示窗口
设置本地显示窗口,参数constraints为音视频配置项,包含视频帧率、码率、相机类型等。
rtcp.setLocalVideoCapturer({
video: {
enabled: true,
deviceId: ""
},
audio: {
enabled: true,
deviceId: ""
}
}).then(e => {
//将视频e.mediaRender绑定到页面
//可以在这里发布视频
}).catch(err => {
console.log(err);
});
3.5、视频流操作
mediaType媒体类型:0 视音频,1音频
stream辅流视频
rtcpID系统分配的频道ID
mediaRender视频对象
//发布视频流
rtcp.publish(mediaType);
//取消发布
rtcp.unPublishEx();
//发布屏幕辅流(屏幕共享)
rtcp.publishEx(stream)
//取消发布屏幕辅流(屏幕共享)
rtcp.unPublishEx();
//订阅
rtcp.unSubscribe(rtcpID)
//取消订阅
rtcp.unSubscribe();
3.6、退出
离开房间。
rtcp.close();
3、最终伪代码如下:
<script>
import ArRTCPKit from 'ar-rtcp';
export default {
data() {
return {
rtcp : null
}
},
onLoad() {
this.rtcp = new ArRTCPKit ({
videoProfile: 'ARVideoProfile480P', // 视频分辨率,发布媒体流的类型为音视频时才成效
logLevel : 'error', //打印日志级别: info、warning、error
userId : '', //自定义用户ID
userData : {}, //自定义用户数据,推荐JSON字符串
autoBitrate : true //是否开启码流自适应
});
},
methods: {
}
}
</script>
作者:Jeebiz 创建时间:2023-02-25 01:40
最后编辑:Jeebiz 更新时间:2023-02-25 01:45
最后编辑:Jeebiz 更新时间:2023-02-25 01:45