Pano开发者中心
  • 文档中心
  • 下载中心

›音视频

新手入门

  • 简介
  • 名词解释
  • 账号注册指南
  • 创建第一个应用

规则说明

  • Channel ID命名规则
  • 权限控制
  • 计费说明
  • 最长通话时长说明
  • 每月一万分钟免费说明
  • 布局参数说明

场景方案

    教育行业

    • 1vN互动小班课
    • 互动直播大班课

快速接入

  • 简介
  • 音视频

    • Windows (C++)
    • Android (Java)
    • iOS (Objective-C)
    • Web
    • Electron

    白板

    • Android (Java)
    • iOS (Objective-C)
    • Web

高级功能

  • 简介
  • 音视频

    • 屏幕共享
    • 状态回调
    • 音量指示
    • 混音/伴音
    • 混响
    • 耳返
    • 美颜
    • 音视频数据回调
    • 音视频外部采集
    • 收发多路视频
    • 设备诊断
    • 反馈

    白板

    • Android (Java)
    • iOS (Objective-C)
    • Web

操作实践

  • 切换大小屏

RESTful API

  • 基本格式
  • 获取Token
  • 频道管理
  • 云端录制
  • CDN推流
  • 文档转码
  • 服务端消息通知API

SDK API

  • SDK接口说明
  • Windows (C++)
  • Android (Java)
  • iOS/macOS (Objective-C)
  • Web SDK(IE)
  • Web SDK

    • PanoRtc 参考
    • RtcEngine
    • RtcWhiteboard
    • Constants

更新记录

  • 简介
  • SDK

    • Windows
    • macOS
    • iOS
    • Android
    • Electron
    • Flutter
    • React Native
    • Web
    • Web SDK(IE)
    • Web Whiteboard

    Demo-PanoVideoCall

    • Windows、Mac和Web
    • iOS
    • Android

    Demo-PanoAudioChat

    • iOS
    • Android

帮助

  • FAQ
  • 更多帮助

收发多路视频

简介

Pano SDK 支持同时发送多路视频,适用于一些特殊设备或特殊场景,例如双师课堂、娃娃机等。

[注意] 如果应用在同一时刻只需发送一路视频,例如,手机的前后置摄像头切换,则无需参考此文档。

各端 SDK 相关接口,请查看下列介绍:

  • Windows (C++)
  • Android (Java)
  • macOS (Objective-C)

Windows (C++)

获取视频采集设备及本地预览

请参考 快速接入 文档的章节:获取视频采集设备 和 本地预览。

如需收发多路视频,请忽略快速接入文档中的 操作视频 章节,改为根据本文档来操作视频。

获取视频流管理器及注册回调

通过 RtcEngine 实例的 getVideoStreamManager 方法获取视频流管理器(VideoStreamManager)。
通过 VideoStreamManager 实例的 setCallback 方法设置视频流管理器的回调。

完整的回调事件列表,请 点此查看。

创建视频流

  • 通过 VideoStreamManager 实例的 createVideoStream 方法创建视频流,该方法需要传入两个参数。
    • deviceId 参数为设备ID,可以通过前述 获取视频采集设备 部分获取设备ID。
    • streamId 创建成功后此参数返回相应的视频流ID。
  • 通过 VideoStreamManager 实例的 getCaptureDevice 方法获取当前视频流使用的采集设备,setCaptureDevice 方法更新视频流的采集设备。
  • 通过 VideoStreamManager 实例的 destroyVideoStream 方法销毁一个视频流。

发送视频流

  • 通过 VideoStreamManager 实例的 startVideo 方法发送视频流。
    该方法有两个重载方法,参数类型不同,一个传入显示窗口和 RenderConfig,一个传入数据接收漕和 VideoProfileType。
  • 通过 VideoStreamManager 实例的 stopVideo 方法停止发送视频流。

