实时音视频

  • 实时音视频 > 使用指南 > HarmonyOS >CDN 转推

    CDN 转推

    最近更新时间: 2024-10-31 17:08:56

    本部分介绍了 CDN 转推的使用姿势及其应用场景。

    CDN 转推可实现直播场景的功能,实时音视频场景下的直播单路流直播的直播场景

    CDN 转推需要配置本地或者远端的音视频 Track,因此,调用转推接口前请务必保证已加入房间,且已发布或者订阅了相应的音视频 Track

    下面将会对这三种场景的使用姿势进行分别说明。

    设置监听

    在进行 CDN 转推之前,需要实现 QNLiveStreamingListener 有关 CDN 转推的代理回调方法:

    export interface QNLiveStreamingListener {
      /**
       * 转推任务成功创建时触发此回调
       *
       * @param streamID 转推成功的 streamID
       */
      OnStarted: (streamID: string) => void
    
      /**
       * 转推任务成功停止时触发此回调
       *
       * @param streamID 停止转推的 streamID
       */
      OnStopped: (streamID: string) => void
    
      /**
       * 转推任务出错时触发此回调
       *
       * @param streamID 出现错误的 streamID
       * @param info 详细错误原因
       */
      OnError: (streamID: string, info: QNLiveStreamingErrorInfo) => void
    }
    

    设置回调实现示例:

    this.client!.SetLiveStreamingListener(this.liveStreamingListener)
    

    其中,转推任务出错时的错误信息及原因可参考 QNLiveStreamingErrorInfo

    在设置好 QNLiveStreamingListener 代理并实现相应回调后,便可以基于实际业务场景进行单路转推的创建和使用了。

    单路流直播场景

    单路流直播的场景,顾名思义,就是将一条音视频流直接转推到直播服务器,主要适用于不包含连麦的秀场直播连麦中需要将某一路流单独转推落存储等场景。

    场景示意图如下:

    单路流直播

    该场景的主要实现步骤如下:

    创建单路转推任务

    QNDirectLiveStreamingConfig 用于配置单路转推的相关信息,包括推流地址以及参与 CDN 转推的音视频 Track

    相关配置及创建转推任务的示例代码如下:

    this.directLiveStreamingConfig = new QNDirectLiveStreamingConfig()
    this.directLiveStreamingConfig.localAudioTrack = this.micTrack
    this.directLiveStreamingConfig.localVideoTrack = this.cameraTrack
    this.directLiveStreamingConfig.streamId = this.roomName
    this.directLiveStreamingConfig.publishUrl = CommonConstants.PREFIX_PUBLISH_URL + this.roomName
    let ret: number = this.client.StartLiveStreaming(this.directLiveStreamingConfig)
    
    

    单路转推任务创建成功后,会触发 QNLiveStreamingListener.OnStarted 回调接口:

      /**
       * 转推任务成功创建时触发此回调
       *
       * @param streamID 转推成功的 streamID
       */
      OnStarted: (streamID: string) => void
    

    创建成功后,就可以通过相应的播放链接拉取直播流进行观看了。

    注意: QNDirectLiveStreamingConfig 仅支持配置一路视频轨和一路音频轨,重复设置将会被覆盖。

    停止单路转推任务

    可以通过如下方式,调用 QNRTCClient.StopLiveStreaming 实现单路转推任务的停止:

    let ret: number = this.client.StopLiveStreaming(this.directLiveStreamingConfig)
    

    单路转推任务停止成功后,会触发 QNLiveStreamingListener.OnStopped 回调:

      /**
       * 转推任务成功停止时触发此回调
       *
       * @param streamID 停止转推的 streamID
       */
      OnStopped: (streamID: string) => void
    

    停止转推成功后,相应的播放链接直播流就无法观看了。

    发送 SEI

    CDN 转推场景支持 SEI 信息的发送,设置方式如下:

    let ret: number = this.cameraTrack.SendSEI("SEI Message", "123456789", 1)
    

    对于单路流直播的场景,调用上述接口后,播放端即可通过使用支持 SEI 解析的播放器获取到对应的 SEI 信息。

    注意事项

    • CDN 转推需要配置本地或者远端的音视频 Track,因此,调用转推接口前请务必保证加入了房间,并且已经发布或者订阅了相应的音视频 Track
    • 单路流直播场景,一路流仅支持一路音频轨和一路视频轨的设置,重复设置会被覆盖
    • 可以指定带有 serialnum 的推流地址。其中,serialnum 决定流的优先级,从 1 开始递增,值越大,优先级越高

    示例代码

    CDN 转推场景的示例代码可参考 API-Examples-HarmonyOS

    以上内容是否对您有帮助?
  • Qvm free helper
    Close