混流

1 功能简介

混流是指的将推到创世云服务上的多路RTC流通过混流服务器混成一路流。

转推CDN(Content Delivery Network)指的是将音视频流从创世云实时音视频云推送到CDN的过程。通过CDN进行更大规模的内容分发,用户可以直接通过URL拉流地址从网页或者第三方播放器进行观看。

混流转推CDN就是将多路混流后的一路流转推到CDN,观众可以通过URL拉流地址拉一路流就能观看多个互动画面。

1.1、混流转推CDN的优点

1、降低了开发实现上的复杂度;比如当有N个主播互动连麦,如果采用混流,观众端可以直接通过URL拉流地址播放一路流实现观看N个主播的画面,而不用同时拉N路视频流;

2、降低对设备的性能要求,减少设备性能开销和网络宽带的负担;如果N路连麦,观众拉N路流,并同时播放N路流,需要设备硬件上能支持同时播N路流。

3、对一个画面鉴黄就可覆盖多个画面,更便捷。

1.2、混流转推实现时机

开发者在拉流 / 推流成功后开始混流;比如 主播A 与 观众B 成功连麦后,成功拉取到 观众B 的画面时即开始混 主播A 的流和 观众B 的流;也可以根据需求,在其他合适时机进行混流。

1.3、混流转推CDN地址获取

创世云支持自有的CDN分发,如果应用需要支持大规模音视频流分发的请与创世云的技术人员进行沟通进行沟通配置即可。配置后会默认将实时音视频流转推到创世云自有CDN。技术人员会将CDN转推地址提供给开发人员,开发人员在混流接口中传入即可。

如果您的应用与第三方 CDN 有业务合作,想要使用原有的第三方 CDN 流媒体网络的分发服务的同时又想使用 SDK 进行低延迟连麦,也是支持的,只需要将您的第三方CDN 转推地址传入混流接口中即可,详细请参考以下文档。

2 使用步骤

2.1、初始化、登录房间、推流

  • 注意:

  • 混流转推前提必须登录成功并发起推流成功,即混流发起者必须参与混流。

  • 支持房间内混流,跨房间混流,即将其他房间的流混入。

  • 混流接口配置中的RTMP地址必须设置且必须是RTMP协议的地址。

详情请参考 1、 初始化 --- 2、登录房间 ---3、推流

2.2、设置混流转推配置

ChuangMixStreamConfig 是SDK中混流转推的配置对象,包括转推CDN的RTMP地址、混流ID、混流后的输出分辨率、混流视频帧率、混流码率、混流流信息列表,配置类详情见下图:

注意:必须传入正确的混流RTMP服务地址,混流RTMP地址内容请参考以下方法参数说明;目前混流转推地址的 URL 格式必须为 RTMP 格式:rtmp://xxxxxxxx。

  • 混合后数据流配置参数 支持的分辨率(宽高)如下
  • 800x600
  • 432X768
  • 768x432
  • 1280X720
  • 720X1280
  • *混流配置ChuangMixStreamConfig
    char target[CHUANG_BUFF_LEN_LONG];
    /** 混流宽 */
    int width;
    /** 混流高 */
    int height;
    /** 混流码率 */
    int videoBitrateKbps;
    /** 混流背景图id */
    char backgroundImage[CHUANG_BUFF_LEN_LONG];
    /** 是否将该混流通知给房间内其他用户 */
    bool noticeStream;
    /** 混流总数 */
    int nInputStreamCount;
    /** 混流水印信息 */
    ChuangMixStreamWatermark watermark;
    /** 混流流信息 */
    ChuangMixStreamInfo* mixStreams;

2.3、发起混流转推

注意:输入流最多可设 9 路流(其中必须包括发起混流者自己的流)。

2.3.1、开始混流

调用如下方法实现混流功能:

int startMixStream(ChuangMixStreamConfig &config, std::shared_ptr<IChuangMixStreamCallback> callback);

2.3.2、更新混流布局

当已经开始混流,但是房间人信息有变动,此时只需要更新混流布局,更新mixConfig参数的值,更新之后重新startMixStream()进行混流。

2.3.3、混流结果回调

当调用了startMixStream()后,就会触发 onMixStreamResult(int code)回调。

*  混流结果回调  

* @param    int code: 混流状态码        0:成功, 其他失败

* @return   void  

 void onMixStreamResult(int code)

2.3.4、停止混流

调用如下方法:

*  停止混流
* @return   void

 void stopMixStream()

results matching ""

    No results matching ""