一:簡介
EasyDarwin開源流媒體服務器(www.easydarwin.org)現在使用Go版本實現了。最新的代碼提交,已經支持了推流(或者拉流 )的同時進行本地存儲。
本地存儲的原理,是在推流的同時啟動ffmpeg作為一路Client來做存儲。ffmpeg在demux和mux的工作方面已經十分成熟,我們 沒必要再重復發明輪子。因此這種做法十分取巧而且簡單有效,也不會侵入原來的代碼架構。如下圖所示:
官方鏈接:https://ffmpeg.zeranoe.com/builds/
二:搭建EasyDarwin流媒體服務
1.准備一台主機
192.168.175.200 vip
2.關閉防火牆和selinux
命令:[root@vip ~ ]# iptables -F && systemctl stop firewalld && setenforce 0
3.下載安裝包(打開瀏覽器)
https://github.com/EasyDarwin/EasyDarwin/releases
4.裝包解包
命令:[root@vip ~]# tar -zvxf EasyDarwin-linux-8.1.0-1901141151.tar.gz
5.修改配置
命令:[root@vip ~]# cd EasyDarwin-linux-8.1.0-1901141151/
命令:[root@vip EasyDarwin-linux-8.1.0-1901141151]# vim easydarwin.ini
[http]
port=10008
default_username=admin
default_password=admin
[rtsp]
port=554
; rtsp 超時時間,包括RTSP建立連接與數據收發。
timeout=28800
; 是否使能gop cache。如果使能,服務器會緩存最后一個I幀以及其后的非I幀,以提高播放速度。但是可能在高並發的情況下帶來內存壓力。
gop_cache_enable=1
; 是否使能向服務器推流或者從服務器播放時驗證用戶名密碼. [注意] 因為服務器端並不保存明文密碼,所以推送或者播放時,客戶端應該輸入密碼的md5后的值。
; password should be the hex of md5(original password)
#authorization_enable=0 #關閉認證的話把這一行注釋掉
; 是否使能推送的同事進行本地存儲,使能后則可以進行錄像查詢與回放。
save_stream_to_local=1 #1本地存儲開啟
;easydarwin使用ffmpeg工具來進行存儲。這里表示ffmpeg的可執行程序的路徑。
ffmpeg_path=/usr/bin/ffmpeg #可以用yum安裝的方式
;本地存儲所將要保存的根目錄。如果不存在,程序會嘗試創建該目錄。
m3u8_dir_path=/Users/ze/Downloads/EasyDarwinGoM3u8 #存儲視頻的路徑可以手動提前創建
;切片文件時長。本地存儲時,將以該時間段為標准來生成ts文件(該時間+一個I幀間隔),單位秒。
;如果需要直播,這個值設小點,但是這樣會產生很多ts文件;如果不需要直播,只要存儲的話,可設大些。
ts_duration_second=6
;key為拉流時的自定義路徑,value為ffmpeg轉碼格式,比如可設置為-c:v copy -c:a copy,表示copy源格式;default表示使用ffmpeg內置的輸出格式,會進行轉碼。
/stream_265=default #value為ffmpeg轉碼格式,536586.sdp 轉碼推送來源的路徑
6.創建ffmpeg路徑
命令:[root@vip ~]# mkdir /usr/bin/ffmpeg
7.啟動服務
命令:[root@vip ~]# cd EasyDarwin-linux-8.1.0-1901141151/
命令:[root@vip EasyDarwin-linux-8.1.0-1901141151]# ./start.sh
啟動成功后,在瀏覽器上面輸入http://192.168.175.200:10008/apidoc/
賬號密碼都是admin
然后將視頻放在/Users/ze/Downloads/EasyDarwinGoM3u8目錄下
在瀏覽器上面輸入http://192.168.175.10:10008/record/e7b3dbac582a67bf4a59ae0fa0530a22.mp4 就可以觀看了
總結:。。。。。。。此處省略一萬字