You need to enable JavaScript to run this app.
文档中心
视频直播

视频直播

复制全文
下载 pdf
最佳实践
生成直播地址最佳实践
复制全文
下载 pdf
生成直播地址最佳实践

本文为您介绍直播推/拉流地址的生成方式及适用场景。

使用场景

  • 手动拼接:适合业务批量生成推拉流地址,使用视频直播提供的规则,无需调用接口,即可使用直播服务。
  • 地址生成器生成:适合生成单个直播流,无需代码基础,直接页面操作即可。
  • 使用 API 生成:适合于在应用程序中集成直播功能实现自动生成直播地址的场景。

背景信息

直播地址信息说明

直播地址通常由域名、AppName 和 StreamName 组成。如果您开启了 URL 鉴权,还包含鉴权信息。

在同一域名空间下,使用相同的 AppName 和 StreamName 生成推流地址和拉流地址,观众可通过该拉流地址播放对应的推流内容。使用其他 AppName 和 StreamName 组合生成新地址,不会使已有地址失效。

Image

直播地址参数说明如下表所示。

参数说明

域名

已添加的域名,生成推流地址时使用推流域名,生成拉流地址时使用拉流域名。

说明

如需使用拉流地址播放指定推流地址的直播内容,推流域名和拉流域名必须属于同一域名空间。

AppName

直播流的 AppName 标识。

说明

如需使用拉流地址播放指定推流地址的直播内容,推流地址和拉流地址需使用相同的 AppName。

StreamName

直播流的 StreamName 标识。

说明

  • 如需使用拉流地址播放指定推流地址的直播内容,推流地址和拉流地址需使用相同的 StreamName。
  • 开启 URL 鉴权后,源流拉流地址、转码流拉流地址和 ABR 拉流地址用于鉴权计算的 StreamName 取值如下:
    • 源流地址:
      • 对于适用于 Web 拉流 SDK 的 RTM 拉流地址,用于鉴权计算的 StreamName 为 {StreamName}_autortm,例如 test_autortm。
      • 对于其他源流拉流地址,用于鉴权计算的 StreamName 为 {StreamName},例如 test。
    • 转码流地址:
      • 对于适用于 Web 拉流 SDK 的 RTM 拉流地址,用于鉴权计算的 StreamName 为 {StreamName}{转码流后缀}_autortm,例如 test_hd_autortm。其中,{转码流后缀} 为转码配置中的转码流后缀。
      • 对于其他转码流拉流地址,用于鉴权计算的 StreamName 为 {StreamName}{转码流后缀},例如 test_hd。
    • ABR 地址:
      • 对于 HLS-ABR 地址,用于鉴权计算的 StreamName 为 {StreamName},例如 test。
      • 对于 DASH-ABR 地址,用于鉴权计算的 StreamName 为 {StreamName}_abr,例如 test_abr。
      • 对于适用于 iOS、Android 拉流 SDK 及其他播放器的 RTM-ABR 地址,用于鉴权计算的 StreamName 为 {StreamName}{子流后缀},例如 test_uhd。其中,{子流后缀} 为您 ABR 配置中的子流后缀。
      • 对于适用于 Web 拉流 SDK 的 RTM-ABR 地址,用于鉴权计算的 StreamName 为 {StreamName}{子流后缀}_autortm,例如 test_uhd_autortm。
鉴权信息参考配置 URL 鉴权了解 URL 鉴权组成并拼接鉴权信息。

直播地址组成规则

不同的传输协议对应不同的地址格式,其组成规则如下:

Image

  • RTMP 推流地址:rtmp://{推流域名}/{AppName}/{StreamName}?{鉴权信息},例如 rtmp://push.example.com/live/test?volcTime=1779888879&volcSecret=ff360d9438****99923713c2b24f7d3。如使用 OBS 推流,可使用 rtmp://{推流域名}/{AppName}/ 作为服务器地址,{StreamName}?{鉴权信息} 作为推流码。

    说明

    如需生成 RTMPS 推流地址,可将生成的 RTMP 地址的 rtmp:// 替换为 rtmps://。

  • TS over SRT 推流地址: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 over SRT 推流地址:rtmp://{推流域名}:1999/{AppName}/{StreamName}?{鉴权信息},例如 rtmp://push.example.com:1999/live/test?volcTime=1779888879&volcSecret=ff360d9438****99923713c2b24f7d3。
  • RTM 推流地址:http(s)://{推流域名}/{AppName}/{StreamName}.sdp?{鉴权信息},例如 https://push.example.com/live/test.sdp?volcTime=1779888879&volcSecret=ff360d943867bc****23713c2b24f7d3。
  • WebTransport 推流地址:https://{推流域名}/{AppName}/{StreamName}?{鉴权信息},例如 https://push.example.com/live/test?volcTime=1779888879&volcSecret=ff360d94386****99923713c2b24f7d3。

