CDN 转推
本部分介绍了 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