windows系统搭建EasyDarwin流媒体服务器

  • 笔者未商用


linux系统搭建教程,请参见:https://blog.csdn.net/ljrsunshine/article/details/100105494


EasyDarwin官网

  • http://www.easydarwin.org/

    [引] 高性能开源RTSP流媒体服务器,基于go语言研发,维护和优化:RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键帧缓存、秒开画面、RESTful接口、WEB后台管理、分布式负载均衡

    [引] EasyPusher配套EasyDarwin流媒体服务器,支持将H.264/H.265/G.711/G.726/AAC等音视频数据推送到RTSP流媒体服务器(例如EasyDarwin)进行低延时直播或者视频通信,支持Windows、Linux、ARM、Android、iOS等平台。

流媒体服务器配置

  • 下载release版本,github地址:https://github.com/EasyDarwin/EasyDarwin点击“release”

    在这里插入图片描述

  • 解压后,关键的文件是EasyDarwin.exeeasydarwin.ini

    • 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=0
      
      ;easydarwin使用ffmpeg工具来进行存储。这里表示ffmpeg的可执行程序的路径
      ffmpeg_path=E:/ffmpeg-4.1.3-win64-shared/bin/ffmpeg
      
      ;本地存储所将要保存的根目录。如果不存在,程序会尝试创建该目录。
      m3u8_dir_path=E:/vedio
      
      ;切片文件时长。本地存储时,将以该时间段为标准来生成ts文件(该时间+一个I帧间隔),单位秒。
      ;如果需要直播,这个值设小点,但是这样会产生很多ts文件;如果不需要直播,只要存储的话,可设大些。
      ts_duration_second=3600
      
      ;key为拉流时的自定义路径,value为ffmpeg转码格式,比如可设置为-c:v copy -c:a copy,表示copy源格式;default表示使用ffmpeg内置的输出格式,会进行转码。
      /stream_265=default
      
      • 如果想将推送的音视频保存到本地,需要将 save_stream_to_local设置为1
      • 设置本地存储的根目录 m3u8_dir_path
      • 存储音视频需要安装 shared版本的ffmpeg,填写ffmpeg的可执行程序的路径 ffmpeg_path
      • 设置 ts_duration_second,单位为秒,表示保存的每个视频的时长,超出设定值,会新建下一个文件开始保存。如果设置了较长时间的切片,需要注意推流时网络是否稳定,不稳定的网速会导致推流中断
      • http端口是在网页中查看服务器端时使用,网址栏输入 http://(ip):(port)
      • rtsp端口是推流的端口号,要与配套使用的APP中设置的端口号一致。配套的Android工程github地址https://github.com/EasyDarwin/EasyPusher-Android
  • 设置好easydarwin.ini中的参数,双击运行EasyDarwin.exe

    在这里插入图片描述

  • 在浏览器的网址栏输入 http://(ip):(port),回车。点击推流列表查看推流的设备

    在这里插入图片描述

  • 录制的文件保存在设置好的m3u8_dir_path路径下,EasyDarwin保存的目录结构形如:

    <m3u8_dir_path>——
    	|—— <486227.sdp>  // 486227为用户id,APP端随机生成,可在App的设置页面查看
    			|—— <20190704> // 文件夹名表示录制的日期
    					|—— log.txt
    					|—— out.m3u8
    					|—— out0.ts // 录制的文件保存为.ts格式
    					|—— out1.ts // 每个文件的时长为ts_duration_second秒
    					|—— out2.ts
    					... ...
    			|—— <20190705> 
    					|—— log.txt
    					|—— out.m3u8
    					|—— out0.ts // 录制的文件保存为.ts格式
    	|—— <6952968.sdp> // 6952968为用户id,APP端随机生成
    					... ...(结构同上)
    

编译源代码

  • 由上面的EasyDarwin自动保存视频的目录结构可以得出,EasyDarwin的时间单位只精确到日子,如果我在某一天录制多段视频并保存,那么后录制的视频会覆盖掉先录制的视频,因为保存的路径,日期是同一天

  • 为了适应笔者自己的需求,笔者配置了运行Go语言的环境,下载了EasyDarwin的源代码,修改并重新编译生成可执行程序

    • 安装Golang,安装包下载地址:https://golang.org/dl/
    • 安装MingGW 64位
    • IDE:笔者使用 LiteIDE
  • 只需要修改创建文件夹的地方,将时间精确到秒,这样,保存的目录结构就形如:

    <m3u8_dir_path>——
    	|—— <486227.sdp>  // 486227为用户id,APP端随机生成,可在App的设置页面查看
    			|—— <20190704105420> // 文件夹名表示录制的日期
    					|—— log.txt
    					|—— out.m3u8
    					|—— out0.ts // 录制的文件保存为.ts格式
    					|—— out1.ts // 每个文件的时长为ts_duration_second秒
    			|—— <20190704123356> 
    			|—— <20190704181520> 
    			|—— <20190704210455> 
    
  • 修改源代码的 .\rtsp\rtsp-server.go 文件中的 Start()函数:

    dir := path.Join(m3u8_dir_path, pusher.Path(), time.Now().Format("20060102150405"))
    
    • 获取系统时间,并Format为“年月日时分秒”的形式
  • 重新编译时可能会报错找不到XX包,但其实这些包都在源码中,根据报错,调整路径结构即可

最后

  • EasyDarwin是EasyDarwin开源团队开发的开源项目,是不错的学习资源,如果您要商用,还请通过官网与他们团队联系,获得商用许可。

2019.07.08

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值