天天看點

如何使用OSS RTMP功能直播/鑒黃?

音視訊直播平台如何實作資料存儲?視訊監管及風控需求如何滿足?直播視訊/圖檔内容如何自動稽核?視訊監控行業如何降低視訊資料存儲成本?為了友善直播/監控使用者使用oss來存儲音視訊資料,oss近期推出了rtmp收流功能。使用者可以直接用rtmp協定将音視訊資料上傳到oss。

livechannel是oss為了管理rtmp推流新增的概念;livechannel即直播頻道,用來儲存推流配置,擷取推流狀态等;直播頻道從屬于bucket,一個使用者可以在bucket中建立無限多的直播頻道。

使用者建立一個livechannel即可以擷取一個對應的rtmp推流位址,随後使用者可以将音視訊資料通過rtmp協定推送到oss,轉儲為hls協定的ts、m3u8檔案。轉儲的檔案可以用來做點播;在延遲要求不高的場景下也可以直接使用hls協定做直播;另外,oss還支援收流的同時實時截圖,鑒黃來做協助使用者做内容審查(内測中,有需求的使用者可以通過工單、支援群來聯系我們)。

通過livechannel,使用者可以在直播的同時将内容存儲到oss,不需要任何的本地臨時存儲;在享受oss高可靠、低成本、無限擴充的雲存儲的同時,還可以利用oss強大并且還在不斷豐富中的資料處理能力(截圖、轉碼、鑒黃等等)來進行各種後期處理;還可以非常便捷的使用oss的lifecycle等功能來做資料的生命周期管理。

如何使用OSS RTMP功能直播/鑒黃?

app開始直播,推送rtmp流到cdn;

app或者cdn發送“開始直播”的消息到mns topic,資訊中包含本次直播的cdn拉流位址;

mns推送消息到使用者搭建在ecs上的rtmp proxy;

rtmp proxy使用ffmpeg從cdn拉流;

rtmp proxy在oss建立livechannel,并向oss推流;

轉推結束後,rtmp proxy發送一條“推流結束”的消息到另一個msn topic;

mns向客戶的應用伺服器推送“轉推結束”的消息,供後續處理(例如儲存點播位址到資料庫);

app從應用伺服器得到點播位址,通路oss擷取點播視訊。

使用者可以自己使用oss/mns sdk、ffmpeg、librtmp等來實作自己的rtmp proxy,後續oss會提供示例程式;

整個步驟中涉及到的元件都可以使用阿裡雲提供的服務搭建。

如何使用OSS RTMP功能直播/鑒黃?

直播時使用rtmp proxy轉推一路資料到oss,并設定livechannel開啟截圖;

oss按使用者指定的間隔截圖,并儲存到oss;

oss調用第三方鑒黃服務對圖檔進行打分;

oss将打分的結果推送到mns topic;

mns回調使用者的應用伺服器通知鑒黃結果;

另一種處理方式:使用者也可以選擇讓oss直接推送截圖的圖檔連結,應用伺服器将圖檔位址聚合後采用其他方式鑒别;

第三方鑒黃服務會部署在阿裡雲提供的容器服務中,調用的延遲等有充分的保證;

截圖的同時oss仍然會将rtmp流轉儲為hls檔案;

oss提供了豐富的鑒權/授權機制讓使用者可以精細的控制資料的通路權限;對于hls直播/點播場景,我們同樣提供了“動态簽名m3u8”的機制,使使用者可以使用私有bucket提供hls播放服務。

使用者隻需要使用url簽名方式通路m3u8,并且增加參數“x-oss-process=hls/sign”,oss會對傳回的播放清單中的所有ts位址按照與m3u8完全的相同的方式進行簽名(相同的accessid、accesskey、expiretime)。

假設某個m3u8檔案的内容如下:

動态簽名後傳回的内容如下:

“動态簽名”不會改變存儲在oss中的m3u8檔案的内容;

支援子賬号、sts,使用sts通路時,token必須通過url參數提供;

x-oss-process參數需要參與簽名。