部署 EasyDarwin 流媒体服务器

EasyDarwin 是一款开源的 RTSP 流媒体服务器。基于 golang 语言开发,支持 Windows、Linux、macOS 平台。支持 RTSP 推流分发(推模式转发)、RTSP拉流分发(拉模式转发)、服务端录像、服务端录像检索与回放、关键帧缓存、秒开画面、Web后台管理、分布式负载均衡。

freeswitch ffmpeg实时音频流推流_服务器

下面以 window 为例,下载后的目录如下

freeswitch ffmpeg实时音频流推流_官网_02


easydarwin.ini 为它的配置文件

  • http的端口号默认为 10008
  • 默认的用户名、密码 均为 admin
  • rtsp的端口号默认为 554

freeswitch ffmpeg实时音频流推流_命令行_03


双击 EasyDarwin.exe 打开服务器,待其启动后,打开如下链接 http://localhost:10008 【是否登录都没关系】

至此,服务器部署完毕!

FFmpeg 推流到 EasyDarwin

安装FFmpeg

  • Ubuntu sudo apt install ffmpeg
  • Windows 进入FFmpeg官网下载release版本解压即可使用

ffmpeg 官网 http://ffmpeg.org/

freeswitch ffmpeg实时音频流推流_服务器_04


直接下载编译好的可执行文件,随后使用命令行调用

freeswitch ffmpeg实时音频流推流_官网_05


ffmpeg 推流命令:

ffmpeg -re -i <视频地址> -rtsp_transport <传输方式 tcp/udp> -vcodec h264 -f rtsp rtsp://<服务器IP>/<子路径>

  • -re 表示按照帧率发送,否则ffmpeg会按照最高速率向流媒体服务器发送数据
  • -i filename 指定输入文件名
  • -vcodec codec 强制使用codec编解码('copy’代表不进行重新编码)
  • -f fmt 指定视频或音频的格式

例如:
ffmpeg -re -i D:\Downloads\QQ20200524211316.mp4 -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://localhost/test

这里的播放地址,就是之前设置的 rtsp://localhost/test

推流成功后,可以在网页上看到推流列表中新增了该项;推流结束,该项则会自动被删除!

freeswitch ffmpeg实时音频流推流_服务器_06

vlc / ffplay 播放 rtsp 流

使用 vlc

媒体 ——> 打开网络串流,然后贴入 rtsp 地址

freeswitch ffmpeg实时音频流推流_命令行_07


freeswitch ffmpeg实时音频流推流_命令行_08

ffplay 播放

直接在命令行键入 ffplay <rtsp地址>

例如:ffplay rtsp://localhost/test

freeswitch ffmpeg实时音频流推流_命令行_09

EasyDarwin 转发 RTSP

  • 服务器每转发一条 RTSP,都会在命令行下留下一条记录(开始、结束)
  • 由于 RTSP 是实时传输的,当推流结束后,网页中的推流列表也会随之删除该条记录

第三方接入

EasyDarwin 采用 http 的形式暴露其接口

freeswitch ffmpeg实时音频流推流_命令行_10

freeswitch ffmpeg实时音频流推流_命令行_11


按照接口说明的,访问 http://localhost:10008/api/v1/pushers 获取推送列表

freeswitch ffmpeg实时音频流推流_官网_12

{
    "total": 1,
    "rows": [
        {
            "id": "y0-muK7Gg",
            "inBytes": 1753255,
            "onlines": 0,
            "outBytes": 435,
            "path": "/test",
            "source": "rtsp://localhost:554/test",
            "startAt": "2020-07-15 19:12:38",
            "transType": "TCP",
            "url": "rtsp://localhost/test"
        }
    ]
}

当没有 rtsp 流的时候,数据是这样的

freeswitch ffmpeg实时音频流推流_服务器_13

{
    "total": 0,
    "rows": []
}