1. 程式人生 > >騰訊雲如何獲取推流URL

騰訊雲如何獲取推流URL

快速獲得地址?

如果您是想要生成一組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兩個版本)演示如何生成防盜鏈地址。