视频直播
本文为您介绍直播推/拉流地址的生成方式及适用场景。
直播地址通常由 Domain、AppName 和 StreamName 组成。如果您开启了 URL 鉴权,还包含鉴权信息。

直播地址参数说明如下表所示。
| 参数 | 说明 |
|---|---|
| Domain | 已添加的域名,生成推流地址时使用推流域名,生成拉流地址时使用拉流域名。 |
| AppName | 直播流的 AppName 标识,拉取指定推流时,推拉流地址的 AppName 需一致。 |
StreamName | 直播流的 StreamName 标识,拉取指定推流时,推拉流地址的 StreamName 需一致。 说明 转码流的 StreamName 由 |
| 鉴权信息 | 参考配置 URL 鉴权了解 URL 鉴权组成并拼接鉴权信息。 |
不同的传输协议对应不同的地址格式,其组成规则如下:




根据直播地址组成规则,您可以:
根据页面提示选择地址类型和域名,并填写自定义的 AppName、自定义的 StreamName 和过期时间。
注意
仅当您完成配置 URL 鉴权后,才可设置过期时间。

单击生成地址。
在生成结果区域获取新生成的推/拉流地址,如下图所示。您可:

(可选)您可单击页面右上角历史记录按钮查看近期生成的地址记录。
说明
推荐您使用服务端 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) }
import hashlib def GenAuthUrl(domain, app, stream, secretKey, volcTime): src = "/%s/%s%s%d" % (app, stream, secretKey, volcTime) sign = hashlib.md5(src.encode("utf8")).hexdigest() return "rtmp://%s/%s/%s?volcTime=%d&volcSecret=%s" % (domain, app, stream, volcTime, sign) if __name__ == '__main__': print(GenAuthUrl("testDomain", "testApp", "testStream", "testsecretKey", 1636963457))
package demo; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Demo1 { public static void main(String[] args) throws NoSuchAlgorithmException { System.out.println((GenAuthUrl("testDomain", "testApp", "testStream", "testsecretKey", 1636963457))); } public static String GenAuthUrl(String domain, String app, String stream, String secretKey, int volcTime) throws NoSuchAlgorithmException { String src = String.format("/%s/%s%s%d", app, stream, secretsecretKey, volcTime); MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] md5Bytes = md5.digest(src.getBytes(StandardCharsets.UTF_8)); String sign = ""; for (int i = 0; i < md5Bytes.length; i++) { sign += Integer.toHexString(md5Bytes[i] | 0xFFFFFF00).substring(6); } return String.format("rtmp://%s/%s/%s?volcTime=%d&volcSecret=%s", domain, app, stream, volcTime, sign); } }
<?php function GenAuthUrl($domain, $app, $stream, $secretKey, $volcTime){ $src = sprintf("/%s/%s%s%d", $app, $stream, $secretKey, $volcTime); $sign = sprintf("%s",md5($src)); return sprintf("rtmp://%s/%s/%s?volcTime=%d&volcSecret=%s",$domain, $app, $stream, $volcTime, $sign); } echo GenAuthUrl("testDomain", "testApp", "testStream", "testsecretKey", 1636963457);