本文介绍连麦互动场景下主播端和连麦观众端的推拉流地址,主播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固定前缀,请勿修改。 说明 live.aliyun.com不是一个真实的域名,不可对其进行域名的相关操作(比如ping,traceroute,telent等)。 |
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}×tamp=${过期时间戳}&token=${鉴权token} | 支持RTC格式推流。 RTC: |
拉流地址 | artc://live.aliyun.com/play/${房间ID}?sdkAppId=${实时音视频应用ID}&userId=${主播ID}×tamp=${过期时间戳}&token=${鉴权token} | 支持RTC格式拉流。 RTC: | |
观众端 | 推流地址 | artc://live.aliyun.com/push/${房间ID}?sdkAppId=${实时音视频应用ID}&userId=${连麦观众ID}×tamp=${过期时间戳}&token=${鉴权token} | 支持RTC格式推流。 RTC: |
拉流地址 | artc://live.aliyun.com/play/${房间ID}?sdkAppId=${实时音视频应用ID}&userId=${连麦观众ID}×tamp=${过期时间戳}&token=${鉴权token} | 支持RTC格式拉流。 RTC: |
主播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}×tamp=${过期时间戳}&token=${鉴权token} | 支持RTC格式推流。 RTC: |
拉流地址 | artc://live.aliyun.com/play/${主播A房间ID}?sdkAppId=${实时音视频应用ID}&userId=${A主播ID}×tamp=${过期时间戳}&token=${鉴权token} | 支持RTC格式拉流。 RTC: | |
主播B | 推流地址 | artc://live.aliyun.com/push/${主播B房间ID}?sdkAppId=${实时音视频应用ID}&userId=${B主播ID}×tamp=${过期时间戳}&token=${鉴权token} | 支持RTC格式推流。 RTC: |
拉流地址 | artc://live.aliyun.com/play/${主播B房间ID}?sdkAppId=${实时音视频应用ID}&userId=${B主播ID}×tamp=${过期时间戳}&token=${鉴权token} | 支持RTC格式拉流。 RTC: |
普通观众的CDN播放地址
普通观众的CDN播放地址,是指主播所在房间的CDN播放地址。不同房间CDN播放地址不同。拼接该地址时请使用观众对应的房间ID和主播ID。
PK互动模式下,不同主播房间的普通观众,需拉取各自对应主播房间的CDN播放地址。例如,观众C为主播A的普通观众,主播A连麦PK互动时,观众C的CDN播放地址为主播A房间的CDN播放地址。
通过手动拼接普通观众(非连麦观众)的CDN播放地址时,在拼接前需准备好以下字段:
字段名称 | 描述 |
协议前缀 | 支持RTMP、FLV、M3U8、RTS格式地址,对应的播放协议前缀分别为: |
播流域名 | 播放域名,在视频直播控制台配置的实时音视频应用对应的播放域名,请参见混流配置。 |
AppName | 连麦的应用名称,支持自定义,不超过255字符,支持数字、大小写字母、短划线(-)、下划线(_)、等号(=)。 |
StreamId | StreamId是通过推流URL中的多个字段拼接生成,具体拼接规则为:
|
auth_key 说明 开启鉴权才需要该字段;未开启鉴权则不需要。 | 鉴权串,鉴权串是根据鉴权算法得出的一个加密字符串,需开启鉴权功能才可以生成。您可以在控制台的开启鉴权功能并获取鉴权串,请参见配置URL鉴权,也可通过md5算法计算获取鉴权串,请参见鉴权URL组成。 |
StreamId字段中,输入流类型说明如下:
camera,通过摄像头获取视频输入流。
shareScreen,通过屏幕共享获取视频输入流。
audio,通过麦克风获取音频输入流。
假设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、FLV、M3U8、RTS格式。
|