接上篇
在上一篇博客《一種流量成本節省60%以上的手機直播微信直播H5直播幼兒園直播方案》中,我們一共介紹了兩種省錢的HLS直播途徑:
方案一:編碼器或者內網推流直接對接雲存儲的場景
如果我們是一個做編碼器或者我們在內網有個直播主機,而且可以對編碼器、主機做定制,那么我們可以直接將直播流切片成HLS數據源源不斷寫入到雲存儲中,再通過雲存儲提供的Public或者Private的http地址,就可以直接觀看HLS直播,與我們在直播服務器中切片的HLS m3u8地址訪問方法一樣;
方案二:推流到公網的服務器再做切片
如果我們沒有辦法或者技術方法改變內網推流端,而是直接購買的直播設備,我們也是可以做到的:購買一台雲主機,部署上RTMP服務器(例如EasyDSS),再通過RTMP服務器將切片的HLS直播數據源源不斷通過內網的形式寫入到雲存儲中,阿里雲也出了一個叫做cloudfs的產品,就是能夠直接將OSS雲存儲掛在到服務器上做為一個磁盤,這樣就能想寫本地磁盤目錄一樣,寫m3u8+ts文件了,這里的費用也是極低的,首先內網上行到服務器主機的流量是免費的,服務器主機寫入到雲存儲走內網流量也是免費的,流量費用與第一種方式是相似的!
我們今天着重要描述的就是場景一的實現方案,直接在攝像機或者編碼器中將直播/存儲的HLS數據寫入到OSS/七牛雲存儲這樣的雲存儲中,注意,這里不論是直播類型的HLS,還是點播類型的HLS,都可以寫入到雲存儲中,而且都能夠跟正常的直播型HLS或者點播型存儲效果是一致的!
實現方法
確定了方向,那么下一步就是應該如何實現呢,我總結了幾個層次的需求,按順序:
Step1:有攝像機/編碼器的二次開發權限,能直接在攝像機/編碼器的arm系統中植入我們對接雲存儲的程序;
Step2:對接攝像機/編碼器SDK或者協議獲取到實時的音視頻流,並轉換為標准的H.264+AAC(如果有音頻);
Step3:將H.264+AAC切片成HLS實時流數據/點播流數據;
Step4:將Step3中的數據通過雲存儲的SDK寫入到雲存儲的Bucket中;
開發計划
我本身是海康螢石的用戶,每個月需要自己付款12元保存7天的錄像,我的計划是自己基於廠家的攝像機開發一款雲存儲攝像機,具備幾個功能:
根據攝像機的SDK二次開發,當有移動偵測回調的時候,才啟動雲存儲錄像;
存儲錄像到雲存儲中保存7/30天;
攝像機原生需要支持H.264,音頻轉碼通過EasyAACEncoder:https://github.com/EasyDarwin/EasyAACEncoder來實現;
HLS切片采用EasyHLS:https://github.com/EasyDarwin/EasyHLS來實現;
雲存儲當然就用雲存儲平台提供的SDK二次開發了,例如OSS:https://help.aliyun.com/document_detail/32131.html?spm=5176.87240.400427.51.01eGWx,七牛雲:https://developer.qiniu.com/kodo/sdk/1255/cpp
當然阿里雲的OSS有直接將4、5兩步合並的SDK:https://help.aliyun.com/document_detail/32159.html?spm=5176.87240.400427.55.01eGWx;
獲取更多信息
Copyright © EasyDarwin.org 2012-2017
#20171028於北京#