实时音视频
  • 平台类型
  • 框架 / 引擎
  • iOS
  • Android
  • macOS
  • Windows
  • Linux
  • Web
  • 小程序

推流

更新时间:2020-09-26 16:19

1 功能简介

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

2 使用步骤

2.1 开始/停止推流

通过调用开始推流 startPublishingStream 的 API 接口,可以向远端用户发送本端的音视频流。如果不需要继续推流,请调用 stopPublishingStream 停止推流。

  • 接口原型:
    /**
     * 开始推流
     *
     * 可通过此接口让用户将自己本地的音视频流推送到 ZEGO 实时音视频云,同一房间的其他用户通过 streamID 就可以拉取该音视频流进行互通。
     * 在开始推流前,需要先调用 [loginRoom] 加入房间,当推流成功之后,同房间内其他用户可通过监听 [onRoomStreamUpdate] 事件回调来获取该 streamID 新增。
     * 在网络质量不佳的情况下,用户推流可能出现中断,SDK 会尝试重新连接,可通过监听 [onPublisherStateUpdate] 事件来获知当前推流状态以及错误信息。
     * @param streamID 流 ID,长度不超过256的字符串,需要在整个 AppID 内全局唯一,若出现在同一个 AppID 内,不同的用户各推了一条流且流名相同,将会导致后推流的用户推流失败。不可以包含 URL 关键字,否则推拉流失败。仅支持数字,英文字符 和 '~', '!', '@', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'。
     */
    public void startPublishingStream(String streamID);
    /**
     * 停止推流
     *
     * 可通过此接口让用户停止发送本地的音视频流,结束通话。
     * 如果用户已经启动推流,在推新流(新的 streamID)之前,必须要调用此接口停止当前流的推送,否则新流推送会返回失败。
     * 在停止推流之后,开发者应该根据业务情况是否需要而停止本地预览。
     */
    public void stopPublishingStream();
  • 调用示例:
/** 开始推流 */
engine.startPublishingStream("stream1");
/** 停止推流 */
engine.stopPublishingStream();

推流错误码

注意:开始推流前,建议开发者在开始推流前对推流参数、本地预览视图进行设置。
ZEGO Express SDK 支持丰富的推流参数配置,主要包含:视频帧率/码率/分辨率、音频码率、手机方向、美颜参数、滤镜参数、视频镜像、使用前后置摄像头等等。如果不进行配置,SDK将采用默认配置。

2.2 启用/停止本地预览(可选)

用户如果希望看到自己本端的画面,可通过调用如下接口设置预览视图,并启动/停止本地预览。

Android支持以下类型的控件进行预览:SurfaceView/TextureView/SurfaceTexture

  • 调用示例:
/**
 *  启动预览,设置本地预览视图,视图模式采用 SDK 默认的模式,等比缩放填充整个 View
 *  如下 preview_view 为 UI 界面上的 SurfaceView/TextureView/SurfaceTexture 对象
 */
engine.startPreview(new ZegoCanvas(preview_view));
/** 停止本地预览 */
engine.stopPreview();

2.3 监听推流相关事件通知

  • 调用示例:
engine.setEventHandler(new IZegoEventHandler() {
    //....
    /** 以下为常用的推流相关回调 */

    @Override
    public void onPublisherStateUpdate(String streamID, ZegoPublisherState state, int errorCode, JSONObject extendedData){
        /** 调用推流接口成功后,当推流器状态发生变更,如出现网络中断导致推流异常等情况,SDK在重试推流的同时,会通过该回调通知 */
        //....
    }
});

3 API 参考列表

方法 描述
startPublishingStream 开始推流
stopPublishingStream 停止推流
startPreview 开始预览
stopPreview 停止预览

4 相关文档

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