注意

  • 如需使用 WebTransport 推流地址、HTTPS 推流地址,或在浏览器环境下推送 RTM 流,必须先开启推流域名的 HTTPS 安全加密。详见配置 HTTPS 安全加密。
  • 如需包含鉴权信息,必须先开启推流域名的 URL 鉴权。详见配置 URL 鉴权。
  • 以上示例中的 volcTime、volcSecret 为鉴权信息参数,具体参数含义、取值等,详见配置 URL 鉴权。

前提条件

  • 已添加推流域名和拉流域名,并完成域名的 CNAME 配置,参见添加域名和配置 CNAME。
  • 如需以下功能,请完成配置 HTTPS 安全加密。
    • 使用视频直播控制台提供的在线推流工具
    • 使用 WebTransport 协议推流
    • 使用视频直播控制台提供的在线播放工具
    • 使用 HTTPS 推流地址或拉流地址
    • 在浏览器环境下推送或播放 RTM 流
  • 如需对推流地址或拉流地址进行 URL 鉴权,请完成配置 URL 鉴权。
  • 如需生成转码流的拉流地址,请完成转码配置。
  • 如需生成指定协议类型的 ABR 拉流地址,请先完成 ABR 配置,并确保已选择对应的协议类型。
  • 如需生成加密流的拉流地址,请完成加密配置。

方法一:手动拼接

根据直播地址组成规则,您可以:

方法二:通过地址生成器生成

  1. 登录视频直播控制台,左侧导航栏选择直播工具 > 地址生成器,或直接进入地址生成器。
  2. 根据页面提示选择地址类型和域名,并填写自定义的 AppName、自定义的 StreamName 和过期时间。
    Image
    参数说明

    地址类型

    选择待生成的地址类型。

    • 推流地址:主播端使用推流地址将直播流推送至视频直播中心。
    • 拉流地址:观众端使用拉流地址将直播流从视频直播中心拉取到客户端播放。

    域名

    根据地址类型,选择推流域名或拉流域名。

    说明

    如需使用拉流地址播放指定推流地址的直播内容,推流域名和拉流域名必须属于同一域名空间。

    AppName

    填写直播流地址的 AppName 字段取值,默认使用 live,支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。

    说明

    如需使用拉流地址播放指定推流地址的直播内容,推流地址和拉流地址需使用相同的 AppName。

    StreamName

    填写直播流地址的 StreamName 字段取值,支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)和短横线(-)组成,长度为 1 到 100 个字符。

    说明

    如需使用拉流地址播放指定推流地址的直播内容,推流地址和拉流地址需使用相同的 StreamName。

    过期时间

    选择生成地址的过期时间。该时间会作为 URL 鉴权参数中的时间戳(timestamp)使用,地址的实际失效时间 = 此处配置的时间 + 所选域名 URL 鉴权配置中的有效时长。仅当所选域名已开启 URL 鉴权时,才可设置过期时间。有关如何开启 URL 鉴权和配置有效时长,详见配置 URL 鉴权。

    • 对于 RTMP、FLV 等用于长时间直播推流或拉流的协议,仅新发起的推流或拉流请求会因地址失效而失败。如果在地址失效前已发起推流或拉流,则可继续推流或拉流。如果生成地址后不是立即使用,请确保实际推拉流开始时地址仍有效。
    • 对于 HLS 和 DASH 拉流协议,用户会不断地发起新的拉流请求,以获取后续分段内容。为避免直播中途播放失败,请确保观众观看期间地址始终有效。
  3. 单击生成推流地址或生成拉流地址,在生成结果中获取推流地址和拉流地址。
    • 推流地址:支持生成带鉴权信息的推流地址。当前通过地址生成器可生成的推流协议有 RTMP、TS over SRT、RTMP over SRT、RTM 和 WebTransport。
      Image

      说明

      • 如果您使用 OBS 通过 RTMP 协议推流,可在生成结果中获取 OBS 推流地址和 OBS 串流密钥。其中,OBS 推流地址即 OBS 中填写的服务器,OBS 串流密钥即 OBS 中填写的推流码。
      • 如需包含鉴权信息,必须先开启推流域名的 URL 鉴权。详见配置 URL 鉴权。
  • 拉流地址:支持生成带鉴权信息的源流拉流地址、转码流拉流地址和 ABR 拉流地址。当前通过地址生成器可生成的拉流协议有 RTMP、FLV、HLS(M3U8)​、​RTM 和 DASH。
    Image
    • 在源流地址页签下,您可以获取以下两类 RTM 拉流地址:
      • RTM Web SDK 播放地址:适用于 Web 拉流 SDK。使用该地址播放时,系统会进行以下自动处理:
        • 系统会自动检测直播流是否包含 B 帧。
          • 如果直播流包含 B 帧:系统会通过转码移除 B 帧,并收取标准转码费用。
          • 如果直播流不包含 B 帧:系统会复制源流视频,不收取视频转码费用。
        • 系统会自动检测音频编码方式是 AAC 还是 Opus。
          • 如果音频编码方式是 AAC:系统会将音频转码为 Opus。如果未涉及视频转码,则收取纯音频转码费用。详见纯音频转码。
          • 如果音频编码方式是 Opus:系统会复制源流音频,不收取纯音频转码费用。
      • RTM 地址:适用于客户端拉流 SDK,即 iOS、Android、React Native、Flutter、uni-app 拉流 SDK,以及其他播放器。
    • 在转码流地址页签下,您可以通过选择转码流后缀来获取不同的转码流地址。您还可以获取以下两类 RTM 拉流地址:
      • RTM Web SDK 播放地址:适用于 Web 拉流 SDK。该地址会保留原始转码配置,并额外进行以下处理。使用该地址播放时,转码费用按原始转码配置对应的规格计费。
        • 系统会自动检测直播流是否包含 B 帧。
          • 如果直播流包含 B 帧:系统会通过转码移除 B 帧,其他配置保持原始转码配置不变。
          • 如果直播流不包含 B 帧:系统会按原始转码配置进行转码。
        • 系统会自动检测音频编码方式是 AAC 还是 Opus。
          • 如果音频编码方式是 AAC:系统会将音频转码为 Opus,其他配置保持原始转码配置不变。
          • 如果音频编码方式是 Opus:系统会复制音频,不进行音频转码,其他配置保持原始转码配置不变。
      • RTM 地址:适用于客户端拉流 SDK,即 iOS、Android、React Native、Flutter、uni-app 拉流 SDK,以及其他播放器。
    • 在 ABR多码率地址页签下,您可以获取 HLS-ABR 地址。如果 ABR 配置中已选择 RTM-ABR,您还可以选择起播档位(子流后缀),获取对应的 RTM-ABR 地址。
      • RTM Web SDK 播放地址:适用于 Web 拉流 SDK。该地址会保留原始 ABR 配置,并额外进行以下处理。使用该地址播放时,转码费用按原始 ABR 配置对应的规格计费。
        • 系统会自动检测子流是否包含 B 帧。
          • 如果子流包含 B 帧:系统会通过转码移除 B 帧,其他配置保持原始 ABR 配置不变。
          • 如果子流不包含 B 帧:系统会按原始 ABR 配置进行转码。
        • 系统会自动检测音频编码方式是 AAC 还是 Opus。
          • 如果音频编码方式是 AAC:系统会将音频转码为 Opus,其他配置保持原始 ABR 配置不变。
          • 如果音频编码方式是 Opus:系统会复制源流音频,不进行音频转码,其他配置保持原始 ABR 配置不变。
      • RTM 地址:适用于客户端拉流 SDK,即 iOS、Android 拉流 SDK,以及其他播放器。

    说明

    • 如需包含鉴权信息,必须先开启拉流域名的 URL 鉴权。详见配置 URL 鉴权。
    • 如果无法获取 RTM Web SDK 播放地址,请创建工单联系技术支持团队。
  1. 您还可以:
    Image
    • 单击前往在线拉流图标,在控制台的 Web 拉流页面进行在线拉流。
    • 单击前往在线推流图标,在控制台的 Web 推流页面进行在线推流。
    • 单击复制图标,复制地址。
    • 单击二维码图标,查看二维码。
    • 单击页面右上方的历史记录,查看历史生成的地址记录。

方法三:调用 API 生成

  1. (可选)调用添加或更新推拉流鉴权接口,为域名开启并配置鉴权密钥。
  2. 调用生成推流地址接口生成推流地址。
  3. 调用生成拉流地址接口生成拉流地址。

说明

推荐您使用服务端 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)
   }
        
最近更新时间:2026.10.23 02:13:16
这个页面对您有帮助吗?
有用
有用
无用
无用