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

举报
福州司马懿 发表于 2021/11/29 22:48:16 2021/11/29
【摘要】 部署 EasyDarwin 流媒体服务器EasyDarwin 是一款开源的 RTSP 流媒体服务器。基于 golang 语言开发,支持 Windows、Linux、macOS 平台。支持 RTSP 推流分发(推模式转发)、RTSP拉流分发(拉模式转发)、服务端录像、服务端录像检索与回放、关键帧缓存、秒开画面、Web后台管理、分布式负载均衡。官网地址 http://www.easydarwi...

部署 EasyDarwin 流媒体服务器

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

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

image.png

下面以 window 为例,下载后的目录如下
image.png
easydarwin.ini 为它的配置文件

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

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

至此,服务器部署完毕!

FFmpeg 推流到 EasyDarwin

安装FFmpeg

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

ffmpeg 官网 http://ffmpeg.org/
image.png
直接下载编译好的可执行文件,随后使用命令行调用
image.png
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

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

vlc / ffplay 播放 rtsp 流

使用 vlc

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

ffplay 播放

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

例如:ffplay rtsp://localhost/test
image.png

EasyDarwin 转发 RTSP

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

第三方接入

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

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

{
    "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 流的时候,数据是这样的
image.png

{
    "total": 0,
    "rows": []
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。