UNPKG

pj-trtc-web

Version:

品杰科技音视频通话组件

257 lines (186 loc) 8.47 kB
bash npm install pj-trtc-web ## 使用示例 ```vue <template> <PjTrtcWeb ref="trtcRef" :params="trtcParams" :autoEnterRoom="false" @roomEvent="handleRoomEvent" @error="handleError" /> </template> <script setup lang="ts"> import { ref } from 'vue' import { PjTrtcWeb } from 'pj-trtc-web' import type { RoomEvents } from 'pj-trtc-web' const trtcRef = ref(null) // TRTC 参数配置 const trtcParams = { sdkAppId: 'your-sdkAppId', // 腾讯云 SDKAppId roomId: 'room-id', // 房间号 userId: 'user-id', // 用户ID userSig: 'user-sig', // 用户签名 privateMapKey: '' // 权限密钥(可选) } // 处理房间事件 const handleRoomEvent = (event: RoomEvents, ...args: any[]) => { switch(event) { case RoomEvents.EnterRoom: console.log('进入房间成功') break case RoomEvents.ExitRoom: console.log('退出房间成功') break // ... 处理其他事件 } } // 处理错误 const handleError = (error: Error) => { console.error('TRTC错误:', error) } // 手动进入房间 const enterRoom = () => { trtcRef.value.start() } // 手动退出房间 const exitRoom = () => { trtcRef.value.exit() } </script> ``` ## Props | 属性名 | 类型 | 必填 | 默认值 | 说明 | | ----------------- | --------------- | --- | ---------------------- | ----------- | | params | Object | 否 | null | TRTC 参数配置对象 | | autoEnterRoom | Boolean | 否 | false | 是否自动进入房间 | | splitScreenMode | SplitScreenMode | 否 | SplitScreenMode.Normal | 屏幕切割模式 | | disableControlBar | Boolean | 否 | false | 隐藏底部控制栏 | ### params 对象属性 | 属性名 | 类型 | 必填 | 说明 | | ------------- | ------------- | --- | ------------ | | sdkAppId | string/number | 是 | 腾讯云 SDKAppId | | roomId | string/number | 是 | 房间号 | | userId | string | 是 | 用户ID | | userSig | string | 是 | 用户签名 | | privateMapKey | string | 否 | 权限密钥 | | videoProfile | string | 否 | 视频采集分辨率 | | cameraId | string | 否 | 摄像头ID | | microphoneId | string | 否 | 麦克风ID | | speakerId | string | 否 | 音响ID | ## 事件 | 事件名 | 参数 | 说明 | | --------- | -------------------------- | ------ | | roomEvent | event: RoomEvents, ...args | 房间相关事件 | | error | error: Error | 错误事件 | ### RoomEvents 事件类型 - EnterRoom: 进入房间成功 - ExitRoom: 退出房间成功 - KickedOut: 被踢出房间 - RemoteUserEnter: 远端用户进入房间 - RemoteUserExit: 远端用户退出房间 - RemoteVideoAvailable: 远端视频可用 - RemoteVideoUnavailable: 远端视频不可用 - RemoteAudioAvailable: 远端音频可用 - RemoteAudioUnavailable: 远端音频不可用 - ScreenShareStopped: 屏幕分享停止 - CustomMessage:房间内消息 - NetworkQuality:网络质量 - ConnectionStateChanged:trtc连接状态 - AudioPlayStateChanged:音频状态 - VideoPlayStateChanged:视频状态 ## 方法 | 方法名 | 参数 | 返回值 | 说明 | | ------------------- | ----------------------------------- | --------------------- |:--------------------------------- | | start | params?: TRTCParams | void | 进入房间。可选参数,如果不传则使用 props 中的 params | | exit | - | void | 退出房间 | | setVideoDisplayName | userId: string, displayName: string | void | 设置远端用户视频显示名称 | | getCameraList | - | Promise<DeviceInfo[]> | 获取摄像头列表 | | getMicrophoneList | - | Promise<DeviceInfo[]> | 获取麦克风列表 | | switchCamera | deviceId: string | void | 切换摄像头 | | switchMicrophone | deviceId: string | void | 切换麦克风 | | setSpeaker | devideId:string | void | 设置音响 | | setVideoProfile | profile:string | void | 设置推流视频分辨率 | | sendCustomMessage | cmdId:number,message:string | void | 发送房间内消息 | | switchFrontCamera | - | void | 切换前后摄像头(仅移动端) | | toggleVideo | - | Promise<boolean> | 切换摄像头开关 | | toggleAudio | - | Promise<boolean> | 切换麦克风开关 | | toggleScreenShare | - | Promise<boolean> | 切换屏幕分享 | ## 功能特性 - 支持本地视频预览 - 支持远程用户视频显示 - 支持音视频开关控制 - 支持单击视频全屏显示 - 多用户网格布局(2x2、3x3) - 单用户全屏布局(本地小窗口) - 视频状态指示器 - 音频状态指示器 - 支持屏幕共享 ## 注意事项 1. 使用前需要先在腾讯云申请 SDKAppId 和 UserSig 2. 确保有可用的摄像头和麦克风设备 3. 建议在 HTTPS 环境下使用 4. 需要浏览器支持 WebRTC 相关特性 ## 版本 ### 1.0.19 - 支持外部设置不显示控制栏 - 增加切换视频、音频、屏幕分享状态接口 ### 1.0.18 - 底部control-bar 默认调整为0.2透明度,鼠标悬浮时显示 ### 1.0.17 - 九宫格布局高度调整 ### 1.0.16 - 已知问题修复 ### 1.0.15 - --main-background-color:green;设置主页面背景颜色 - --control-bar-bottom:100px;设置控制按钮底部间隔 ### 1.0.14 - 调整宫格布局边距 ### 1.0.13 - 1、远端用户超过三人时,9宫格布局 ### 1.0.12 - 1、控制栏支持通过如style="--margin-bottom:200px"的方式调整底部margin ### 1.0.11 - 1、视频画面点击事件通知到父组件 ### 1.0.10 - 1、增加房间内连接状态、视频状态、音频状态、网络质量回调 ### 1.0.9 - 1、替换屏幕共享图标 - 2、去掉辅流优先时非辅流视频显示的边框 ### 1.0.8 - 1、视频显示窗口的高度改为自适应铺满 ### 1.0.7 - 1、支持设置视频排列模式为通用或辅流优先 ### 1.0.6 - 1、RoomEvent增加用户自定义消息对外通知 - 2、增加发送房间内消息的接口 - 3、进入房间支持设置视频小流编码参数、麦克风Id、摄像头Id、扬声器Id ### 1.0.5 - 1、png图片改为base64(解决iOS设备不能访问图片的问题) ### 1.0.4 - 1、svg图替换为PNG(解决iOS设备不能访问图片的问题) ### 1.0.3 - 1、增加屏幕共享功能(只有在电脑端运行时才显示此功能) - 2、修改获取摄像头、麦克风列表api为异步返回 ### 1.0.2 - 1、修复当全屏时远端视频不可用时,全屏层不消失的问题 ### 1.0.1 - 1、增加获取摄像头、麦克风列表api - 2、增加切换摄像头、麦克风api ### 1.0.0 - 1、优化代码提示 - 2、优化打包方式 ### 0.1.7 - 增加代码提示 ### 0.1.6 - 删除多余代码 ### 0.1.4 - 1、支持设置远端用户视频显示名称 - 2、修改发布本地视频显示模式 ### 0.1.3 - 增加移动端视频通话时支持切换前后摄像头 ### 0.1.2 - 支持根据房间人员数量自适应布局 - 支持单击视频画面全屏显示 - 支持显示远端用户音视频状态