其他用户开启视频流的通知

  • 当其他用户通过 VideoStreamManager 发送视频流,会触发 VideoStreamManager::Callback 的 onUserVideoStart 通知。
  • 当其他用户通过 VideoStreamManager 停止发送视频流,会触发 VideoStreamManager::Callback 的 onUserVideoStop 通知。

订阅其他用户的视频流

  • 收到其他用户开启视频流的通知后,可以通过 VideoStreamManager 实例的 subscribeVideo 方法订阅其视频流。
    subscribeVideo 有两个重载方法,参数类型不同,一个传入显示窗口和 VideoConfig,一个传入数据接收漕和 VideoProfileType。
  • 订阅其他用户的视频流后,会触发 VideoStreamManager::Callback 的 onUserVideoSubscribe 通知,其中的 result 参数表示订阅结果,Success 表示订阅成功。
  • 通过 VideoStreamManager 实例的 unsubscribeVideo 方法取消订阅视频流。

视频流首帧通知

当自己发送或收到其他用户视频流首帧时,会触发VideoStreamManager::Callback 的 onFirstVideoFrameRendered 通知,其中返回 userId 和 streamId。

Android (Java)

获取视频采集设备

通过 RtcEngine 实例的 getVideoDeviceManager 方法获取视频设备管理器(RtcVideoDeviceManager),再通过其 getCaptureDeviceList 方法获取视频采集设备列表,将返回 RtcDeviceInfo 列表,每个元素包含属性: deviceId(设备ID)和 deviceName(设备名称)。

RtcDeviceInfo[] videoDevices = mRtcEngine.getVideoDeviceManager().getCaptureDeviceList();

还可以通过 RtcVideoDeviceManager 的 setDeviceOrientation 方法设置视频设备的初始方位,setMirrorCorrection 方法设置视频设备的镜像纠正以满足特殊场景的需求。

获取视频流管理器及注册回调

通过 RtcEngine 实例的 getVideoStreamManager 方法获取视频流管理器(RtcVideoStreamManager)。
通过 RtcVideoStreamManager 实例的 setCallback 方法设置视频流管理器的回调。

完整的回调事件列表,请 点此查看。

创建视频流

  • 通过 RtcVideoStreamManager 实例的 createVideoStream 方法创建视频流,该方法需要传入 deviceId 参数(设备ID,可以通过前述 获取视频采集设备 部分获取),如果创建成功,将返回相应的视频流ID。
  • 通过 RtcVideoStreamManager 实例的 getCaptureDevice 方法获取当前视频流使用的采集设备,setCaptureDevice 方法更新视频流的采集设备。
  • 通过 RtcVideoStreamManager 实例的 destroyVideoStream 方法销毁一个视频流。

发送视频流

  • 通过 RtcVideoStreamManager 实例的 startVideo 方法发送视频流,stopVideo 方法停止发送视频流。
  • 通过 RtcVideoStreamManager 实例的 setLocalVideoRender(int streamId, IVideoRender render) 方法设置本地用户的视频画布。

关于视频画布 render 的用法示例,请 点此查看。

其他用户开启视频流的通知

  • 当其他用户通过 RtcVideoStreamManager 发送视频流,会触发 RtcVideoStreamManager::Callback 的 onUserVideoStart 通知。
  • 当其他用户通过 RtcVideoStreamManager 停止发送视频流,会触发 RtcVideoStreamManager::Callback 的 onUserVideoStop 通知。

订阅其他用户的视频流

  • 收到其他用户开启视频流的通知后,可以通过 RtcVideoStreamManager 实例的 subscribeVideo 方法订阅其视频流,unsubscribeVideo 方法取消订阅视频流。
  • 通过 RtcVideoStreamManager 实例的 setRemoteVideoRender 方法设置远端用户的视频画布。

视频流首帧通知

当自己发送或收到其他用户视频流首帧时,会触发RtcVideoStreamManager.Callback 的 onFirstVideoFrameRendered 通知,其中返回 userId 和 streamId。

macOS (Objective-C)

获取视频采集设备

通过 PanoRtcEngineKit 的 - enumerateDevices: 方法枚举设备,type 参数传入 kPanoDeviceVideoCamera 表示摄像设备。
将返回 PanoRtcDeviceInfo 数组,每个元素包含属性: deviceId(设备ID)和 deviceName(设备名称)。

本地预览

通过 PanoRtcEngineKit 的 - startPreview:withView:config: 或 - startPreview:withDelegate:profile: 方法开启视频预览。前者随带渲染视图,后者随带外置渲染器。

获取视频流管理器及注册回调

通过 PanoRtcEngineKit 实例的 - videoStreamManager 方法获取视频流管理器(PanoRtcVideoStreamManager)。
通过 PanoRtcVideoStreamManager 实例的 - setDelegate: 方法设置视频流管理器的回调对象。

完整的回调事件列表,请 点此查看。

创建视频流

  • 通过 PanoRtcVideoStreamManager 实例的 - createVideoStream: 方法创建视频流,该方法需要传入 deviceId 参数(设备ID,可以通过前述 获取视频采集设备 部分获取),如果创建成功,将返回相应的视频流ID。
  • 通过 PanoRtcVideoStreamManager 实例的 - getCaptureDevice: 方法获取当前视频流使用的采集设备,- setCaptureDevice:stream: 方法更新视频流的采集设备。
  • 通过 PanoRtcVideoStreamManager 实例的 - destroyVideoStream: 方法销毁一个视频流。

发送视频流

  • 通过 PanoRtcVideoStreamManager 实例的 - startVideo:view:config: 或 - startVideo:delegate:profile: 方法发送视频流。前者随带渲染视图,后者随带外置渲染器。
  • 通过 PanoRtcVideoStreamManager 实例的 - stopVideo: 方法停止发送视频流。

其他用户开启视频流的通知

  • 当其他用户通过 PanoRtcVideoStreamManager 发送视频流,会触发 PanoRtcVideoStreamDelegate 的 - onUserVideoStart:stream:maxProfile: 通知。
  • 当其他用户通过 PanoRtcVideoStreamManager 停止发送视频流,会触发 PanoRtcVideoStreamDelegate 的 - onUserVideoStop:stream: 通知。

订阅其他用户的视频流

  • 收到其他用户开启视频流的通知后,可以通过 PanoRtcVideoStreamManager 实例的 - subscribeVideo:stream:view:config: 或 - subscribeVideo:stream:delegate:profile:方法订阅其视频流。前者随带渲染视图,后者随带外置渲染器。
  • 订阅其他用户的视频流后,会触发 PanoRtcVideoStreamDelegate 的 - onUserVideoSubscribe:stream:result: 通知,其中的 result 参数表示订阅结果,kPanoSubscribeSuccess 表示订阅成功。
  • 通过 PanoRtcVideoStreamManager 实例的 - unsubscribeVideo:stream: 方法取消订阅视频流。

视频流首帧通知

当自己发送或收到其他用户视频流首帧时,会触发PanoRtcVideoStreamDelegate 的 - onFirstVideoFrameRendered:stream: 通知,其中返回 userId 和 streamId。

Last updated on 2/7/2021
← 音视频外部采集设备诊断 →
  • 简介
  • Windows (C++)
    • 获取视频采集设备及本地预览
    • 获取视频流管理器及注册回调
    • 创建视频流
    • 发送视频流
    • 其他用户开启视频流的通知
    • 订阅其他用户的视频流
    • 视频流首帧通知
  • Android (Java)
    • 获取视频采集设备
    • 获取视频流管理器及注册回调
    • 创建视频流
    • 发送视频流
    • 其他用户开启视频流的通知
    • 订阅其他用户的视频流
    • 视频流首帧通知
  • macOS (Objective-C)
    • 获取视频采集设备
    • 本地预览
    • 获取视频流管理器及注册回调
    • 创建视频流
    • 发送视频流
    • 其他用户开启视频流的通知
    • 订阅其他用户的视频流
    • 视频流首帧通知
浙ICP备20002645号 Copyright ©2020 拍乐云. All Rights Reserved