互动视频
  • iOS : Objective-C
  • Android
  • macOS
  • Windows
  • Linux
  • Web
  • 小程序
  • Electron
  • 概述
  • 限制说明
  • SDK 下载
  • 快速开始
  • 常用功能
  • 推拉流进阶
  • 视频进阶
  • 音频进阶
  • 其他功能
  • 废弃接口
  • API 文档
  • 常见错误码
  • 常见问题
  • AI教育
  • KTV 合唱
  • 视频直播
  • 视频通话
  • 游戏直播
  • 直播答题
  • 娃娃机
  • 文档中心
  • 互动视频
  • 快速开始
  • 推流

推流

更新时间:2023-12-26 15:12

1 功能简介

不论是在多人通话还是在秀场直播中,首先都需要推送自己的视频画面到 ZEGO 云端服务上,对端再通过从 ZEGO 云端服务上拉流,才可以获取到自己的视频画面。

2 使用步骤

2.1 设置推流回调

设置推流回调监听后,在调用 startPublishing 推流后,能收到推流是否成功等相关事件的通知,如果推流失败需要进行相应的错误处理。

[api setPublisherDelegate:self];

建议处理 ZegoLivePublisherDelegate 中以下回调接口:

  • onPublishStateUpdate:streamID:streamInfo:推流是否成功或者推流成功后流发生中断等错误导致推流失败的通知,如果推流失败(stateCode!=0),App 端提示用户推流失败或者重试推流,相关错误码请查看 推流错误码

可根据需要处理 onPublishQualityUpdate:quality: 接口,

  • onPublishQualityUpdate:quality::推流质量信息的通知,例如音视频的帧率、码率等,用于 App 展示音视频的音质、画质。

其余回调接口请根据业务实际情况进行选择处理,完整的推流回调接口请查看 ZegoLivePublisherDelegate

收到 onDisconnect 回调后,SDK 断开房间信令服务,将无法收到 onPublishStateUpdate 等推流回调,请开发者关注并处理 onDisconnect 回调。

2.2 推流设置

开始推流前,建议开发者对推流参数、推流视图进行设置。

设置推流参数

推流参数众多,主要包含:手机方向、美颜参数、滤镜参数、镜像、麦克风、前后置摄像头、手电筒、采集监听等等。

开发者可查阅 ZegoLiveRoom API 说明 相关内容,按需调用。

启用预览

推流前可以调用如下 API 设置预览视图、视图模式,并启动本地预览。

[api setPreviewView:view];
ZegoVideoViewMode viewMode = ZegoVideoViewModeScaleAspectFill;
[api setPreviewViewMode:viewMode];
[api startPreview];

ZegoVideoViewMode 中视图模式之间的区别请查看 ZegoVideoViewMode

2.3 开始推流

开发者可调用如下 API 进行推流,如果不需要继续推流, 请调用 stopPublishing 停止推流

  • streamID 长度不超过 256 字节,仅支持数字、英文字符和 "-"、"_"。。

  • streamID 需要在整个 AppID 内全局唯一。

ZegoApiPublishFlag flag = ZEGO_SINGLE_ANCHOR;
[api startPublishing:@"STREAM_ID" title:nil flag:flag];

其中,开发者需按照实际使用场景,指定 ZegoApiPublishFlag

/** 发布直播场景 */
enum ZegoApiPublishFlag
{
    ZEGO_JOIN_PUBLISH   = 0,        // 连麦场景,将流推向 ZEGO 服务器
    ZEGO_MIX_STREAM     = 1 << 1,   // 混流场景,将流推向 ZEGO 服务器
    ZEGO_SINGLE_ANCHOR  = 1 << 2,   // 单主播场景,将流推向 CDN
};

推流错误码

2.4 停止推流

调用 stopPublishing 停止推流。

停止推流不会触发退出房间,用户依然可以在当前房间中,重新推流。

[api stopPublishing];

2.5 停止预览

调用如下 API 停止预览,停止预览后,用户也无法看到自己的画面,不影响推流。

[api stopPreview];

3 API参考列表

方法 描述
setPublisherDelegate: 设置推流代理
setPreviewView: 设置预览视图
setPreviewViewMode: 设置预览视图模式
startPreview 开始预览
startPublishing:title:flag: 开始推流
stopPreview 停止预览
stopPublishing 停止推流

4 相关文档

完成了推流后,可以使用 ZEGO SDK 依次完成如下功能来实现基础的通话或者直播。

本篇目录