nodejs搭建wss服务,resp取流解析海康监控视频在浏览器上播放(200W)

首先先来看效果

摄像头是rtsp格式的,h5原生不支持这种格式,rtsp转rtmp,不过rtmp依赖falsh的支持,但是在chrome已经默认禁用、未来也会淘汰
所以最好方案是rtsp转化成一种类似http协议的方式,能够直接被h5识别
最终方案是nodejs搭建wss流 通过webSocket发送MPEG js解析MPEG不断绘制canvas
其中 Ffmpeg 负责解码 ,jsmpeg负责解码后逻辑,最终html连接wss浏览器播放

教程介绍
准备工作(完整源码会上传我的github,创作不易请顺手给个star,连接放到最后)

1.  Ffmpeg (FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的,FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等)
2.  Nodejs websocket WSS服务器 (nodejs有多强大不用介绍了,大前端必备)
3.  jsmpeg 运行解析程序  (MPEG(Moving Picture Experts Group,动态图像专家组)是ISO(International Standardization Organization,国际标准化组织)与IEC(International Electrotechnical Commission,国际电工委员会)于1988年成立的专门针对运动图像和语音压缩制定国际标准的组织,通过JS WEBGL进行对mpeg的解析)
4.  start.bat 启动程序 (基础bat脚本命令)

首先借助VLC Media Player 工具获取视频状态以及验证resp流是否能够播放

 **rtsp取流格式为:rtsp://用户名:密码@局域网:端口号/海康视频类型(h开头)/窗口/sub/av_stream** 


 **示例:rtsp://xxx:xxx@192.168.xxx.xxx:xxx/h264/ch1/sub/av_stream** 

                                               教程开始
安装完Ffmpeg之后配置你的环境变量 

这里以windows为例子

把ffmpeg下的bin配置到系统path变量里面,根据自己不同的路径配置

nodejs环境变量配置这里就不做演示

第一步运行jsmpeg  并且安装依赖  npm install --save ws

安装成功后启动wss服务 

8011是ffmpeg推送端口  

8012是webSocket wss端口

2个必须一起启动,其中断开视频也会断开,启动顺序 8012 => 8011

node websocket-relay.js supersecret 8011 8012

 ffmpeg -i "rtsp://admin:hxzh2019@192.168.11.85:554/h264/ch1/sub/av_stream" -q 0 -f mpegts -codec:v mpeg1video -s 1000x600 http://127.0.0.1:8011/supersecret/live1

ffmpeg 命令分别说明: 原始视频  导出尺寸  导出码率 导出帧频 和分辨率

为 JSMpeg 编码视频/音频
JSMpeg 仅支持使用 MPEG1 视频编解码器和 MP2 音频编解码器播放 MPEG-TS 容器。视频解码器不能正确处理 B 帧(尽管似乎没有现代编码器默认使用这些),并且视频的宽度必须是 2 的倍数。

您可以像这样使用ffmpeg对合适的视频进行编码:

ffmpeg -i in.mp4 -f mpegts -codec:v mpeg1video -codec:a mp2 -b 0 out.ts
您还可以控制视频大小 ( -s)、帧率 ( -r)、视频比特率 ( -b:v)、音频比特率 ( -b:a)、音频通道数 ( -ac)、采样率 ( -ar) 等等。有关详细信息,请参阅 ffmpeg 文档。

综合示例:

ffmpeg -i in.mp4 -f mpegts \
    -codec:v mpeg1video -s 960x540 -b:v 1500k -r 30 -bf 0 \
    -编解码器:a mp2 -ar 44100 -ac 1 -b:a 128k \
    out.ts
相关参数请参看https://github.com/phoboslab/jsmpeg 文档

wss启动成功后 

 ffmpeg启动成功后

 双击start.bat脚本命令

@echo off
SETLOCAL EnableExtensions
set EXE=nginx_sm_ws_rtsp.exe
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
echo Now, running...
cd .\nginx\
start "" ".\%EXE%"
goto FINISH
:FOUND
echo Already running
:FINISH

rem timeout /t 1 /nobreak > NUL

start "" http://127.0.0.1:8081/

最终查看效果

原文链接:nodejs搭建wss服务,resp取流解析海康监控视频在浏览器上播放(200W)_Carrmans的博客-CSDN博客

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值