EasyDarwin —— ubuntu搭建rtsp服务,使用FFmpeg进行rtsp推拉流

EasyDarwin是一款由国内团队开发的开源流媒体平台框架,支持RTSP流的推送与分发等功能,适用于快速构建流媒体服务平台。最新版本采用Golang开发,可在Linux和Windows上运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开源流媒体服务器

     EasyDarwin是由国内开源流媒体团队开发和维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大流媒体开发者和创业型企业快速构建流媒体服务平台,更快、更简单地实现最新的移动互联网(安卓、IOS、微信)流媒体直播与点播的需求,尤其是安防行业与互联网行业的衔接。

     EasyDarwin最新版本由Golang开发跟维护,老版本由C++开发,已经停止维护,以后只维护新版本。EasyDarwin支持运行在linux、windows。
     

     主要功能:
          接收RTSP流推送、RTSP流分发、关键帧缓存、秒开画面、web 后台管理、分布式负载均衡。

     官网
          EasyDarwin

     GitHub
          EasyDarwin

搭建rtsp服务

     1、下载release包。

          EasyDarwin下载Release包

在这里插入图片描述


     2、解压并运行

          解压完之后运行 “sudo ./EasyDarwin” 开始。(Ctrl + C 停止服务。
在这里插入图片描述

          打开浏览器输入 http://localhost:10008, 进入控制页面,默认用户名密码是admin/admin

在这里插入图片描述

     3、rtsp推拉流

          注意:下面的地址是上面图二红色框选的地址。

/*
	注意:
		rtsp://192.168.8.104 为推拉流一样的地址。
		如需要多个rtsp服务则修改后边的端口就行,即:rtsp://192.168.8.104/5566
*/

// 默认以udp方式推流桌面
ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtsp rtsp://192.168.8.104

// 设置以tcp方式推流桌面
ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://192.168.8.104

// 拉流播放。(默认以udp方式拉力。若使用tcp方式推流则该方式不可用,必须用vlc拉流或ffmpeg编写拉流时加入tcp传输选项即可。)
ffplay -i -x 800 -y 600 rtsp://192.168.8.104	// rtsp默认udp方式传输

          注意:当进行拉流或推流操作时,在网页端可以查询到。
在这里插入图片描述

     

关注

笔者 - jxd      (码农总动员)

### 使用USB相机实现RTSP推流与拉流的方法及配置教程 #### 一、环境准备 为了确保能够顺利地使用USB相机进行RTSP推流和拉流,需提前准备好必要的软件工具。 对于Linux系统特别是Ubuntu 20.04配合ROS Noetic版本而言,在启动前应先执行`roslaunch usb_cam usb_cam-test.launch`来初始化摄像头设备[^1]。这一步骤会加载驱动程序并将图像数据发布到指定的话题中供后续节点订阅利用。 #### 二、FFmpeg安装与配置 针对Windows平台下的操作指南提到过关于FFmpeg这款强大的多媒体框架的应用场景之一便是完成视频的编码解码以及传输工作;因此无论是哪种操作系统下都推荐采用它来进行实际开发实践[^3]。具体来说: - 下载适合当前系统的预编译版FFmpeg压缩包; - 解压至任意目录,并将该路径添加入PATH环境变量以便命令行调用; - 测试是否成功安装可通过cmd窗口输入`ffmpeg -version`查看返回信息确认无误即可继续下一步流程。 #### 三、基于GStreamer构建管道 考虑到不同硬件架构之间的差异性(比如桌面级PC对比嵌入式ARM板卡),当目标机器为树莓派这类小型计算机时,则更倾向于借助于GStreamer库所提供的灵活API接口去创建自定义的数据流转送管线[^2]。下面给出一段Python脚本作为例子展示怎样连接来自USB Camera的画面帧并将其转换成H.264格式最后经由网络协议发送出去形成可供远程客户端访问观看的实时媒体资源。 ```python import gi gi.require_version('Gst', '1.0') from gi.repository import Gst, GObject def create_pipeline(): pipeline_str = ( "v4l2src device=/dev/video0 ! image/jpeg,width=1920,height=1080,framerate=30/1 " "! jpegparse ! jpegdec ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast " "! rtph264pay config-interval=1 pt=96 ! udpsink host=localhost port=5000" ) return Gst.parse_launch(pipeline_str) if __name__ == "__main__": loop = GObject.MainLoop() p = create_pipeline() try: p.set_state(Gst.State.PLAYING) loop.run() except KeyboardInterrupt: pass finally: p.send_event(Gst.Event.new_eos()) p.set_state(Gst.State.NULL) ``` 上述代码片段实现了从物理传感器读取JPEG格式原始影像资料经过一系列处理步骤之后再封装成为RTP分组最终定向投递给监听在同一局域网内的接收方应用程序的过程描述。值得注意的是此处选用UDP而非TCP是因为前者具有更低延迟特性更适合用于直播类业务需求当中。 #### 四、VLC播放器接入测试 一旦完成了服务端部分部署上线以后就可以尝试着打开一台装有VLC Media Player实例的工作站浏览器地址栏里键入形如`rtsp://<server_ip>:5000/test`这样的URL链接从而验证整个方案的有效性和稳定性了。如果一切正常的话应当可以流畅地看到来自于前端摄像装置所捕捉下来的动态画面效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信必诺

嗨,支持下哥们呗。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值