本文介绍连麦互动场景下主播端和连麦观众端的推拉流地址,主播PK互动场景下不同主播端的推拉流地址,以及普通观众的CDN播放地址的拼接规则。

前提条件

重要 直播连麦互动或PK互动时,同一房间或者不同房间下的用户ID(包含主播ID和连麦观众ID)均不能相同,必须保证用户ID的唯一性,否则会造成冲突。例如:房间A(房间ID:A,主播ID:111,连麦观众ID:222),想要和房间B(房间ID:B,主播ID:222,连麦观众ID:333),进行连麦互动或PK,由于房间A的连麦观众ID(222)和房间B的主播ID(222)相同,因此可能会导致不可预知的业务错误。

连麦互动场景主播端和连麦观众端推拉流地址

通过手动拼接连麦互动主播和连麦观众的推拉流地址时,在拼接前需准备好以下字段:
字段名称描述
artc://直播连麦互动模式URL的前缀字段,请勿修改。
live.aliyun.com直播连麦互动模式URL固定字段,请勿修改。
push 推流标识位固定字段,请勿修改。
play拉流标识位固定字段,请勿修改。
roomId房间ID,由用户自定义,主播和连麦观众需使用同一个房间号。

支持数字、大小写字母、短划线(-)、下划线(_)、等号(=),不超过64个字符。

sdkAppId连麦应用ID,在直播控制台创建连麦应用后会自动生成。请参见混流配置
userId拼接主播端地址使用主播ID;拼接观众端地址使用连麦观众ID。由用户自定义,需确保一个直播间主播ID和连麦观众ID不同。

支持数字、大小写字母、短划线(-)、下划线(_)、等号(=),不超过64个字符。

timestamp连麦互动地址过期时间戳(秒级),超过设置的时间戳后连麦互动地址会过期失效。最大时间不能超过24小时。
token通过roomId、timestamp、userId、sdkAppId、AppKey生成的鉴权串,具体生成方式,请参见Token鉴权
假设:
  • roomId(房间ID)值为123
  • sdkAppId(连麦应用ID)值为d14baa88-****-4111-b5b0-3b2f60d2ef80
  • userId(主播ID)值为518
  • userId(连麦观众ID)值为520
  • timestamp(有效时长时间戳)值为1659583716
  • token值为2035650c0f7****a53998

则拼接规则和生成的地址示例如下所示:

说明 ${} 实际使用时,需要将${} 数据替换为实际数据。
地址类拼接规则示例
主播端推流地址artc://live.aliyun.com/push/${房间ID}?sdkAppId=${连麦应用ID}&userId=${主播ID}&timestamp=${过期时间戳}&token=${鉴权token}支持RTC格式推流。

RTC:artc://live.aliyun.com/push/123?sdkAppId=d14baa88-****-4111-b5b0-3b2f60d2ef80&userId=518&timestamp=1659583716&token=2035650c0f7****a53998

拉流地址artc://live.aliyun.com/play/${房间ID}?sdkAppId=${连麦应用ID}&userId=${主播ID}&timestamp=${过期时间戳}&token=${鉴权token}支持RTC格式拉流。

RTC:artc://live.aliyun.com/play/123?sdkAppId=d14baa88-****-4111-b5b0-3b2f60d2ef80&userId=518&timestamp=1659583716&token=2035650c0f7****a53998

观众端推流地址artc://live.aliyun.com/push/${房间ID}?sdkAppId=${连麦应用ID}&userId=${连麦观众ID}&timestamp=${过期时间戳}&token=${鉴权token}支持RTC格式推流。

RTC:artc://live.aliyun.com/push/123?sdkAppId=d14baa88-****-4111-b5b0-3b2f60d2ef80&userId=520&timestamp=1659583716&token=2035650c0f7****a53998

拉流地址artc://live.aliyun.com/play/${房间ID}?sdkAppId=${连麦应用ID}&userId=${连麦观众ID}&timestamp=${过期时间戳}&token=${鉴权token}支持RTC格式拉流。

