前言
本文介绍一个十分实用的高性能开源 RTSP 流媒体服务器:EasyDarwin
。
一、EasyDarwin 简介
EasyDarwin 是基于 go 语言研发,维护和优化的一个高性能开源 RTSP 流媒体服务器,能够帮助流媒体开发者和创业型企业快速构建流媒体服务平台,更快,更简单的实现最新的移动互联网流媒体直播和点播,同步音频和视频的传输,源码下载地址:
- https://github.com/EasyDarwin/EasyDarwin
- https://github.com/EasyDarwin/EasyDarwin/releases
二、EasyDarwin 主要功能特点
- 基于 Golang 开发维护;
- 支持 Windows、Linux、macOS 平台;
- 支持 RTSP 推流分发(推模式转发);
- 支持 RTSP 拉流分发(拉模式转发);
- 服务端录像 参考:https://blog.csdn.net/jyt0551/article/details/84189498
- 服务端录像检索与回放 参考:https://blog.csdn.net/jyt0551/article/details/84189498
- 关键帧缓存;
- 秒开画面;
- Web 后台管理;
- 分布式负载均衡;
三、安装部署
1、下载解压 release 包 https://github.com/EasyDarwin/EasyDarwin/releases
2、直接运行(Windows)
双击 EasyDarwin.exe
注:停止服务为 Ctrl C
服务运行起来后如下所示:
四、推拉流测试
1、进入控制页面
打开浏览器输入 http://localhost:10008
,进入控制页面,默认用户名密码都是 admin,主界面如下图所示
2、推流测试
使用 FFmpeg 将输入的 FLV 视频文件转换为 RTSP 流,并通过 TCP 协议传输到本地主机的 “test1” 路径。视频编码使用 libx264,音频编码使用 AAC。
代码语言:javascript复制ffmpeg -re -i SampleVideo_1280x720_20mb.flv -rtsp_transport tcp -vcodec libx264 -acodec aac -f rtsp rtsp://localhost/test1
-re
:这个选项告诉 FFmpeg 以实时模拟的方式读取输入文件。这对于模拟实时流传输很有用,即使输入文件本身不是实时生成的。-i SampleVideo_1280x720_20mb.flv
:这是输入文件的路径和文件名。在这个例子中,输入文件是名为 “SampleVideo_1280x720_20mb.flv” 的 FLV 格式视频文件。-rtsp_transport tcp
:这个选项指定了 RTSP(Real-Time Streaming Protocol)传输使用 TCP 协议。RTSP 是一种用于流媒体传输的协议,通过 TCP 可以提供稳定的传输。-vcodec libx264
:这个选项指定了视频编解码器为 libx264,它是一个开源的 H.264 视频编码器。H.264 是一种流行的视频编码标准,广泛用于视频压缩和传输。-acodec aac
:这个选项指定了音频编解码器为 AAC(Advanced Audio Coding),它是一种常用的音频编码格式,具有高音质和较低的比特率。-f rtsp
:这个选项指定了输出格式为 RTSP。RTSP 格式是用于流媒体传输的一种常见格式。rtsp://localhost/test1
:这是输出 RTSP 流的 URL。在这个例子中,输出的 RTSP 流将被传输到本地主机上的 “test1” 路径。
在推流列表可以看到相关信息:
3、拉流测试
使用 FFplay 工具来播放一个通过 RTSP 协议传输的视频流
代码语言:javascript复制ffplay -rtsp_transport tcp rtsp://localhost/test1
-rtsp_transport tcp
:这个选项指定了 RTSP 传输使用 TCP 协议。这将确保使用 TCP 进行稳定的传输。rtsp://localhost/test1
:这是要播放的 RTSP 流的 URL。在这个例子中,要播放的流位于本地主机的 “test1” 路径上。
可以看到拉流成功,正在进行播放
在推流列表可以看到相关信息: