实时音视频
  • iOS
  • Android
  • macOS
  • Windows
  • HarmonyOS
  • Linux
  • Web : JavaScript
  • 小程序
  • Flutter
  • Electron
  • Unity3D
  • uni-app
  • React Native
  • Cocos Creator
  • 产品简介
  • 下载
  • 体验 App
  • 快速开始
    • 跑通示例源码
    • 集成 SDK
    • 实现视频通话
    • 场景化音视频配置
  • 基础功能
  • 进阶功能
  • 最佳实践
  • 常见错误码
  • 服务端 API
  • 客户端 API
  • 常见问题

自定义视频采集

更新时间:2022-03-09 23:35

1 功能简介

自定义视频采集指的是自定义向 SDK 提供视频输入源并进行推流的功能。

当开发者业务中出现以下情况时,推荐使用 SDK 的自定义视频采集功能:

  • 普通摄像头的采集无法满足需求。例如,包含了大量的原有业务。
  • 直播非摄像头数据。例如视频播放、屏幕分享、游戏直播等。
  • 使用第三方虚拟摄像头外部采集来做自定义美颜等视频预处理。

2 示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “src/Examples/AdvancedVideoProcessing/CustomVideoCapture” 目录下的文件。

3 前提条件

4 使用步骤

要推送自定义视频源的流,可以在调用 createStream 创建流时,可以通过设置 “source” 参数来指定第三方数据源。然后,调用 startPublishingStream 发布流。

  • 第三方音视频目前暂不支持 Safari 浏览器推流,只支持拉流。
  • 自 Chrome 86 开始,推第三方音视频流时,如果本地音视频设置静音,拉流端将无法听到对应的声音。
  • 设置第三方媒体流

    调用 createStream 接口预览第三方媒体流,再调用 startPublishingStream 接口推流。

    //开始预览本地视频
    previewVideo.srcObject = mediaStream;
    const stream = await zg.createStream({custom: {
                source: mediaStream
            }})
    //推流
    zg.startPublishingStream(idName, stream);
    
  • 设置第三方音视频

    调用 createStream 接口预览第三方音视频,再调用 startPublishingStream 接口推流。

    “source” 为 <video> 或 <audio> 对象时,从其指定的视频或音频源作为预览。

    //localVideo 为 <video> 对象
    const stream = await zg.createStream({custom: {
                source: localVideo
            }})
    //推流
    zg.startPublishingStream(idName, stream);