RTC:artc://live.aliyun.com/play/123?sdkAppId=d14baa88-****-4111-b5b0-3b2f60d2ef80&userId=520&timestamp=1659583716&token=2035650c0f7****a53998

主播PK互动场景不同主播端的推拉流地址

通过手动拼接PK互动主播A和主播B的推拉流地址时,在拼接前需准备好以下字段:
字段名称描述
artc://直播连麦互动模式URL的前缀字段,请勿修改。
live.aliyun.com直播连麦互动模式URL固定字段,请勿修改。
push 推流标识位固定字段,请勿修改。
play拉流标识位固定字段,请勿修改。
roomId互动模式直播房间ID,由开发者自定义,参与PK的主播需使用不同的房间ID。

支持数字、大小写字母、短划线(-)、下划线(_)、等号(=),不超过64个字符。

sdkAppId连麦应用ID,在直播控制台创建连麦应用后会自动生成。请参见混流配置
userId主播ID,由用户自定义,参与PK的主播需使用不同的主播ID。

支持数字、大小写字母、短划线(-)、下划线(_)、等号(=),不超过64个字符。

timestamp连麦PK互动地址过期时间戳(秒级),超过设置的时间戳后连麦PK互动地址会过期失效。最大时间不能超过24小时。
token通过roomId、timestamp、userId、sdkAppId、AppKey生成的鉴权串,具体生成方式,请参见Token鉴权
假设:
  • 主播A的roomId(房间ID)值为111
  • 主播B的roomId(房间ID)值为222
  • sdkAppId(连麦应用ID)值为d14baa88-****-4111-b5b0-3b2f60d2ef80
  • 主播A的userId(主播ID)值为125
  • 主播B的userId(主播ID)值为396
  • timestamp(有效时长时间戳)值为1659583716
  • token值为2035650c0f7****a53998

则拼接规则和生成的地址示例如下所示:

说明 ${} 实际使用时,需要将${} 数据替换为实际数据。
地址类拼接规则示例
主播A推流地址artc://live.aliyun.com/push/${主播A房间ID}?sdkAppId=${连麦应用ID}&userId=${A主播ID}&timestamp=${过期时间戳}&token=${鉴权token}支持RTC格式推流。

RTC:artc://live.aliyun.com/push/111?sdkAppId=d14baa88-****-4111-b5b0-3b2f60d2ef80&userId=125&timestamp=1659583716&token=2035650c0f7****a53998

拉流地址artc://live.aliyun.com/play/${主播A房间ID}?sdkAppId=${连麦应用ID}&userId=${A主播ID}&timestamp=${过期时间戳}&token=${鉴权token}支持RTC格式拉流。

RTC:artc://live.aliyun.com/play/111?sdkAppId=d14baa88-****-4111-b5b0-3b2f60d2ef80&userId=125&timestamp=1659583716&token=2035650c0f7****a53998

主播B推流地址artc://live.aliyun.com/push/${主播B房间ID}?sdkAppId=${连麦应用ID}&userId=${B主播ID}&timestamp=${过期时间戳}&token=${鉴权token}支持RTC格式推流。

RTC:artc://live.aliyun.com/push/222?sdkAppId=d14baa88-****-4111-b5b0-3b2f60d2ef80&userId=396&timestamp=1659583716&token=2035650c0f7****a53998

拉流地址artc://live.aliyun.com/play/${主播B房间ID}?sdkAppId=${连麦应用ID}&userId=${B主播ID}&timestamp=${过期时间戳}&token=${鉴权token}支持RTC格式拉流。

RTC:artc://live.aliyun.com/play/222?sdkAppId=d14baa88-****-4111-b5b0-3b2f60d2ef80&userId=396&timestamp=1659583716&token=2035650c0f7****a53998

普通观众的CDN播放地址

说明 普通观众的CDN播放地址,是指主播所在房间的CDN播放地址。不同房间CDN播放地址不同。拼接该地址时请使用观众对应的房间ID和主播ID。

PK互动模式下,不同主播房间的普通观众,需拉取各自对应主播房间的CDN播放地址。例如,观众C为主播A的普通观众,主播A连麦PK互动时,观众C的CDN播放地址为主播A房间的CDN播放地址。

