不论是在多人通话还是在秀场直播中,首先都需要推送自己的视频画面到 ZEGO 云端服务上,对端再通过从 ZEGO 云端服务上拉流,才可以获取到自己的视频画面。
设置推流回调监听后,在调用 startPublishing 推流后,能收到推流是否成功等相关事件的通知,如果推流失败需要进行相应的错误处理。
[api setPublisherDelegate:self];
建议处理 ZegoLivePublisherDelegate 中以下回调接口:
onPublishStateUpdate:streamID:streamInfo:
推流是否成功或者推流成功后流发生中断等错误导致推流失败的通知,如果推流失败(stateCode!=0),App 端提示用户推流失败或者重试推流,相关错误码请查看 推流错误码 可根据需要处理 onPublishQualityUpdate:quality:
接口,
onPublishQualityUpdate:quality:
:推流质量信息的通知,例如音视频的帧率、码率等,用于 App 展示音视频的音质、画质。其余回调接口请根据业务实际情况进行选择处理,完整的推流回调接口请查看 ZegoLivePublisherDelegate
收到 onDisconnect 回调后,SDK 断开房间信令服务,将无法收到 onPublishStateUpdate
等推流回调,请开发者关注并处理 onDisconnect 回调。
开始推流前,建议开发者对推流参数、推流视图进行设置。
推流参数众多,主要包含:手机方向、美颜参数、滤镜参数、镜像、麦克风、前后置摄像头、手电筒、采集监听等等。
开发者可查阅 ZegoLiveRoom API 说明 相关内容,按需调用。
推流前可以调用如下 API 设置预览视图、视图模式,并启动本地预览。
[api setPreviewView:view];
ZegoVideoViewMode viewMode = ZegoVideoViewModeScaleAspectFill;
[api setPreviewViewMode:viewMode];
[api startPreview];
ZegoVideoViewMode
中视图模式之间的区别请查看 ZegoVideoViewMode
开发者可调用如下 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
};
调用 stopPublishing
停止推流。
停止推流不会触发退出房间,用户依然可以在当前房间中,重新推流。
[api stopPublishing];
调用如下 API 停止预览,停止预览后,用户也无法看到自己的画面,不影响推流。
[api stopPreview];
方法 | 描述 |
---|---|
setPublisherDelegate: | 设置推流代理 |
setPreviewView: | 设置预览视图 |
setPreviewViewMode: | 设置预览视图模式 |
startPreview | 开始预览 |
startPublishing:title:flag: | 开始推流 |
stopPreview | 停止预览 |
stopPublishing | 停止推流 |
完成了推流后,可以使用 ZEGO SDK 依次完成如下功能来实现基础的通话或者直播。
联系我们
文档反馈