logo
当前页

从 CDN 拉流


本文将为您介绍在使用 ZEGO 直播服务时,如何拉取已转推或直推到 CDN 的流。

前提条件

在开始之前,请确保您已完成以下步骤:

实现流程

您可以根据需要选择如下拉流方式。

  • 方式 1:通过 streamID 拉转推至 ZEGO CDN 的流(推荐)
    在同一房间内的其他用户,将音视频流推送到 ZEGO 实时音视频云后再转推到 ZEGO CDN 时,我们会在 onRoomStreamUpdate 回调中收到音视频流新增的通知,并可以通过 ZegoStream 获取到某条流的 “streamID”。

  • 方式 2:通过 streamID 拉直推至 ZEGO CDN 的流
    在同一房间内的其他用户,将音视频流推送到 ZEGO CDN 时,我们会在 onRoomStreamUpdate 回调中收到音视频流新增的通知,并可以通过 ZegoStream 获取到某条流的 “streamID”。

我们可以在该回调中,调用 startPlayingStream 接口,传入 “streamID” 拉取播放该用户的音视频。您可通过监听 onPlayerStateUpdate 回调知晓是否成功拉取音视频。

// playView 为 UI 界面上 View.
ZegoCanvas playCanvas = new ZegoCanvas(playView);
ZegoPlayerConfig playerConfig = new ZegoPlayerConfig();
playerConfig.resourceMode = ZegoStreamResourceMode.ONLY_CDN;
engine.startPlayingStream(playStreamID, playCanvas, playerConfig);

// 房间内流的状态更新回调
public void onRoomStreamUpdate(String roomID, ZegoUpdateType updateType, ArrayList<ZegoStream> streamList, JSONObject extendedData) {
            super.onRoomStreamUpdate(roomID, updateType, streamList, extendedData);
            // 当 updateType 为 ZegoUpdateType.ADD 时,代表有音视频流新增,此时我们可以调用 startPlayingStream 接口拉取播放该音视频流
            if (updateType == ZegoUpdateType.ADD) {
                startPlayStream(streamList.get(0).streamID);
            } else {
                stopPlayStream(streamList.get(0).streamID);
            }
        }

Previous

推流至 CDN

Next

CDN 推流鉴权