腾讯云如何获取推流URL

来源:互联网 发布:打印销售单软件 编辑:程序博客网 时间:2024/06/05 05:17

快速获得地址?

如果您是想要生成一组URL用于测试,那您只需要打开直播控制台>>直播码接入>>推流生成器,点击生成推流地址按钮,即可生成一个推流URL和三种不同播放协议的播放URL。

使用 RTMP SDK DEMO 可以快速测试推流URL和播放URL的有效性。

后台自动拼装?

推流URL

实际产品中,您不可能为每一个主播手工创建推流和播放URL,而是要由您的服务器自行拼装,只要符合腾讯云标准规范的URL 就可以用来推流,如下是一条标准的推流URL,它由三个部分组成:
url

  • 直播码
    也叫房间号,推荐用随机数字或者用户ID,注意一个合法的直播码需要拼接 BIZID 前缀。

  • txTime
    何时该URL会过期,格式是十六进制的UNIX时间戳,比如 5867D600 代表 2017年1月1日0时0点0分过期。 我们的客户一般会将 txTime 设置为当前时间 24 小时以后过期,过期时间不要太短,当主播在直播过程中遭遇网络闪断时会重新恢复推流,如果过期时间太短,主播会因为推流 URL 过期而无法恢复推流。

  • txSecret
    防盗链签名,防止攻击者伪造您的后台生成推流URL,计算方法参考防盗链的计算。

  • 示例代码
    直播控制台>>直播码接入>>推流生成器页面下半部分有示例代码(PHP和Java两个版本)演示如何生成防盗链地址。

播放URL

播放URL的拼接跟推流URL一样简单,只是需要把子域名从 livepush 改成 liveplay

防盗链的计算?

安全防盗链指的是推流和播放URL中的 txSecret 字段,它的作用是防止攻击者伪造您的后台生成推流URL,或者非法盗取您的播放地址为自己谋利。

安全原理

为了不让攻击者可以伪造您的服务器生成推流URL,我们需要您现在直播管理控制台配置 防盗链加密KEY,由于攻击者无法轻易获得加密KEY,也就无法伪造出有效的推流URL,如下图所示:

计算过程

  • step1 : 交换秘钥
    首先,您需要在官网的控制台,协商一个加密密钥,这个加密密钥用于在您的服务器上生成防盗链签名,由于腾讯云跟您持有同样的密钥,所以您生成的防盗链签名,腾讯云是可以进行解密确认的。

    加密秘钥分为推流防盗链KEY播放防盗链KEY,前者用于生成推流防盗链URL,后者用于生成播放防盗链URL。目前在直播管理控制台上可以自助配置推流防盗链KEY,如下图:

    默认不开播放防盗链

    由于播放防盗链KEY的配置需要同步到几千台CDN集群,同步周期一般都很长,不适合调试期频繁修改。如果您需要配置播放防盗链,可以通过客服电话联系我们,正常流程一般需要 1 - 3 天完成全集群的同步。

  • step2 : 生成txTime
    签名中明文部分为txTime,含义是该链接的有效期,比如现在我当前的时间是2016-07-29 11:13:45,而且期望新生成的URL是在 24 小时后即作废,那么txTime就可以设置为 2016-07-30 11:13:45。

    不过这么长一串时间字符串放在URL里显然 “不太经济”,实际使用中,我们是把 2016-07-30 11:13:45 转换成Unix时间戳,也就是1469848425 (转换方式各种后台编程语言都由直接可用的时间函数来处理),然后转换成16进制以进一步压缩字符长度,也就是 txTime = 1469848425(十六进制) = 579C1B69(十六进制)。

    我们的客户一般会将 txTime 设置为当前时间 24 小时以后过期,过期时间不要太短,当主播在直播过程中遭遇网络闪断时会重新恢复推流,如果过期时间太短,主播会因为推流 URL 过期而无法恢复推流。

  • step3 - 生成txSecret
    txSecret的生成方法是 = MD5(KEY+ stream_id + txTime),这里的 KEY 就是您在 step1 中配置的加密KEY,stream_id在本例中为 8888_test001,txTime为刚才计算的 579C1B69,MD5 即标准的MD5单向不可逆哈希算法。

  • step4 - 合成防盗链地址
    现在我们有了推流(或者播放)URL,有了用来告知腾讯云该URL过期时间的txTime,有了只有腾讯云才能解密并且验证的txSecret,就可以拼合成一个防盗链的安全URL了。

示例代码

直播控制台>>直播码接入>>推流生成器页面下半部分有示例代码(PHP和Java两个版本)演示如何生成防盗链地址。