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

拉流

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

1 功能简介

不论是在多人通话还是在秀场直播中,对端需要通过拉流功能在 ZEGO 服务上进行拉流,如此才能获取到好友或者主播的视频画面。

2 使用步骤

2.1 设置拉流回调

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

[api setPlayerDelegate:self];

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

  • onPlayStateUpdate:streamID:拉流是否成功或者拉流成功后断网等错误导致拉流失败的通知,如果拉流失败(stateCode!=0),App 端提示拉流失败或者重试拉流,相关错误码请查看 拉流错误码

可根据需要处理 onPlayQualityUpate:quality:onVideoSizeChangedTo:ofStream: 接口,

  • onPlayQualityUpate:quality::拉流质量信息的通知,例如音视频的帧率、码率等,用于 App 展示音视频的音质、画质。
  • onVideoSizeChangedTo:ofStream::视频画面宽高发生变化的通知,此回调标识真正拉到了视频数据,如果 App 业务上在拉流前有背景图遮盖时,可以根据此通知去掉背景图遮盖。

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

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

2.2 拉流

调用 startPlayingStream 进行拉流。

注意:streamID 仅支持长度不超过 256 字节的数字、下划线、字母,streamID 需要在整个 AppID 内全局唯一。

[api startPlayingStream:@"STREAM_ID" inView:view];

对于 streamID 的获取,在本用户登录房间前就已经在推的流,可以从 登录成功回调 中获得,在本用户登录房间后新推或者停推的流,可以从房间代理中的 流信息更新 回调中获得。

拉流错误码

2.3 设置视图模式(可选)

拉流后可以调用如下 API 设置视图模式。

ZegoVideoViewMode viewMode = ZegoVideoViewModeScaleAspectFill;
[api setViewMode:viewMode ofStream:@"STREAM_ID"];

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

2.4 更新拉流视图

拉流后可以调用如下 API 更新拉流视图。

[api updatePlayView:view ofStream:@"STREAM_ID"];

2.5 停止拉流

当房间中的某条流被删除后,开发者需要调用 stopPlayingStream 停止拉流。

[api stopPlayingStream:@"STREAM_ID"];

注意:在停止拉流后需要移除相关的 UI 控件。

3 API 参考列表

方法 描述
setPlayerDelegate: 设置拉流代理
startPlayingStream:inView: 开始拉流
setViewMode:ofStream: 设置拉流视图模式
stopPlayingStream: 停止拉流

4 相关文档

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

本篇目录