本文为您介绍直播推/拉流地址的生成方式及适用场景。
直播地址通常由域名、AppName 和 StreamName 组成。如果您开启了 URL 鉴权,还包含鉴权信息。
直播地址参数说明如下表所示。
参数 | 说明 |
|---|---|
域名 | 已添加的域名,生成推流地址时使用推流域名,生成拉流地址时使用拉流域名。 |
AppName | 直播流的 |
StreamName | 直播流的 说明 转码流的 |
鉴权信息 | 参考配置 URL 鉴权了解 URL 鉴权组成并拼接鉴权信息。 |
不同的传输协议对应不同的地址格式,其组成规则如下:
rtmp://{推流域名}/{AppName}/{StreamName}?{鉴权信息},例如 rtmp://push.example.com/live/test?volcTime=1779888879&volcSecret=ff360d9438****99923713c2b24f7d3。如使用 OBS 推流,可使用 rtmp://{推流域名}/{AppName}/ 作为服务器地址,{StreamName}?{鉴权信息} 作为推流码。说明
如需生成 RTMPS 推流地址,可将生成的 RTMP 地址的 rtmp:// 替换为 rtmps://。
srt://{推流域名}:9000?streamid=#!::h={推流域名},r={AppName}/{StreamName},m=publish,{鉴权信息},例如 srt://push.example.com:9000?streamid=#!::h=push.example.com,r=live/test,m=publish,volcTime=1779888879,volcSecret=ff360d9438****099923713c2b24f7d3。rtmp://{推流域名}:1999/{AppName}/{StreamName}?{鉴权信息},例如 rtmp://push.example.com:1999/live/test?volcTime=1779888879&volcSecret=ff360d9438****99923713c2b24f7d3。http(s)://{推流域名}/{AppName}/{StreamName}.sdp?{鉴权信息},例如 https://push.example.com/live/test.sdp?volcTime=1779888879&volcSecret=ff360d943867bc****23713c2b24f7d3。https://{推流域名}/{AppName}/{StreamName}?{鉴权信息},例如 https://push.example.com/live/test?volcTime=1779888879&volcSecret=ff360d94386****99923713c2b24f7d3。注意
根据直播地址组成规则,您可以:
根据页面提示选择地址类型和域名,并填写自定义的 AppName、自定义的 StreamName 和过期时间。
参数 | 说明 |
|---|---|
地址类型 | 选择待生成的地址类型。
|
域名 | 根据地址类型,选择推流域名或拉流域名。 |
AppName | 填写直播流地址的 |
StreamName | 填写直播流地址的 |
过期时间 | 选择生成地址的过期时间,超过过期时间后,将无法使用地址发起新的推拉流请求,过期前已发起的推拉流请求不受影响。 注意 仅当所选域名已开启 URL 鉴权时,才可设置过期时间。有关如何开启 URL 鉴权,详见配置 URL 鉴权。 |
单击生成推流地址或生成拉流地址,在生成结果中获取推流地址和拉流地址。
说明
如果您使用 OBS 通过 RTMP 协议推流,可在生成结果中获取 OBS 推流地址和 OBS 串流密钥。其中,OBS 推流地址即 OBS 中填写的服务器,OBS 串流密钥即 OBS 中填写的推流码。
说明
在转码流地址页签下,您可以通过选择转码流后缀来获取不同的转码流地址。
您还可以:
说明
推荐您使用服务端 SDK 来调用 API。
本节为您提供基于 Go、Python、Java、PHP 语言生成带鉴权的 RTMP 推流地址的原生代码示例。您可以根据地址拼接规则,自行实现其他协议地址的生成。
package main import ( "crypto/md5" "fmt" ) func main() { fmt.Println(GenAuthUrl("testDomain", "testApp", "testStream", "testsecretKey", 1636963457)) } func GenAuthUrl(domain, app, stream, secretKey string, volcTime int64) string { src := fmt.Sprintf("/%s/%s%s%d", app, stream, secretKey, volcTime) sign := fmt.Sprintf("%x", md5.Sum([]byte(src))) return fmt.Sprintf("rtmp://%s/%s/%s?volcTime=%d&volcSecret=%s", domain, app, stream, volcTime, sign) }