引入组件
引入 ar-rtcp 组件,实现实时直播。
组件地址:
https://docs.anyrtc.io/v1/MEET/web.html
https://docs.anyrtc.io/v1/MEET/miniapp.html#installSDK
兼容情况
- Chrome、Firefox、safari 11(以上)等,具体使用webRTC检测工具
- H5支持chrome内核。
1、使用 npm 命令安装 ar-meet
在 uni-app 项目的根目录
,执行 npm 命令:
npm install ar-meet --save-dev
# 安装或更新至最新版本
npm install ar-meet@latest --save-dev
2、在 vue 文件 引入 ar-meet
import ArMeetKit from 'ar-meet';
3、使用指南
3.1、实例化对象
options为会议配置项,包括用户信息、会议类型、视频分辨率、会议身份类型、码率自适应等。
let options = {};
let meet = new ArMeetKit(options);
3.2、监听回调
//加入会议成功
meet.on("join-success", () => {
});
//加入会议失败
//根据code码查询错误原因
meet.on("join-failed", (code) => {
});
//设置其他人视频显示窗口
//对方(或己方)同意视频通话请求后,会收到此回调,收到后需要将`mediaRender`添加展示到页面上。
meet.on("stream-subscribed", (peerUserId, pubId, userId, rtcUserData, mediaRender) => {
});
//其他人离开移除视频显示窗口
meet.on("stream-unsubscribed", (peerUserId, pubId, userId, rtcUserData) => {
});
3.3、配置开发者信息
配置开发者信息,开发者信息可在anyRTC管理后台中获得,详见创建anyRTC账号。
//配置开发者信息
meet.initAppInfo(APP_ID, APP_TOKEN);
//配置私有云(默认无需配置)
//meet.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