欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播

程序员文章站 2022-07-07 12:27:52
...

部署 EasyDarwin 流媒体服务器

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

官网地址 http://www.easydarwin.org/
Github 地址 https://github.com/EasyDarwin/EasyDarwin

FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播

下面以 window 为例,下载后的目录如下
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播
easydarwin.ini 为它的配置文件

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

FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播
双击 EasyDarwin.exe 打开服务器,待其启动后,打开如下链接 http://localhost:10008 【是否登录都没关系】

至此,服务器部署完毕!

FFmpeg 推流到 EasyDarwin

ffmpeg 官网 http://ffmpeg.org/
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播
直接下载编译好的可执行文件,随后使用命令行调用
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播
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 C:\Users\Administrator\Videos\test.mkv -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://localhost/test

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

推流成功后,可以在网页上看到推流列表中新增了该项;推流结束,该项则会自动被删除!
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播

vlc / ffplay 播放 rtsp 流

使用 vlc

媒体 ——> 打开网络串流,然后贴入 rtsp 地址
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播

ffplay 播放

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

例如:ffplay rtsp://localhost/test
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播

EasyDarwin 转发 RTSP

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

第三方接入

EasyDarwin 采用 http 的形式暴露其接口
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播

FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播
按照接口说明的,访问 http://localhost:10008/api/v1/pushers 获取推送列表
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播

{
    "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 流的时候,数据是这样的
FFmpeg 推流 + EasyDarwin 转发 + vlc 播放 实现 RTSP 直播

{
    "total": 0,
    "rows": []
}
相关标签: 流媒体