Skip to content

yangyue6531267/webrtcMeetPlay

Repository files navigation

安装

<script>

<!DOCTYPE html>
<html lang="en">
    
<head>
  <script src="./scooper.video.min.js"></script>
  <script>
    let videoOpts = {
        //初始化时的界面显示的分屏树
        draggable: boolean;  //是否可拖拽
        freeWindow: boolean; // 是否自由窗口
        windows: number;  // 初始化窗口数量
        conf: any; // 会议配置
        pollInterval: number; // 轮询时间
        windowsNum: number; // 总窗口数量
        isVideoTag: boolean;  // 视频或音频
        showVideoInfo: number;  // 是否显示视频信息
        waitPlayQueueSwitch: boolean; // 是否有等待播放队列
        defaultBusinessType: number;  // 默认业务类型 0 调度 1 勤指
        videoTipTimeOut: number; // 视频无首屏超时时间
        windowsArr?: number[]; // 窗口分屏类型数组
        windowsBeginIndex: number; // 窗口分屏类型数组开始索引 从哪个窗口开始播
        firstInitVertical?: boolean; // 是否是垂直分屏
        openChangeWindowStrategy?: boolean; // 窗口切换时是否关闭多余窗口
    }
    const videoArea = document.querySelector('.webVideo');
    const videoController = new VideoWebRtc(videoArea, videoOpts);

    // 注册成功
     videoController.addListener('initsucc', function (e) {
            console.log("注册成功", e);
            // 单窗口调用
            videoController.initVideoNum(document.querySelector(`.videoWeb`)).then(res => {
                    console.log(res)
            }).catch( err => {
                    console.log(err)
             } )
            // 单窗口1调用
            videoController.initVideoNum(document.querySelector(`.videoWeb1`)).then(res => {
                    console.log(res)
            }).catch( err => {
                    console.log(err)
             } ) 
     })
    //
     
  </script>
</head>
<body>
 // 会议方案
 <div class='web-rtc-video'>

    </div>
    // 直播方案
    <div class='webVideo'>
        <div class='videoWeb'></div>
        <div class='videoWeb1'></div>
        <div class='videoWeb2'></div>
    </div>
</body>

npm

# 最新稳定版本
npm install scooper-video
    import VideoWebRtc from 'scooper-video'
    const videoArea = document.querySelector('.webVideo');
    const videoController = new VideoWebRtc(videoArea, videoOpts);

videoOpts功能参数

名称 默认值 描述
videoArea document.querySelector('.webVideo') 播放器容器元素
freeWindow flase 是否自由窗口
draggable true 是否可拖拽
windows navigator.language.toLowerCase() 初始化窗口数量
conf {} 会议配置
pollInterval number 轮询时间
windowsNum 'auto' 总窗口数量
isVideoTag true 视频或音频
showVideoInfo [0,1,2] 是否显示视频信息
waitPlayQueueSwitch - 是否有等待队列
defaultBusinessType - 默认业务类型 0 调度 1 勤指
videoTipTimeOut - 视频无首屏超时时间
windowsArr - 窗口分屏类型数组
windowsBeginIndex - 窗口分屏类型数组开始索引 从哪个窗口
firstInitVertical - 是否是垂直分屏
openChangeWindowStrategy - 窗口切换时是否关闭多余窗口
isWsPlay - 自适应h264 h265配置项

events 事件

  enum ScooperVideoEvent {

      INIT='initsucc', // 初始化成功

      ERROR = "msginfo", // 报错信息

      CLOSE = 'afterclose', //关闭的实例视频对象

      SHOWRESULT = 'showResult', // 显示结果

      ERRORMSG = 'errorMsg', // 错误信息

      STARTRECORDVIDEO = 'startRecordVideo', // 开始录制视频

      STOPRECORDVIDEO = 'stopRecordVideo', // 停止录制视频

      NOTIFYRESOLUTION = 'notifyresolution', // 分辨率

      NOTIFYRESOLUTIONCHANGE = 'notifyResolutionChange', // 分辨率改变

      NOTIFYVIDEOSOURCECHANGE = 'notifyVideosourceChange', // 视频源改变,前后摄像头

      NOTIFYCLOSEVIDEO = 'notifyCloseVideo', // 关闭视频

      REOPENVIDEO = 'reOpenVideo', // 重新打开视频

      NOTIFYTOTALTIME = 'notifyTotalTime', // 总时长
      
      NOTIFYSEEKTIME = 'notifySeekTime', // 当前播放时间

      LOCALSTREAM = 'localStream', // 本地流

      REMOTESTREAM = 'remoteStream', // 远程流

      PLAYSUCCESS = 'playsuccess', // 播放成功

      SCREENCHANGE = 'screenchange', // 分屏切换屏幕改变

      SETREGISTERED = 'setRegistered', // 注册回调

      DRAGEND = 'dragEnd', // 拖拽结束

      PLAYERROR = 'playError', // 播放错误

      STARTPOLL = 'startpoll', // 开始轮询

      STOPPOLL = 'stoppoll', // 停止轮询

  }

