进阶:推流到 CDN

新版开发者中心已经发布!如需访问最新版本,请点击  这里

售前咨询QQ群 276282334
售前咨询电话 400 632 6626

进阶:推流到 CDN

简介

互动直播目前同时提供新老两套 CDN 推流方案:

声网推荐您采用新的旁路推流方案推流到 CDN。新方案较老方案更加灵活:

  • 能够随时启动或停止推流
  • 增加了控制信息
  • 能够在不间断推流的同时增减推流地址
  • 通过回调接口掌握推流成功与否
  • 较少的接口保证客户能够快速从旧的推流方案升级到新的推流方案。

Note

如果您希望用老的 CDN 推流方案,请参考 进阶:推流到 CDN

推流到 CDN

您需要联系 sales@agora.io 开通推流功能。

Note

声网今后将在 Dashboard 提供自助服务。
  • 主播需要通过 addPublishStreamUrl() 接口指定推流地址。推流地址可以在开始推流后动态增删。
  • 主播需要在 joinChannel() 后通过 setLiveTranscoding() 接口定义转码参数和设置(RTMP 画布大小、多人混流布局等信息)。

推流架构图如下:

../_images/live_ios_publishing_stream_cn.png

示例代码:

//CDN 转码设置
LiveTranscoding config;
config.audioSampleRate = TYPE_44100;
config.audioChannels = 2;
//config.audioBitrate
config.width = 640;
config.height = 720;
config.videoFramerate = 30;
config.userCount = 1;  //如果 userCount > 1,则需要为每个 transcodingUsers 分别设置布局
config.videoCodecProfile = HIGH;

//分配用户视窗的合图布局
LiveTranscoding transcoding = new LiveTranscoding();
LiveTranscoding.TranscodingUser user = new LiveTranscoding.TranscodingUser();
user.uid = 123456;
transcoding.addUser(user);
user.x = 0;
user.audioChannel = 2;
user.y = 0;
user.width = 640;
user.height = 720;

rtcEngine.setLiveTranscoding(transcoding);
// 添加推流地址
rtcEngine.addPublishStreamUrl(url, false);
// 删除推流地址
rtcEngine.removePublishStreamUrl(url);

调整合图布局

频道内有多个主播时,需要通过设置 transcodingUser 调整合图布局。

Note

主播需要在 joinChannel() 后通过 setLiveTranscoding() 接口定义转码参数和设置(RTMP 画布大小、多人混流布局等信息)。

示例 1: 两人横向平铺

如果你想显示以下布局:

../_images/sei_2host.png

设置参数如下:

Canvas:
     width: 360
     height: 640
     backgroundColor: #FFFFFF

User0:
      userId: 123
      x: 0
      y: 0
      width: 320
      height: 360
      zOrder: 1
      alpha: 1.0

User1:
      userId: 456
      x: 320
      y: 0
      width: 320
      height: 360
      zOrder: 1
      alpha: 1.0

示例 2: 三人纵向平铺

如果你想显示以下布局:

../_images/sei_3host.png

设置参数如下:

Canvas:
      width: 360
      height: 640
      backgroundColor: #FFFFFF

   User0:
      userId: 123
      x: 0
      y: 0
      width: 360
      height: 640
      zOrder: 1
      alpha: 1.0

   User1:
       userId: 456
       x: 0
       y: 320
       width: 180
       height: 320
       zOrder: 2
       alpha: 1.0

   User2:
       userId: 789
       x: 180
       y: 320
       width: 180
       height: 320
       zOrder: 2
       alpha: 1.0

示例 3: 1 人全屏 + 多人任意悬浮小窗

如果你想显示以下布局:

../_images/sei_random.png

设置参数如下:

Canvas:
   width: 360
   height: 640
   backgroundColor: #FFFFFF

User0:
   userId: 123
   x: 0
   y: 0
   width: 360
   height: 640
   zOrder: 1
   alpha: 1.0

User1:
    userId: 456
    x: 45
    y: 390
    width: 110
    height: 213
    zOrder: 2
    alpha: 1.0

User2:
    userId: 789
    x: 185
    y: 390
    width: 110
    height: 213
    zOrder: 2
    alpha: 1.0
以上内容是否对您有帮助?