RtspLiveServer

版本:1.5.0

版本日志

    产品同时支持window/linux,为方便管理配置原有参数化方式传递http、rtsp端口改为rls.conf配置文件读取。

    rtmp推流采用rtsp tcp取流解决部分路由器udp无法正常取流。

    数据库文件data.db兼容1.4以上版本,直接拷贝过来即可。

    配置文件说明

    rls.conf内容如下

    {

        "http" : 10000, //http管理端口

        "rtsp" : 554, //rtsp直播端口,linux部分系统默认占用了554端口,需要自行修改为其它可用端口

        "win_debug" : true  //此参数在linux无效;在window设置true控制台运行,false window服务运行

    }

    Window安装部署

    方法1:控制台调试模式

    将配置信息win_debug 设置 true,双击RtspLiveServer.exe运行

    若启动失败请查看端口是否被占用,控制台有信息输出

    方法2:window服务模式

    切记将配置信息win_debug 设置 false

     安装服务:右键create.bat以管理员身份运行文件执行安装,服务名为RtspLiverService可通过window服务管理工具进行管理。

     卸载服务:右键delete.bat以管理员身份运行文件执行卸载

    首次安装电脑未重启时需要手动通过window服务管理工具启动服务 ,或者执行命令提示符sc start RtspLiveService 启动服务

    Linux安装部署

    经测试支持的Linux系统如下:

    1、Centos8  x64

    2、Ubuntu20.04 x64

    产品采用静态链接编译原则上支持Centos、Ubuntu、树莓派、Red Hat等系列系统。

    安装指令:

    unzip  RtspLiveServer-linux-1.5.0-x64.zip --执行文件解压

    cd RtspLiveServer-linux-1.5.0-x64 --终端切换目录

    sudo chmod 777 usr/local/rls/RtspLiveServer  --赋予执行权限

    sudo cp -r usr /    --拷贝目录到根目录

    方法1:控制台调试模式

     ./RtspLiverServer

    若启动失败请查看端口是否被占用,控制台有信息输出

    方法2:服务模式

    sudo systemctl enable rtspliveserver.service --开机自启动

    sudo systemctl start rtspliveserver.service --启动服务

    注意方法1、2不能同时运行

    服务模式其它相关常见指令

    sudo systemctl stop rtspliveserver.service --停止服务

    sudo systemctl restart rtspliveserver.service --重启服务

    sudo systemctl disable rtspliveserver.service --关闭开机启动

    sudo systemctl daemon-reload --重新加载服务配置

    sudo journalctl -u rtspliveserver.service --查看服务运行日志

    管理界面

    默认登录用户admin 密码admin123

    打开浏览器输入http://127.0.0.1:10000即可进入管理界面,下面列出主要菜单功能

    数据面板:查看当前各视频通道客户端在线人数

    视频管理>视频通道:rtsp摄像机接入时需要在这里增加视频通道才能访问

    视频管理>视频认证:客户端访问RtspLiveServer时,如果新增了视频认证必须提供一致的帐号密码信息才能正常访问

    视频管理>推流集群:配置RtspLiveCluster集群服务进行rtmp推流指令中转实现局域网向公网服务器推流,

    若RtspLiveServer与nginx-rtmp在同一网络即不需要配置此模块也可以推流,详见rtmp推流配置章节具体说明。

    用户管理:Web管理及API接口调用均须进行登录验证才能继续进行操作,此用户不同视频认证的用户

    帮助文档:文档采用在线方式访问自动链接到当前版本对应页面

    主流品牌摄像机RTSP示例格式(建议用onvif test tool工具获取最新)

    大华格式1(主子码流subtype=0,1):rtsp://admin:admin@127.0.0.1:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif

    大华格式2(主子码流subtype=0,1):rtsp://admin:admin@127.0.0.1:554/cam/realmonitor?channel=1&subtype=0

    科达格式1(主子码流id=0,1):rtsp://admin:admin@127.0.0.1:554/realtime?id=0;aid=0;agent=onvif

    海康格式1(末尾1为通道号):rtsp://admin:admin@127.0.0.1:554/Streaming/Channels/1

    海康格式2(ch1为通道号):rtsp://admin:admin@127.0.0.1:554/h264/ch1/main/av_stream

    宇视格式1(video2为通道号):rtsp://admin:123456@127.0.0.1/media/video2

    英飞拓格式1(主码流):rtsp://infinova:infinova@127.0.0.1:554/1/h264major

    英飞拓格式2(子码流):rtsp://infinova:infinova@127.0.0.1:554/1/h264minor

    金三立(早期摄像机格式等同英飞拓):rtsp://127.0.0.1:554/1/h264major

    TP-Link(stream1主码流,stream2子码流):rtsp://127.0.0.1:554/stream1

    rtmp推流配置

    • 性能指标

    rtmp推流vlc播放延迟5秒,flv.js延迟小但会出现播放一段时间变慢问题,adobe flash player延迟在2~3秒。

    本服务rtmp采用大时间戳同一路视频可连续几周长时间推流,网络中断会自动重连;应用于农场、工地监控、野外等非实时性要求特别高的监控场景效果还是很好的。

    • 推流示意图


    • 假设RtspLiveServer部署在192.168.1.100:10000与nginx-rtmp服务器部署在同一网络环境且可以相互访问,只需要修改nginx.conf 文件中的rtmp服务配置节点如下(一般位于conf文件夹下)
    rtmp{
     server{
      listen 1935;
      chunk_size 4096;
      netcall_timeout 3s;
      application live {
        live on;
        on_play http://192.168.1.100:10000/api/rtmp/play;
        on_play_done http://192.168.1.100:10000/api/rtmp/done; 
        on_update http://192.168.1.100:10000/api/rtmp/notice;
        drop_idle_publisher 5s;#drop no video/audio publisher
        notify_update_timeout 10s;
      }
     }
    }
    • 配置完成后重启nginx-rtmp服务器,打开vlc或其它支持播放rtmp的播放器输入rtmp地址点击播放(视频延迟5秒,支持长时间连续推流)。
    • 假如RtspLiveServer与nginx-rtmp部署在不同的网络环境,则需要RtspLiveCluster集群服务(假设部署192.168.1.100:20000)进行指令中转通知RtspLiveServer向nginx-rtmp推流。此情况一般用于将局域网的视频推流至公网服务器场景。RtspLiveServer中推流集群配置示例如下


    rtmp{
     server{
      listen 1935;
      chunk_size 4096;
      netcall_timeout 3s;
      application live {
        live on;
        on_play http://192.168.1.100:20000/api/rtmp/play;
        on_play_done http://192.168.1.100:20000/api/rtmp/done; 
        on_update http://192.168.1.100:20000/api/rtmp/notice;
        drop_idle_publisher 5s;#drop no video/audio publisher
        notify_update_timeout 10s;
      }
     }
    }

    预览视频

      假设本机ip 192.168.1.2 :

      rtsp播放地址格式如下

      rtsp://192.168.1.2:554/通道名称

      支持 vlc工具预览视频

      测试海康,大华摄像机支持webrtc-streamer开源项目Web无插件视频直播,详细参见webrtc-streamer

      rtmp播放地址格式如下

      rtmp://192.168.1.2:1935/live/通道名称

      http-flv播放地址格式如下

      http://192.168.1.2:7070/live?port=1935&app=live&stream=通道名称

      启用hls播放地址格式如下

      http://192.168.1.2:7070/live/通道名称.m3u8

      注意事项

        公网上直播视频时为达到最佳效果确保机房光纤在电信主干网上,部分网络环境会造成在手机移动网络播放不了

        部署服务时尽量减少路由器多次跳转,会增加不稳定因素

        在手机端只是查看监控视频类建议采用子码流

        产品只挑选部分品牌某些型号进行测试,品牌涉及海康/大华/宇视/英飞拓,其他品牌请自行测试

        大部分品牌摄像机rtsp url会不定期更新,请使用onvif相关工具获取最新格式,否则可能会造成无法获取视频流

        API接口

        示例假设部署环境本机Ip:192.168.1.100 ,http:10000

        下述接口若返回401错误,请先进行登录验证,会话默认保持20分钟

          添加视频通道:http://192.168.1.100:10000/api/save
          请求方法:POST
          请求参数:rtsp_url=urlencode(?)&rtsp_name=?
          参数说明:rtsp_url=rtsp地址,rtsp_name=通道名称,rtsp_name必须唯一

          删除视频通道:http://192.168.1.100:10000/api/delete
          请求方法:POST
          请求参数:rtsp_name=?
          参数说明:rtsp_name=通道名称

          查询视频通道:http://192.168.1.100:10000/api/search
          请求方法:Get
          请求参数(可选):limit=?&page=?&rtsp_url=?&rtsp_name=?
          参数说明:limit=每页记录数,page=页码(从1开始),rtsp_url=rtsp地址,rtsp_name=通道名称, 查询接口支持分页当limit>0时执行分页

          添加视频认证:http://192.168.1.100:10000/api/auth_save
          请求方法:POST
          请求参数:user=?&pwd=?
          参数说明:user=用户名,pwd=密码

          删除视频认证:http://192.168.1.100:10000/api/auth_delete
          请求方法:POST
          请求参数:user=?
          参数说明:user=用户名

          查询视频认证:http://192.168.1.100:10000/api/auth_search
          请求方法:Get
          请求参数(可选):limit=?&page=?&user=?
          参数说明:limit=每页记录数,page=页码(从1开始),user=用户名 查询接口支持分页当limit>0时执行分页

          客户端统计:http://192.168.1.100:10000/api/monitor
          请求方法:Get
          请求参数(可选):limit=?&page=?&rtsp_url=?&rtsp_name=?
          参数说明:limit=每页记录数,page=页码(从1开始),rtsp_url=rtsp地址,rtsp_name=通道名称, 查询接口支持分页当limit>0时执行分页