草庐IT

Rtsp服务搭建(Ffmpeg+Node.js+jsmpeg网络视频服务器)

wtnu200 2023-05-09 原文

当前有几个海康监控,想接入MES系统,去他们官方网站下载了两个web的sdk包,分别为控件开发包和无插件开发包,结果很坑,控件,要求为ie浏览器才能用,太局限了。而无插件,则要求浏览器版本,我看chrome那版本,牙都掉了,版本旧得在网上找不到。不知道其它人是怎么实现在,反正折腾了一天都没发现在web他们给的开发包能接在MES里。后面在监控管理端看到有RTSP服务,我们可以使用Ffmpeg+jsmpeg把RTSP转成Web前面可播放的hls。

具体操作流程

一、下载需要的软件(注意按对应版本下载)

ffmpeg4.0 下载地址
jsmpeg 下载地址
nodejs v8 下载地址

二、安装软件和配置

1. ffmpeg

安装完成后,给ffmpeg配置环境变量:在path最后追加ffmpeg的bin目录路径:[你的安装路径]\ffmpeg4\bin

2. jsmpeg

绿色,下载解压就行

3. nodejs
安装nodejs后,(如果安装有2053错误,使用cmd[管理员运行]安装:msiexec /package node-v8.exe)以管理员运行cmd,使用命令:

npm init(初始化node),注意,此步骤会生成package.json文件,默认放在cmd当前执行路径,比如cmd是这样的:则文件是存放在C:\Users\Administrator,后面的操作要一直保持在此路径。

如果你不想更改存放路径,最好别乱cd。
npm install ws(安装websocket,如果提示:No repository field,则在用户目录(C:\Users\Administrator)的package.json下添加配置: "private": true)
如有提示,先安装:npm install utf-8-validate@^5.0.2 和 npm install bufferutil@^4.0.1
配置环境变量,在path后追加C:\Users\Administrator\node_modules

 

三、以上配置完成后,我们就可以运行软件了

1. 找到你监控的rtsp地址格式如下

rtsp://admin:[你的监控密码]@[监控ip]:554/Streaming/Channels/01?transportmode=unicast

要验证地址对不对,可以下载个视频播放器 PotPlayer,安装后点击左上的 PotPlayer->打开->打开链接,然后把上面的rtsp地址填进去,确定后,如果地址没有问题,这里我可就可以看到监控画面,如果没有,那说明rtsp地址有问题,需要再确认。

2. 运行jsmpeg

以管理员身份运行cmd,分别输入下列命令

cd /d [你的jsmpeg路径]

node websocket-relay.js supersecret 7081 7082

运行两个命令后,此cmd不能关闭。

3. 运行ffmpeg

以管理员身份运行cmd,输入下列命令

ffmpeg -rtsp_transport tcp -i “rtsp://admin:[你的监控密码]@[你的监控ip]:554/Streaming/Channels/01?transportmode=unicast” -q 0 -f mpegts -codec:v mpeg1video -s 655x460 http://127.0.0.1:7081/supersecret

回车后,此时会看到数据变化,同时jsmpeg的cmd窗体里面提示连接,则表示成功。

四、Web播放实时监控

建个html,在body里写上代码

<div style=" height: 500px; line-height: 500px; text-align: center; border: 1px solid gray; color: white; overflow: hidden;background-color:black;">
                        <canvas id="video-canvas" style="width: 80%; vertical-align: middle;"></canvas>
</div>
<script src="~/Content/jsmpeg/jsmpeg.min.js"></script>   
<script type="text/javascript">
    var canvas = document.getElementById('video-canvas');
    var url = 'ws://192.168.0.51:7082/';
    var player = new JSMpeg.Player(url, { canvas: canvas });
</script>

保存后打开,可以看到监控画面。

有关Rtsp服务搭建(Ffmpeg+Node.js+jsmpeg网络视频服务器)的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  6. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  7. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  8. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  9. ruby - 无法在 Ruby 中将 ffmpeg 作为子进程运行 - 2

    我正在尝试使用以下代码通过将ffmpeg实用程序作为子进程运行并获取其输出并解析它来确定视频分辨率:IO.popen'ffmpeg-i'+path_to_filedo|ffmpegIO|#myparsegoeshereend...但是ffmpeg输出仍然连接到标准输出并且ffmepgIO.readlines是空的。ffmpeg实用程序是否需要一些特殊处理?或者还有其他方法可以获得ffmpeg输出吗?我在WinXP和FedoraLinux下测试了这段代码-结果是一样的。 最佳答案 要跟进mouviciel的评论,您需要使用类似pope

  10. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

随机推荐