菊风云平台
菊风云平台CDN 推流CDN 推流集成

CDN 推流集成

集成 CDN 推流功能前,请确保您已经集成了基础的多方音视频通话功能。

CDN 推流服务适用于各类音视频直播场景,如企业级音视频会议、赛事、游戏直播、在线教育、娱乐直播等。

CDN 推流集成简单高效,开发者只需调用相关 API 即可将 CDN 推流无缝对接到自己的业务应用中。

1. 设置推流地址

如要开启 CDN 推流,需在 加入频道前 进行 CDN 推流地址的设置。具体为通过 JoinParam 对象中的 cdn 属性进行设置。

示例代码:

// 设置 CDN 推流地址
JCMediaChannel.JoinParam joinParam = new JCMediaChannel.JoinParam();
joinParam.cdn = "推流地址";
// 加入频道
mediaChannel.join("channelId", joinParam);

2. 获取 CDN 状态

开启 CDN 推流前需要判断 CDN 的状态,通过 cdnState 属性获取推流器状态。只有 CDN 当前状态不为 JCMediaChannelCdnStateNone 时才可以进行 CDN 推流。其中,CDN 推流状态有以下几种

/// <summary>
/// 无法进行CDN推流
/// </summary>
None,
/// <summary>
/// 可以开启CDN推流
/// </summary>
Ready,
/// <summary>
/// CDN推流中
/// </summary>
Running

CDN 状态的变化通过 onMediaChannelPropertyChange 回调上报

/// <summary>
/// 属性变化回调,目前主要关注屏幕共享和窗口共享状态的更新
/// </summary>
/// <param name="propChangeParam">变化集合</param>
void onMediaChannelPropertyChange(JCMediaChannel.PropChangeParam propChangeParam);

3. 开启或关闭 CDN 推流

CDN 状态获取后,即可根据 CDN 的状态开启或关闭 CDN 推流,接口如下

/// <summary>
/// 开关Cdn推流,内部根据当前状态决定是否开启
/// 在收到onMediaChannelPropertyChange回调时检查cdnState
/// </summary>
/// <param name="enable">是否开启cdn推流</param>
/// <param name="keyInterval">推流关键帧间隔(毫秒),当 enable 为 true 时有效,-1表示使用默认值(5000毫秒)</param>
/// <returns>返回true表示调用成功,false表示调用失败</returns>
public bool enableCdn(bool enable, int keyInterval)

示例代码

public void onMediaChannelPropertyChange(JCMediaChannel.PropChangeParam propChangeParam) {
    if (propChangeParam.cdnState) { // CDN 状态变化
        // 根据CDN推流状态判断是否开启推流
        if (mediaChannel.cdnState == JCMediaChannelCdnState.None) {
            // 无法使用 CDN 推流
        } else if (mediaChannel.cdnState == JCMediaChannelCdnState.Ready) {
            // 可以开启 CDN 推流
            mediaChannel.enableCdn(true);
        } else if (mediaChannel.cdnState == JCMediaChannelCdnState.Running) {
            // CDN 推流中,可以关闭 CDN 推流
            mediaChannel.enableCdn(false);
        }
    }
}