租用幫助
云儲存服務如何實現視頻存儲?為了方便直播/監控用戶使用云存儲產品來存儲音視頻數據,互聯數據的云存儲產品近期推出了RTMP收流功能。用戶可以直接用RTMP協議將音視頻數據上傳到互聯數據云存儲。
互聯數據云存儲介紹
LiveChannel是云存儲為了管理RTMP推流新增的概念;LiveChannel即直播頻道,用來保存推流配置,獲取推流狀態等;直播頻道從屬于bucket,一個用戶可以在bucket中創建無限多的直播頻道。
用戶創建一個LiveChannel即可以獲取一個對應的RTMP推流地址,隨后用戶可以將音視頻數據通過RTMP協議推送到云存儲OSS,轉儲為HLS協議的ts、m3u8文件。(牛逼的很那,哈哈)轉儲的文件可以用來做點播;在延遲要求不高的場景下也可以直接使用HLS協議做直播;另外,還支持收流的同時實時截圖。
通過LiveChannel,用戶可以在直播的同時將內容存儲到云存儲OSS,不需要任何的本地臨時存儲;在享受云存儲OSS高可靠、低成本、無限擴展的同時,還可以利用云存儲OSS強大并且還在不斷豐富中的數據處理能力(截圖、轉碼、鑒黃等等)來進行各種后期處理;還可以非常便捷的使用云存儲OSS的Lifecycle等功能來做數據的生命周期管理。
云儲存實現圖片、視頻存儲:http://www.bxgb88.com/cloud/hk.html
云儲存實現視頻存儲使用場景說明
一、RTMP直播轉錄為HLS
步驟說明
1. APP開始直播,推送RTMP流到CDN;
2. APP或者CDN發送“開始直播”的消息到MNS Topic,信息中包含本次直播的CDN拉流地址;
3. MNS推送消息到用戶搭建在云服務器ECS上的RTMP Proxy;
4. RTMP Proxy使用ffmpeg從CDN拉流;
5. RTMP Proxy在云存儲OSS創建LiveChannel,并向云存儲OSS推流;
6. 轉推結束后,RTMP Proxy發送一條“推流結束”的消息到另一個MSN Topic;
7. MNS向客戶的應用服務器推送“轉推結束”的消息,供后續處理(例如保存點播地址到數據庫);
8. APP從應用服務器得到點播地址,訪問云存儲OSS獲取點播視頻。
備注
1. 用戶可以自己使用OSS/MNS SDK、ffmpeg、librtmp等來實現自己的RTMP Proxy,后續云存儲OSS會提供示例程序;
2. 整個步驟中涉及到的組件都可以使用阿里云提供的服務搭建。
步驟說明
1. 直播時使用RTMP Proxy轉推一路數據到OSS,并設置LiveChannel開啟截圖;
2. OSS按用戶指定的間隔截圖,并保存到OSS;
3. OSS調用第三方鑒黃服務對圖片進行打分;
4. OSS將打分的結果推送到MNS Topic;
5. MNS回調用戶的應用服務器通知鑒黃結果;
6. 另一種處理方式:用戶也可以選擇讓OSS直接推送截圖的圖片鏈接,應用服務器將圖片地址聚合后采用其他方式鑒別;
備注
1. 第三方鑒黃服務會部署在阿里云提供的容器服務中,調用的延遲等有充分的保證;
2. 截圖的同時云存儲OSS仍然會將RTMP流轉儲為HLS文件;
三、權限控制(私有bucket支持HLS播放)
云存儲OSS提供了豐富的鑒權/授權機制讓用戶可以精細的控制數據的訪問權限;對于HLS直播/點播場景,我們同樣提供了“動態簽名m3u8”的機制,使用戶可以使用私有bucket提供HLS播放服務。
用戶只需要使用URL簽名方式訪問m3u8,并且增加參數“x- OSS-process=hls/type”, OSS會對返回的播放列表中的所有ts地址按照與m3u8完全的相同的方式進行簽名(相同的accessId、accessKey、expireTime)。
假設某個m3u8文件的內容如下:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:54
#EXT-X-TARGETDURATION:6
#EXTINF:6.006,
1470971233380.ts
#EXTINF:6.006,
1470971233398.ts
#EXTINF:1.944,
1470971233415.ts &l