API

/* -----------------------------播放事件 --------------------------- */

  • videoController.play(index, video, id, opts): 播放视频
参数 类型 说明
index number 窗口编号,从0开始
video String 视频编号(ID)
id true 如果没有,使用视频ID
opts json 初始化参数
  • playAll(array: { video: string; id: string; opts?}[]): void: 播放所有视频
参数 类型 说明
array array 窗口编号,从0开始
id String 视频总标识(ID)
opts json 初始化参数
  • videoController.playByOrder(video: string, id: string, opts:any,isReplace=true): 按顺序播放视频,返回true/false
参数 类型 说明
video String 视频编号(ID)
id true 如果没有,使用视频ID
opts json 初始化参数
isReplace boolean 视频已满情况下,是否替换0窗口的视频
  • videoController.playByOrderInSceen(video: string, id: string, opts: any): 在序号最小的空闲窗口播放视频 只在当前分屏情况下查找,返回true/false
参数 类型 说明
video String 视频编号(ID)
id true 如果没有,使用视频ID
opts json 初始化参数
  • videoController.playByOrderAll({ videoArray, isExpand = true}): 按顺序播放视频,返回true/false
参数 类型 说明
videoArray array 视频编号(ID)
isExpand boolean 是否自动扩展窗口
  • videoController.playByOrderExpandWindow(video: string, id: string, opts: any,isReplace=true): 扩展视频窗口数的播放方式
参数 类型 说明
video String 视频编号(ID)
id true 如果没有,使用视频ID
opts json 初始化参数
isReplace boolean 视频已满情况下,是否替换0窗口的视频
  • videoController.playInChoice(video, id, opts): 在鼠标选中的窗口中播放视频
参数 类型 说明
array array 窗口编号,从0开始
id String 视频总标识(ID)
opts json 初始化参数
  • videoController.clearScreen(video): 关闭指定视频编号的屏幕以及id
参数 类型 说明
video String 视频编号(ID)
  • videoController.getWindowsNum(): 获取视频窗口数

  • videoController.addListener(event, callback): 添加事件监听

参数 类型 说明
event String 事件名称
callback Function 事件回调
  • videoController.removeListener(event, callback): 移除事件监听
参数 类型 说明
event String 事件名称
callback Function 事件回调
  • videoController.removeAllListeners(event): 移除所有事件监听
参数 类型 说明
event String 事件名称
  • videoController.isPlaying(video): 检索当前点的视频是否被播放,被播放则返回播放的视频窗口
参数 类型 说明
video String 视频编号(ID)
  • videoController.isPlayingByIndex(index): 检索当前点的视频是否被播放,被播放则返回播放的视频窗口
参数 类型 说明
index number 窗口编号,从0开始

/* ----------------------------- 窗口事件 --------------------------- */

  • videoController.initVideoNum(video): 初始化视频窗口,返回promise
参数 类型 说明
video String 视频编号(ID)
  • videoController.fileControl(index, opts): 控制指定视频编号的文件
参数 类型 说明
index number 窗口编号,从0开始
opts json 初始化参数
  • videoController.getNextWindowsNum(old): 获取下一个窗口的编号
参数 类型 说明
old number 上一个窗口的编号
  • videoController.getVideoData(): 获取视频数据

  • videoController.sipCallSendMsg(msg: any):sip呼叫发送消息

参数 类型 说明
msg any 消息
  • videoController.updateVideoNameStatus(tel:number,peopleName:string):更新视频窗口名字的状态
参数 类型 说明
tel number 电话号码
peopleName string 人员名字
  • videoController.openPocCall(pocNo: string, centerTel: string): 打开poc呼叫 开启对讲预呼叫
参数 类型 说明
pocNo string poc号码
centerTel string 中心号码
  • videoController.closePocCall(pocNo: string, centerTel: string): 关闭poc呼叫 关闭对讲预呼叫
参数 类型 说明
pocNo string poc号码
centerTel string 中心号码
  • videoController.setRecordAvBusinessId(businessId: string): 设置录像的businessId
参数 类型 说明
businessId string 录像的businessId
  • videoController.sendAudio(index: number): 发送音频
