首先下载 EasyDarwin服务器源码
Github下载:https://github.com/EasyDarwin/EasyDarwin/releases/tag/v7.0.5
源码编译与配置
cd ./EasyDarwin-master/EasyDarwin/
chmod +x ./Buildit
./Buildit x64 (./Buildit i386 or ./Buildit x64编译出相应版本的可执行文件)
cd ./x64 (or cd ./Release)文件配置
可以把WinNTSupport下的exsydarwin.xml 和 html文件夹复制到x64下面Linux调试运行
./easydarwin -c ../WinNTSupport/easydarwin.xml -d
Linux后台服务方式运行
./easydarwin -c /etc/streaming/easydarwin.xml &
测试
登陆浏览器 ip:8088
使用 easyPusher 推流 ip:554
rtsp://39.xxx.xxx.xxx:554/1234.sdp
使用 easyPlayer播放
防火墙设置
sudo ufw enable
服务器,还是要开启防火墙的
sudo ufw default allow
如果是deny就拒绝外部连接了,不可取
sudo ufw status
查看 开放端口
sudo ufw allow 22/tcp 允许所有的外部IP访问本机的22/tcp (ssh)端口
sudo ufw allow 80/http 允许所有的外部IP访问本机的80端口
sudo ufw allow 554/tcp 允许所有的外部IP访问本机的554/tcp 端口
sudo ufw allow 8088/tcp 允许所有的外部IP访问本机的8088/tcp 端口
使用扫描软件 Nmap扫描服务器的端口
sudo nmap -sS -P0 -sV -O 47.93.226.32
Nmap常用方法
转发服务器的两种模式
先拉后推
准确地说 转发服务器主动拉取流,然后再推动到RTSP客户端
流媒体服务器A(转发服务器)发送标准的RTSP客户DESCRIBE/SETUP/PLAY请求给远程服务器,即流媒体服务器B。
发起请求的中继“客户端”(流媒体服务器A)开始接受流,然后向该输入流的中继配置中列出的所有目的地发送ANNOUNCE推送请求。
··
但是 我们在实际的需求中常常遇到的场景为,客户端的请求触发转发服务器以拉模式从前端设备或者其他流媒体服务器获取视频后,再传输给客户端,是一种先拉后拉(pull-then-pull)模式,如果客户端请求的视频流存在,则直接转发已经获取的拷贝进行分发,这个是我们后面在对Darwin做二次开发中所需要做的
先监听后推送
远程机器(IpCamera等前端设备或者中继服务器)向流媒体服务器A发送一个ANNOUNCE请求。流媒体服务器可以接受或者否认这个请求。如果它接受了请求,则流媒体服务器会检查其中继配置,以确定这个流是否应该被中继。
如果该流应该被中继,则流媒体服务器将向自身发送标准的RTSP客户DESCRIBE/SETUP/PLAY请求。
发出请求的中继“客户”(流媒体服务器A)开始接收流,然后向相应的输入流的中继配置中列出的所有目的地发送一个ANNOUCE请求。
···
注意:我们在实际的需求中常常遇到的场景为,前端设备RTSP Announce上线至中继服务器,上报其流媒体SDP信息,前端设备再经过’被触发’,通过SETUP/PLAY流程发起流推送,客户端再以拉模式拉取实时视频流,是一种先推后拉(push-then-pull)模式,如果客户端请求的视频流存在,则直接转发已经获取的拷贝进行分发,这个又是我们后面在对Darwin做二次开发中所需要做的。
··
EasyPusher+EasyDarwin+EasyPlayer 模式 就是典型的先推后拉的方式