智能安全帽-4G记录仪等移动视频图传系统里面的RTMP流输出及smarteye作为RTMP server的实现机制

发布时间: 2021-11-02 11:10:25

智能安全帽、4G记录仪、AI智能布控球等移动视频图传系统里面的RTMP流输出,可以有两种实现方式:

1)由移动视频终端:智能安全帽、4G执法记录仪、智能布控球等设备里面直接输出RTMP,推流到指定的IP地址

2) 另外一种机制,是从smarteye server转码输出RTMP流,但这个RTMP的URL不是固定不变的

解释下如何获取一个在线设备的RTMP直播URL,

首先,这个RTMP URL不是静态不变的,它是一个动态的URL第一步,要在客户端主动取流(手工鼠标双击打开设备的视频或者代码里面去仿真实现),这样,系统会创建一个session,动态分配sessionID,那么这个RTMP URL就是根据PU_ID,sessionID和timeStamp以及一个随机数构成,rtmp://smarteye_server_IP:1935/bvapp/PU_ID+sessionID+channelNO+yyyymmdd_hhmmss+a random number,例如下面的:rtmp://188.121.2.252:1935/bvapp/PU_29238465_00_20171128_124236_7623

http://bbs.besovideo.com:8067/forum.php?mod=viewthread&tid=279&highlight=RTMP

基于WebSdk获取SmartEye平台设备rtmp拉流地址 流程简述 , http://bbs.besovideo.com:8067/forum.php?mod=viewthread&tid=2046

流程简述, 请参考文档      https://61.191.27.18:9443/doc/
1、加载jSW库
<script type="text/javascript" src="../js/jsw.js"></script>


2、以非插件方式初始化jSW库
     var initParams = {
            url: http://61.191.27.18:8081, // bv_nginx.exe服务器地址,用于指示库websocket 服务器地址
            calltype: jSW.CallProtoType.HTTP, // AUTO: IE优先使用OCX, 如果希望IE仍然使用HTTP通信, 请使用jSW.CallProtoType.HTTP
            oninit: oninitcall
            //jSW.swInit为异步接口,oninitcall是回调处理函数    
            //jSW.swInit函数返回0,并且回调通知成功,库初始化完成
        }
        var rc = jSW.swInit(initParams)
        if(rc != jSW.RcCode.RC_CODE_S_OK){
        //初始化失败
        }

3、jSW初始化成功的回调之后,进行登录。
     构建Session,在Session的onopen事件中,登录SmartEye平台。向Sesssion注册login事件处理函数,用以处理登录结果。
     var session = null
     function oninitcall(rc){
         if(rc == jSW.RcCode.RC_CODE_S_OK){
         session = new jSW.SWSession({
            server: 127.0.0.1, // 如果是jSW.CallProtoType.HTTP方式,这里需要填写具体的IP
            port: 9701,
            onopen: function (sess) {
                sess.swLogin({
                    user: admin,
                    password: 123456
                })
            },
            onclose: function(){
                document.getElementById('loginResult').innerText = "与服务器的命令传输 websocket 通道 关闭"
            }
        });

        // 注册事件的回调函数
        session.swAddCallBack('login', sessionLoginCallback);
        session.swAddCallBack('logout', sessionCallback);
        session.swAddCallBack('pulist', OnPulistCallback)
         }
     }

4、登录成功获取设备列表。
     获取设备列表有两种方式,jSW自动获取全部设备列表或者调用者手动获取设备列表。
      function  sessionLoginCallback(sender, event, json){
           if (json.code == jSW.RcCode.RC_CODE_S_OK) {
                  //登录成功
           } else {
                 //登录失败
           }

      }

      function OnPulistCallback(sender, event, json){
               //获得设备列表成功, sender是SWSession对象
               sender._arr_pu  //设备数组
               sender._arr_pu_online  //在线设备数组
      } 

5、获取指定设备对象,并以rtmp不播放的方式打开视频
      获得设备列表成功之后,就可以通过设备对象的视频通道  来打开视频了。
      如以var puid = PU_55AA00
      var pu = session.swGetPu(puid)
      if(pu){
          //pu._arr_channel  音视频通道数组
          pu._arr_channel[0].swOpenEx({
                  div:  null,
                  prototype: "rtmp",
                  media:  10,
                  callback: OnOpenRtmpHasResult,
                   tag: pu._arr_channel[0]
          })
      }




6、以打开rtmp打开视频回调成功,获取播放地址
                function  OnOpenRtmpHasResult(options,  response, dialogHandle){
                        if(response.emms.code == jSW.RcCode.RC_CODE_S_OK){
                               //以RTMP获取视频流打开成功,可以获取rtmp视频拉流地址了
                               var aimPu = options.tag
                               var urlObj = aimPu.swGetUrl()  //获取rtmp 拉流地址
                               console.log(urlObj)
                        }
                  }

 

smarteye server作为RTMP server,支持外部RTMP流接入

这是老版本server-D软件配置,它需要一个前置协议转换插件,详见上图。新版本的server-E的相关设置,参见文档:移动视频类设备&平台国标GB28181输入/输出GB28181平台对接、RTSP/RTMP输入&输出, https://www.besovideo.com/detail?t=1&i=229

一.Rtmp服务器

1.   安装smarteye server ,web服务自带rtmp服务器,默认端口1935

 

2.   使用rtmp需要修改下nginx配置文件

C:\Program Files (x86)\besovideo\Server\webapi_nginx\conf


 修改完成后重启web服务;

Rtmp推流地址 rtmp://IP:1935/bvapp/XXXX

 二:rtmp插件的使用

1.   配置参数rtmpgateway.json

 

2.   运行插件rtmpgateway.exe

以管理员身份运行后,第一次使用需要认证,将auth code提供给销售即可

 

多源统一视频融合通信可视指挥调度平台VMS/smarteye概述,https://www.besovideo.com/detail?t=1&i=240