使用H5Streamer轻松搭建视频监控项目

一. 前言

最近刚好在做视频监控项目的技术前探,发现有个非常强大的开源工具—H5Streamer(以下简称H5S) 。一个免费开源的流媒体服务器,功能非常强大,系统部署也非常简单,但是网上相关的资料并不多,所以打算和大家分享一下使用经验,希望能对大家有所帮助。

二. 概述

官网:零视技术
一个简单的视频监控项目主要由三部分组成:视频流采集端(推流)、数据处理端(转码)、视频播放端(拉流),在这个过程中,我们有很多的难点需要去解决,比如:采集不同的视频源、视频流转码、适配不同的播放客户端(无插件播放)。如果这些难题全部都由开发者自己编写程序去解决的话,对于整个项目的进度推进可能会事倍功半。采用开源的视频服务器辅助项目是个不错的选择。
H5S 有如下优点

  1. 多运行平台支持 ,Windows 7/8/10/2008/2012/2016、CentOS 7、Ubuntu 16.04;
  2. 多视频源支持,MP4/AVI文件、RTSP/RTMP;
  3. 作为视频监控的标准 ONVIF,H5S 也做了支持,并且允许用户 RESTFUL 接口控制 ONVIF 云台;
  4. 支持海康 NVR SDK/大华 NVR SDK/天地伟业 SDK 接入,支持国标GB28181,支持海康 ISC视频接入;
  5. 国产CPU支持,包括鲲鹏 920飞腾在内的 ARM v8 架构 CPU, 同时兼容龙芯 3 号系列 CPU,大写的爱国嘛;
  6. 支持多种直播协议,RTSP/RTMP/HLS、WebSocket/WebRTC;
  7. 支持集群、级联模式
  8. 支持RTMP推流
  9. 支持视频加密,所有视频数据均采用非对称加密。

三. 正文

1. 环境部署

这里以Windows系统为例,Linux的部署也是大同小异(参考官方说明文档),目前程序最新版本是R11,本文是基于R10.5
下载对应系统版本的压缩包并解压。注意:路径不要带有中文或者空格
https://linkingvision.cn/download/h5stream/

安装VC++运行库(08、10、12、13、19)
传送门:微软常用运行库合集 v2019.10.19(32&64位).exe 提取码: ft9w

好了,环境部署到此就完成了,非常简单。

2. 参数配置

第一种方式是从控制台添加视频源
点击左边的设置按钮,进入参数设置页面:
视频源
在这里插入图片描述
H5_STREAM:RTSP/RTMP视频源;
H5_ONVIF:ONVIF协议设备,支持该协议的设备可以控制云台;
H5_FILE:MP4/AVI 文件视频源;
设备SDK:通过调用官方的SDK库连接设备。

特别提示:每个视频源对应生成唯一的 token,程序根据 token 来获取视频流。这里要注意通过SDK添加视频源生成的 token 是有分支的,因为NVR可以连接多个摄像头。点击全部可以查看所有token:
在这里插入图片描述
这里着重讲第二种方式,通过配置文件添加视频源
文件源
在配置文件(/conf/h5ss.conf)中修改 nType 为 H5_FILE, strUrl 视频文件路径
h5ssample.mp4
在这里插入图片描述
RTSP/RTMP源
在配置文件中把 nType 修改为 H5_STREAM, 在 strUrl 部分填入 RTSP/RTMP 地址,需要
认证的视频源,在 strUser 和 strPasswd 中填入对应的用户名密码 。
在这里插入图片描述
ONVIF源
ONVIF 配置选项比较多,但是大部分都可以采用默认配置,可以只关注下图中标注的部分。
nType 修改为 H5_ONVIF,配置用户名和密码,ONIVF 设备地址和端口即可 。
在这里插入图片描述
SDK NVR源
以海康的设备为例,可以通过 device 配置选项,使用海康 SDK 连接设备,需要在 device 节点中配
置,nType 配置为 H5_DEV_HIK。其他配置参考画红线部分,默认 SDK 端口为 8000。
在这里插入图片描述

3. 运行程序

第一种是手动运行根目录的h5ss.bat(Linux 用./h5ss.sh) ,我们用编辑器打开h5ss.bat看一下:
在这里插入图片描述
其实就是运行主程序,但是后面我们可以利用这个批处理文件进行一些操作。
在这里插入图片描述
如果没出现报错,说明程序已经运行成功。

第二种是配置为服务,开机自动启动,Windows 可以直接运行 regservice.bat 安装服务或者运行 unregservice.bat 取消安装服务,需要使用管理员打开 cmd 命令行运行该脚本

H5S 正常运行后可以打开控制台主页,会出现如下的界面,表示已经运行成功。地址如下:http://localhost:8080/ (localhost用实际的 IP 地址替换),也可以用HTTPS访问(端口改为8443)。
在这里插入图片描述

