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

前提条件

注意事项

直播连麦互动或PK互动时,同一房间或者不同房间下的用户ID(包含主播ID和连麦观众ID)均不能相同,否则会造成冲突。例如:主播A(房间ID:123,主播ID:111,连麦观众ID:222),想要和主播B(房间ID:789,主播ID:222,连麦观众ID:333)进行连麦互动或PK,由于主播A的连麦观众ID和主播B的主播ID相同,因此不可行。

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

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

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

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

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

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。

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

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

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

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,请勿修改。
StreamId StreamId是通过推流URL中的多个字段拼接生成,具体拼接规则为:${连麦应用ID}_${房间ID}_${主播ID}_camera 。
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

假设播流域名值为example.alivecdn.com,StreamId值为d14baa88-****-4111-b5b0-3b2f60d2ef80_123_518_camera,auth_key鉴权串值为16632272****fd016c6d85f,拼接规则和生成的地址示例如下所示:

说明 ${} 实际使用时,需要将${} 数据替换为实际数据。
地址类 拼接规则 示例
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