参数 类型 说明
index number 窗口编号,从0开始
  • videoController.recvAudio(index: number): 接收音频
参数 类型 说明
index number 窗口编号,从0开始
  • videoController.lockVideo(index: number): 锁定视频

  • videoController.unlockVideo(index: number): 解锁视频

  • videoController.close(index: number, isSave?: boolean, elementIndex?: number): 关闭视频

参数 类型 说明
index number 窗口编号,从0开始
isSave boolean 是否保存关闭状态
elementIndex number 传入后返回 elementIndex参数,gis关闭使用
  • videoController.closeByVideo(video: string, isSave: boolean,iscloseVideoId:boolean): 关闭指定视频编号的视频
参数 类型 说明
video String 视频编号(ID)
isSave boolean 是否保存关闭状态
iscloseVideoId boolean 是否清空dom上的id
  • videoController.closeAll(isSave: boolean = false): 关闭所有视频
参数 类型 说明
isSave boolean 是否保存关闭状态
  • videoController.setWindowsNum(num: number, opts: any): 设置窗口数量
参数 类型 说明
num number 窗口数量
opts json 初始化参数
  • videoController.gisSetWindowsNum(num: number, showNumber: number): gis设置窗口数量
参数 类型 说明
num number 窗口数量
showNumber number 显示窗口数量
  • videoController.setSpeakType(type: number): 设置发言人类型
参数 类型 说明
type number 音频类型
  • videoController.changeVideoSource(index: number, videoSource: string): 切换前后摄像头
参数 类型 说明
index number 窗口编号,从0开始
videoSource string 0-后置摄像头 1-前置摄像头
  • videoController.startAvRecord(index: number): 开始录像
参数 类型 说明
index number 窗口编号,从0开始
  • videoController.stopAvRecord(index: number): 结束录像
参数 类型 说明
index number 窗口编号,从0开始
  • videoController.changeResolution(index: number, resolution: string): 改变分辨率
参数 类型 说明
index number 窗口编号,从0开始
resolution string 分辨率
  • videoController.setFullScreen($dom:any): 设置全屏
参数 类型 说明
$dom any dom元素
  • videoController.getVideoControllerOpts(): 获取当前视频控件的配置项

  • videoController.getScreenCaptureData(index?: number, callback?: (dataUrl: string) => void): 获取截屏数据

参数 类型 说明
index number 窗口编号,可选参数。如果不提供,则使用当前选择窗口的index。
callback Function 回调函数
  • videoController.playHistory(video: any, startTime: string, endTime: string, opts?: any): 视频回放
参数 类型 说明
video any 视频对象
startTime string [YYYY-MM-DDTHH:mm:ss]
endTime string 结束时间
opts json 配置选项
  • videoController.closeHistory(video: any, index?: number): 关闭历史流
参数 类型 说明
video any 视频对象
index number 窗口编号,可选参数。如果不提供,则使用当前选择窗口的index。
  • videoController.historyControl(video: any, playType: string, playSpeed: number, startTime?: string): 历史流控制
参数 类型 说明
video any 视频对象
playType string 播放类型(play、pause、stop)
playSpeed number 播放速率
startTime string 回放时间
  • videoController.saveList(): 保存视频列表

  • videoController.playSaveList(): 播放保存的视频列表

  • videoController.isUnavailable(): 询问是否无可用窗口

  • videoController.changeCurscreen(id: number): 切换到当前屏幕显示 共享

参数 类型 说明
id number 视频ID

/* ----------------------------- 轮巡功能事件 --------------------------- */

  • videoController.startPoll(array: any[], time: number): 执行轮巡
参数 类型 说明
array array 轮巡的视频设备数组 [{video: devId, id: devId, opts: {}}]
time number 轮巡时间间隔(毫秒)
  • videoController.startPollByStatus(array: any[], time?: number): 根据在线/离线状态开始进行轮询
参数 类型 说明
array array 轮巡的视频设备数组 [{video: devId, id: devId, status: 'offline/online', opts: {}}]
time number 轮巡时间间隔(毫秒)
  • videoController.updatePollStatus(newStatusArr: any[]): 更新轮询状态
参数 类型 说明
newStatusArr array 新的状态数组 [{video: '8001', id: '8001', status: 'online/offline', opts: {}}]
  • videoController.stopPoll(): 结束轮巡

  • videoController.pausePoll(): 暂停轮询

  • videoController.continuePoll(): 继续轮询

  • videoController.isPolling(): 获取是否在轮巡

  • videoController.holder(type: string, opts: any, isStop: boolean): 云台控制

参数 类型 说明
type string 控制类型
opts json 控制选项
isStop boolean 是否停止

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published