实时音视频
  • iOS : Objective-C
  • Android
  • macOS
  • Windows
  • HarmonyOS
  • Linux
  • Web
  • 小程序
  • Flutter
  • Electron
  • Unreal Engine
  • Unity3D
  • uni-app
  • React Native
  • Cocos Creator
  • 产品简介
  • 下载
  • 体验 App
  • 快速开始
    • 跑通示例源码
    • 集成 SDK
    • 实现视频通话
    • 实时音视频 SDK 与实时语音 SDK 差异
    • 场景化音视频配置
  • 通信能力
  • 房间能力
  • 音频能力
  • 视频能力
  • 直播能力
  • 其他能力
  • 最佳实践
  • 客户端 API
  • 服务端 API
  • 常见错误码
  • 常见问题
  • 文档中心
  • 实时音视频
  • 通信能力
  • 多源采集

多源采集

更新时间:2024-01-02 18:48

功能简介

多源采集用于管理各个通道的音视频源配置,通过此能力您可以灵活快速的实现不同音视频内容的实时互动,如屏幕共享、混音等功能。

多源采集主要的能力特性与限制如下:

  • 推流通道支持设置的多种音视频源,但同一个音视频源仅能被一个通道占用。
  • 主路的音视频源支持动态切换,也支持音频的混音能力。辅路仅支持推流前指定采集源,不支持混音。
  • 采集屏幕时,仅 iOS 平台支持同时采集视频和音频;其他平台仅支持采集视频,如需采集音频,请开发者自行实现相关逻辑。

示例源码

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

相关源码请查看 “/ZegoExpressExample/Examples/Others/MultiVideoSource” 目录下的文件。

前提条件

在使用多源采集功能之前,请确保:

实现流程

实时语音产品仅支持设置音频采集源。

1 创建 ZegoExpressEngine 引擎

创建 ZegoExpressEngine 引擎流程,请参考实现视频通话的 3.1 创建引擎

ZegoEngineProfile *profile = [[ZegoEngineProfile alloc] init];
profile.appID = [KeyCenter appID];
profile.appSign = [KeyCenter appSign];
profile.scenario = ZegoScenarioDefault;
[ZegoExpressEngine createEngineWithProfile:profile eventHandler:self];

2 设置音视频采集源

  1. 调用 setVideoSource 接口设置视频采集源。
/** 使用摄像头作为视频采集源 */
[[ZegoExpressEngine sharedEngine] setVideoSource:ZegoVideoSourceTypeCamera];
  1. 调用 setAudioSource 接口设置音频采集源。

    • 仅设置音频采集源

      /** 使用麦克风作为音频采集源 */
      [[ZegoExpressEngine sharedEngine] setAudioSource:ZegoAudioSourceTypeMicrophone];
    • 设置音频采集源,同时设置混音配置

      ZegoAudioSourceMixConfig *audioSourceMixConfig = [ZegoAudioSourceMixConfig defaultConfig];
      
      /** 混入序号为 0 的媒体播放器播放的声音*/
      audioSourceMixConfig.mediaPlayerCount = 1;
      audioSourceMixConfig.mediaPlayerIndexList = (int *)malloc(sizeof(int)*1);
      audioSourceMixConfig.mediaPlayerIndexList[0] = 0;
      
      /** 混入序号为 0 的音效播放器播放的声音*/
      audioSourceMixConfig.audioEffectPlayerCount = 1;
      audioSourceMixConfig.audioEffectPlayerIndexList = (int *)malloc(sizeof(int)*1);
      audioSourceMixConfig.audioEffectPlayerIndexList[0] = 0;
      
      /** 使用麦克风作为音频采集源,且设置混音配置 */
      [[ZegoExpressEngine sharedEngine] setAudioSource:ZegoAudioSourceTypeMicrophone config:audioSourceMixConfig];
      
      free(audioSourceMixConfig.mediaPlayerIndexList);
      free(audioSourceMixConfig.audioEffectPlayerIndexList);

3 登录房间并推流

登录房间及推流流程,请参考实现视频通话的 3.2 登录房间3.3 推流

4 (可选)切换音视频采集源

  1. 调用 setVideoSource 接口切换视频采集源。
/** 使用屏幕共享作为视频采集源 */
[[ZegoExpressEngine sharedEngine] setVideoSource:ZegoVideoSourceTypeScreenCapture];
  1. 调用 setAudioSource 接口切换音频采集源。
/** 使用媒体播放器作为音频采集源 */
[[ZegoExpressEngine sharedEngine] setAudioSource:ZegoAudioSourceTypeMediaPlayer];

5 结束推流

结束推流流程,请参考实现视频通话的 3.6 停止推拉流

/** 停止推流 */
[[ZegoExpressEngine sharedEngine] stopPublishingStream];

常见问题

1. 如何采集屏幕视频与系统声音?

如需采集屏幕视频与系统声音,请参考 屏幕共享

2. 是否支持设置多个媒体播放器?

支持,但需要注意相同的播放器实例仅能被一个通道占用。

3. 组合使用视频源和音频源时有哪些限制?

组合使用视频源和音频源限制如下:

  1. 主路不能使用媒体播放器的视频或音频源。
  2. 辅路使用媒体播放器作为音视频源时,需要主路使用并启动麦克风设备(enableMicrophone)。 如果您主路不需要麦克风声音,可通过 mutePublishStreamAudio 禁用音频推流保持麦克风启动。
  3. 仅在主路使用摄像头视频源或者麦克风音频源时,辅路复制主路视频源或者音频源才能生效。
  4. 主路的音频来源不能设置为 None,否则会导致音频无法渲染。
本篇目录