通过手动拼接普通观众(非连麦观众)的CDN播放地址时,在拼接前需准备好以下字段:
字段名称描述
协议前缀支持RTMP、FLV、M3U8、RTS格式地址,对应的播放协议前缀分别为:rtmp://http://http://artc://
播流域名播放域名,在视频直播控制台配置的连麦应用对应的播放域名,请参见混流配置
AppName连麦的应用名称,固定值为live,请勿修改。
StreamIdStreamId是通过推流URL中的多个字段拼接生成,具体拼接规则为:
  • 如果是视频连麦,其StreamId为:${连麦应用ID}_${房间ID}_${主播ID}_camera。
  • 如果是纯语音连麦,其StreamId为:${连麦应用ID}_${房间ID}_${主播ID}_audio。
auth_key
说明 开启鉴权才需要该字段;未开启鉴权则不需要。
鉴权串,鉴权串是根据鉴权算法得出的一个加密字符串,需开启鉴权功能才可以生成。您可以在控制台的开启鉴权功能并获取鉴权串,请参见配置URL鉴权,也可通过md5算法计算获取鉴权串,请参见鉴权URL组成
假设sdkAppId(连麦应用ID)值为d14baa88-****-4111-b5b0-3b2f60d2ef80,roomId(房间ID)值为123,userId(主播ID)值为518
  • 视频连麦场景下,拼接后的StreamId值为d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_camera
  • 纯语音连麦场景下,拼接后的StreamId值为d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_audio
假设播流域名值为example.alivecdn.com,auth_key鉴权串值为16632272****fd016c6d85f
  • 视频连麦场景下,StreamId值为d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_camera
  • 纯语音连麦场景下,StreamId值为d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_audio
拼接规则和生成的地址示例如下所示:
说明
  • 推荐使用HTTP-FLV格式的地址播放。

    RTMP与HTTP-FLV的地址,这两个协议里包含的数据内容是一致的,只是网络协议通道不一样。HTTP协议是互联网主要协议,CDN、运营商、中间网络设备等链路中都对HTTP有很长时间的网络优化,HTTP的默认80/443端口号也是常见白名单端口,不容易被禁用,而RTMP协议比较老,其默认端口号是1935有可能被防火墙等设备禁用,导致异常。因此在综合网络环境下,HTTP-FLV的稳定性、性能(卡顿、延时)会比RTMP更好。

  • ${} 实际使用时,需要将${} 数据替换为实际数据。
地址类拼接规则示例
CDN播放地址播流地址
  • RTMP:rtmp://${播流域名}/live/${StreamId}?auth_key=${鉴权串}
  • FLV:http://${播流域名}/live/${StreamId}.flv?auth_key=${鉴权串}
  • M3U8:http://${播流域名}/live/${StreamId}.m3u8?auth_key=${鉴权串}
  • RTS:artc://${播流域名}/live/${StreamId}?auth_key=${鉴权串}
播放地址支持RTMP、FLV、M3U8、RTS格式。
  • 视频连麦场景下:
    • RTMP:rtmp://example.alivecdn.com/live/d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_camera?auth_key=16632272****fd016c6d85f
    • FLV:http://example.alivecdn.com/live/d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_camera.flv?auth_key=16632272****fd016c6d85f
    • M3U8:http://example.alivecdn.com/live/d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_camera.m3u8?auth_key=16632272****fd016c6d85f
    • RTS:artc://example.alivecdn.com/live/d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_camera?auth_key=16632272****fd016c6d85f
  • 纯语音连麦场景下:
    • RTMP:rtmp://example.alivecdn.com/live/d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_audio?auth_key=16632272****fd016c6d85f
    • FLV:http://example.alivecdn.com/live/d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_audio.flv?auth_key=16632272****fd016c6d85f
    • M3U8:http://example.alivecdn.com/live/d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_audio.m3u8?auth_key=16632272****fd016c6d85f
    • RTS:artc://example.alivecdn.com/live/d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_audio?auth_key=16632272****fd016c6d85f