前言
目前做的项目,需要Web端显示实时视频数据。本次项目使用的是海康威视的摄像头进行实时监控。
硬件:海康威视的摄像头
软件:video.js、nginx、vlc
参考:https://blog.csdn.net/qq_36720088/article/details/82893924?utm_source=distribute.pc_relevant.none-task
一、实时视频
1、前期工作
海康摄像头支持四种取流协议,其中在web上能利用的为三种协议:rtsp、rtmp、hls。rtsp在web上显示起来比较复杂,这里我们主要介绍rtmp、hls。
RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频直播等领域逐渐活跃起来,RTMP作为业内广泛使用的协议也重新被相关开发者重视起来。
HLS:HTTP Live Streaming,是由苹果公司提出的基于HTT的流媒体网络传输协议。他的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从愈多不同的备用源中以不同的速率下载同样的资源,允许流媒体绘画适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含源数据的extended M3U(m3u8)playlist文件,用于寻找可用的媒体流。
rtmp流属于flv格式只能用flash播放,故需要flash插件支持;但现在flash将被废除,在2020年底,chrome、FireFox等主流浏览器都不支持flash,虽然flash在中国有特供版,但终究不是长久之计。所以我们考虑用hls。其实各大视频现在都采用了hls,并且还使用了blob加密。事实证明,hls比flash安全稳定多了,果然抵不过苹果的真香定律。
2、具体实现
第一步:
1、先下载海康威视的设备网络SDK,根据自己的运行环境选择合适版本。
我下载的是CH-HCNetSDKV6.1.4.42_build20200527_win64,所以解压后是这样的。
可以参考demo示例,编写自己的程序。
2、修改HCNetSDK类中的HCNetSDK地址,改为自己项目的HCNetSDK.dll地址。可以用一个方法来获取项目的HCNetSDK.dll。
/**
* 获取项目webapp目录
* @return
*/
public static String getWebPath()