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