一:简介
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 就可以观看了
总结:。。。。。。。此处省略一万字