热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iNeuOS工业互联平台,.NETCore开发的视频服务组件iNeuVideo,RTSP转WebSocket

目录1.概述22.将来集成到iNeuOS平台演示33.iNeuVideo结构34.iNeuVideo部署及应用35.HTML5

目       录

1.      概述... 2

2.      将来集成到iNeuOS平台演示... 3

3.      iNeuVideo结构... 3

4.      iNeuVideo部署及应用... 3

5.      HTML5终端视频监测代码... 5

6.      基于数据库应用使用效果... 6


 1.   概述

     iNeuVideo是视频服务组件,主要负责把RTSP的视频流数据转码成WebSocket协议的视频流数据,为终端提供视频监测服务。iNeuVideo后期会集成到iNeuOS工业互联网平台的Web组态(iNeuView)上,拖动组件快速构建视频监测。结合物联网服务(iNeuKernel)采集设备或传感器的数据,形成视频数据+设备数据的整体监测服务。参见《iNeuKernel(物联网核心组件)远程控制标准化设计与实现》,可以实现远程控制。

     iNeuVideo现在仅支持RTSP->WebSocket,现在主流摄像头厂家(海康威视等)基本支持RTSP协议,可以很方便的接入视频数据流。后期集成RTSP->RTMP和RTSP->HTTP的协议。基于iNeuVideo服务,其他公司也可以形成自己的产品,后面应用会具体介绍。

     应用效果,如下图:

         针对视频监测几个协议概念:RTSP、RTMP、HTTP和WebSocket等进行简单介绍:

    (1)RSTP、RTMP、HTTP协议共同点,他们都是应用层协议。理论上这三种协议都可以做直播和点播,但直播一般用RTSP和RTMP点播用HTTP。
    (2)RSTP、RTMP、HTTP协议区别

             HTTP将数据作为文件处理,所以HTTP不是流媒体协议,RTMP和RTSP是流媒体协议。

             RTMP是Adobe的私有协议,未完全公开,RTSP和HTTP是共有协议。
             RTMP一般传输flv,f4v格式流,RTSP传输ts,MP4格式流,HTTP没有特定的流。

             RTSP一般需要2-3个通道,数据和命令通道分开,RTMP和HTTP在一个通道上传输命令和数据。

             WebSocket协议,基于HTML5提供的一种在单个 TCP 连接上进行全双工通讯的协议。针对终端与服务端交互应用较广泛。

2.   将来集成到iNeuOS平台演示

     在线演示:http://demo.ineuos.net  (注:服务器比较慢,请耐心等待。自已注册用户,体验系统功能)

     视频演示:http://www.ineuos.net/video/iNeuOS%20and%20app.mp4

     驱动开发:http://www.ineuos.net/index.php/products/ineukernel-15.html (v2.1版本)

     手机APP:http://demo.ineuos.net/app/ineuos_app.apk

3.   iNeuVideo结构

     视频源一般为RTSP协议,由iNeuVideo转码服务拉取视频流数据,经过代码转发服务向WebSocket连接的终端广播数据,HTML5终端进行数据展示。结构示意,如下图:

4.   iNeuVideo部署及应用

      iNeuVideo基于.NETCore 3.1版本开发,.NETCore 3.1的安装部署参见:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install。

      iNeuVideo下载:百度网盘下载,包括服务、数据库脚本和HTML5脚本。这是绿化版本的软件,直接下载就可以应用,应用有两种模式:基于命令行和基于数据库。

   (1)基于命令行的应用

     首先使用管理员模式打开命令行,进入iNeuVideo目录,第一次运行的时候需要执行:dotnet iNeuVideoTool.dll,检测和配置当前系统。

     其次输入参数执行:dotnet iNeuVideo.dll rtsp://192.168.101.1:18554/stream1,进行视频转换,视频转换后的WebSocket地址对应:ws:// 192.168.101.1:9091/ineuos/live1,live后边的编号自动增加。如下图:

       (2)基于数据库的应用

       其他公司可以使用iNeuVideo服务组件,基于数据库的应用形成自己的产品,前台业务系统操作数据库可以完成对视频流拉取、转码、推送等全流程操作。

       mysql数据库只有一个表:Video,只需要对这个表进行操作,表结构如下:

DROP TABLE IF EXISTS `video`;
CREATE TABLE `video`  (
  `Id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'主键\',
  `Key` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'http://*.*/ineuos/live1,live1就是key.\',
  `VideoSource` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'视频流源地址,一般为rtsp协议。\',
  `VideoSourceProtocol` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'现在支持,包括:rtsp。\',
  `VideoDest` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'视频流目标地址,从VideoSource转码到VideoDest,不需要设置,系统自动生成。\',
  `VideoDestProtocol` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT \'现在支持,包括:websocket。\',
  PRIMARY KEY (`Id`) USING BTREE,
  UNIQUE INDEX `Key`(`Key`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

       在iNeuVideo\iNeuKernel\ SourceConfig.cfg文件下配置数据库连接信息

         以管理员的模式运行【start-win.bat】批处理文件,直接读取数据库的信息进行视频流的操作,不需要其他的操作。

5.   HTML5终端视频监测代码

      基于MPEG标准的视频编码进行解码,底层使用canvas进行显示,也有其他的JS组件可以使用。代码如下:

DOCTYPE html>
<html>
<head>
       <title>JSMpeg Stream Clienttitle>
       <style type="text/css">
              html, body {text-align: center;}
       style>
head>
<body>
       <canvas id="video-canvas">canvas>
       <canvas id="video-canvas1">canvas>
       <script type="text/Javascript" src="jsmpeg.min.js">script>
       <script type="text/Javascript">
              var canvas = document.getElementById(\'video-canvas\');
              var url = \'ws://127.0.0.1:9091/ineuos/live1\';
              var player = new JSMpeg.Player(url, {canvas: canvas});

              var canvas1 = document.getElementById(\'video-canvas1\');
              var url1 = \'ws://127.0.0.1:9091/ineuos/live2\';
              var player1 = new JSMpeg.Player(url1, {canvas: canvas1});
       script>
body>
html>

6.   基于数据库应用使用效果


文章:

 《.NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏》

 《[视频演示].NET Core开发的iNeuOS物联网平台,实现从设备&PLC、云平台、移动APP数据链路闭环 》

 《.NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案》

 《.NET Core开发的iNeuOS物联网平台部署在Ubuntu操作系统,无缝跨平台》

 《iNeuOS 物联网云操作系统2.0发布,集成设备容器、视图建模、机器学习三大模块 》

 《iNeuOS云操作系统,.NET Core全系打造 》


 物联网&大数据技术 QQ群:54256083 

 物联网&大数据合作 QQ群:727664080

 网站:http://www.ineuos.net

 联系QQ:504547114

 合作微信:wxzz0151


推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了关于汉庭酒店价格的知识点,提供了一篇由congdi7904投稿的技术文章,希望能帮到读者解决相关技术问题。同时还提供了汉庭酒店的官方链接和转载信息。请注意,引用汉庭酒店需遵循CC 4.0 BY-SA版权协议。 ... [详细]
  • 在开发app时,使用了butterknife后,在androidStudio打包apk时可能会遇到报错。为了解决这个问题,可以通过打开proguard-rules.pro文件进行代码混淆来解决。本文介绍了具体的混淆代码和方法。 ... [详细]
  • struts2重点——ValueStack和OGNL
    一、值栈(ValueStack)1.实现类:OGNLValueStack2.对象栈:CompoundRoot( ... [详细]
author-avatar
mobiledu2402852357
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有