全部产品
Search
文档中心

视频直播:直播连麦地址规则

更新时间:Sep 18, 2024

本文介绍连麦互动场景下主播端和连麦观众端的推拉流地址,主播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}&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

连麦的应用名称,支持自定义,不超过255字符,支持数字、大小写字母、短划线(-)、下划线(_)、等号(=)。

StreamId

StreamId是通过推流URL中的多个字段拼接生成,具体拼接规则为:

  • 如果是视频连麦,其StreamId为:${实时音视频应用ID}_${房间ID}_${主播ID}_camera。

  • 如果是纯语音连麦,其StreamId为:${实时音视频应用ID}_${房间ID}_${主播ID}_audio。

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: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