4. 播放视频

1. 通过控制台预览视频,实际项目中一般不会这样使用,可以作为调试用。
在这里插入图片描述
如果接入的是ONVIF协议的设备,支持操作云台等
在这里插入图片描述
2. 调用JS库通过网页播放视频。
在浏览器输入网址:http://你的IP:8080/ws.html(WebSocket 播放协议)
目录www中有不同播放协议的demo网页。
在这里插入图片描述
3. 用播放器直接拉流播放视频
比如用VLC播放RTMP视频流:
在这里插入图片描述

四. 总结

H5Streamer 平台从部署到运行非常简单,过程中没有涉及太难的技术操作。此文章只作简单描述,官方文档有非常详细的说明。关于平台的使用建议,主要利用平台的视频转码功能,然后根据API接口定制自己的Console控制台,解决终端页面的播放兼容性和体验等问题。网上还有其它开源的流媒体视频方案:live555,EasyDarwin,EasyNVR,FFmpeg,LiveQing等。
H5Stramer说明文档:链接: https://pan.baidu.com/s/1bICEY-eSrdEIahHUhFdlYQ 提取码: sjig

五. 额外问题FAQ

针对官方说明文档中的一些操作可能不太容易理解,以及使用过程中遇到的一些问题,进行简单的解释说明。
官方问答论坛:https://lsc.linkingvision.com/latest

1. 程序运行一段时间后自动停止?

没有申请license的程序运行一小时后会自动停止,可以通过发邮件到官方申请。
如果懒得去申请,这里也可以自己编写一个定时结束程序并重启的脚本 h5ss.bat

@echo off
::不显示打印内容
set INTERVAL=3600
::设置时间间隔
:Again
::goto跳转标志
echo start server
taskkill /f /t /im h5ss.exe
::结束进程
start h5ss.exe
::启动进程
timeout %INTERVAL%
::时间达到
taskkill /f /t /im h5ss.exe
ping -n 5 127.0.0.1>nul
::利用ping来进行延时,ping 一次为一秒
goto Again
::代码跳转

2. 控制台查看设备状态显示离线?

判断在线的标志是码流,没有播放的时候显示是离线的,播放的时候就是在线的了,ONVIF协议接入的状态是实时的。

3. WebRTC无法播放?

首先排查客户端是否支持WebRTC 直播协议,其次再查看部署端是否做了NAT映射,内网环境WebRTC外部访问非常麻烦,内网穿透或全端口映射都不太可行,因为WebRTC的端口是不固定的,建议是把服务器部署在公网环境,并且要在配置文件中打开WebRTC的Cloud模式,因为公网 IP 都是映射出来的,需要设置 bCloudMode 和对应的公网 IP。

4. HLS播放延迟太高或一直缓冲?

HLS 的视频源建议是单独使用一个token,同时根据实际情况调整TS切片数量和持续时间。

5. VLC串流的RTSP视频流无法在H5Streamer播放?

VLC串流的RTSP视频流不完整,建议用真实的RTSP视频流。

6. RTMP推流使用问题?

先在控制台生成RTMP推流地址,然后用推流客户端将视频流推到此地址,最后就可以RTMP拉流播放了。

7. 如何实现打开页面自动播放视频?

这篇文章有详细说明 https://blog.csdn.net/video_dc/article/details/89542858

8. SDK视频源无法播放?

检查HTML代码中填写的token是否正确,通过SDK连接一般是一个token多路连接,尝试将token改写为token–1的形式

9. 关于云推流的使用问题?

本地运行H5Streamer服务,打开云推流模式推流到云端的H5Streamer服务,实现外网访问。

10. 播放延迟过大?

测试的版本速度没有限制,默认是64路。可能的原因:

  1. 网络带宽不够
  2. 视频流码率太高,可以尝试用副码流

六. 附录

1. 浏览器兼容技术

浏览器兼容技术

2. 内网直播架构图

内网直播架构图

3. 标准协议对应的URL规则

所有通过配置文件和 API 加入到 h5s 的 src,除了支持 js 视频播放库外,还可以用 RTSP RTMP
FLV HLS 客户端直接访问,如下是以默认端口配置,并且存在 token1 的 src 的对应的 url。

RTSP: rtsp://ip:8554/live/token1
RTMP: rtmp://ip:8935/live/token1
FLV: http://ip:8890/live/token1.flv
HLS: http://ip:8080/hls/v1/token1/hls.m3u8

4. 我的测试地址

链接: https://pan.baidu.com/s/1H20aDHFrJhkkxp70W3ifhg
提取码请私信

3. Chrome HLS播放插件

https://pan.baidu.com/s/1U2tMIofyLgTO9BOGHA9Dkw 提取码: 6ctd

如有不明白的地方,欢迎与我联系,共同探讨。

免责声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值