文章目录
- 海康威视摄像机和录像机的监控与回放
- 1、海康威视监控设备简介
- 1.1、摄像机二次开发
- 1.1.1:协议选择
- 1.1.2:ffmpeg软件转流
- 2、各种流媒体协议介绍
- 2.1:流媒体协议介绍
- 2.1.1:RTSP (实时流传输协议)
- 2.1.2:RTMP (实时消息协议)
- 2.1.3:FLV(Flash Video)
- 2.1.4:HLS (HTTP Live Streaming)
- 2.2:流媒体协议选择与适用场景
- 2.3:推流和拉流
- 2.3.1:推流
- 2.3.2:拉流
海康威视摄像机和录像机的监控与回放
1、海康威视监控设备简介
由于我们项目需要引入监控,所有作为一个小白特此研究一下,将自己的实操分享发给大家。
海康的监控设备主要是摄像机搭配录像机NVR可以实现对监控的预览、回放、布放、告警等功能。
海康威视本身提供了非常多的方式可以进行查看监控和回放,比如iVMS-4200客户端、直接在浏览器输入摄像机的ip、萤石云。
海康威视设备搜索:搜素局域网内在线的摄像机设备
海康威视官网工具包
由于我们需要集成到自己的系统中所以需要二次开发后集成到自己的系统中
1.1、摄像机二次开发
主要流程是提供前端支持的协议进行播放,主要包括
1、协议选择
2、协议转换方案。
1.1.1:协议选择
想要二次开发在自己的系统浏览器页面实现监控的播放需要集成播放插件。随着IE、Chrome、Edge等主流浏览器对flash播放插件的停止更新。目前二次开发时应该要摒弃rtmp协议,采用HLS、HTTP-FLV、WebRTC、WebSocket来传输直播视频流。(各种流媒体协议介绍参考第二章节)
前端的Video控件标签支持HLS协议播放,经测试确实支持m3u8的播放。主要支持,几种视频格式m3u8,ogg, mp4, webm。MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件
协议选择:所以二开协议选择HLS协议
1.1.2:ffmpeg软件转流
2、各种流媒体协议介绍
常见的流媒体协议包括RTSP、RTMP、HLS、FLV等,它们在不同的应用场景中提供了各自的优势和特性。
2.1:流媒体协议介绍
2.1.1:RTSP (实时流传输协议)
RTSP(Real-Time Streaming Protocol)RTSP本身并不传送数据,而仅仅是是媒体播放器能控制多媒体流的传送,暂停播放,快进快退等。实际媒体数据的传输可以用RTP协议或其他专用协议。
RTSP以客户-服务器方式工作,它是一个应用层的多媒体播放控制协议。它和Http协议有些相似,但它不像Http,而是有状态的,而且可以在TCP和UDP上传输。
默认端口554。
2.1.2:RTMP (实时消息协议)
RTMP(Real-Time Messaging Protocol)是Adobe开发的用于实时视频和音频流传输的协议。它最初是为Flash Video应用设计的,但现已被广泛用于各种直播和点播服务,如YouTube、Twitch等
2.1.3:FLV(Flash Video)
格式是一种面向Flash平台的流媒体格式。它被广泛用于Adobe Flash Player的内容播放,尤其在早期的互联网视频应用中非常流行。
2.1.4:HLS (HTTP Live Streaming)
HLS(HTTP Live Streaming)是一种通过标准HTTP协议动态传输实时音视频流的技术。它将视频和音频分段并使用HTTP进行传输,使得在不同的网络环境下都能提供流畅、质量可适应的流媒体体验。
hls存储的是.ts格式的视频片段,可以使用http协议存储成m3u8格式的视频
m3u8文件是动态更新的,里面存放了各种的.ts格式的视频片段
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXTINF:10.000,
http://username:password@yourserver.com/path/to/segment0.ts
#EXTINF:10.000,
http://username:password@yourserver.com/path/to/segment1.ts
...
2.2:流媒体协议选择与适用场景
在选择流媒体协议时,应考虑以下几个因素:
传输速度与稳定性:对于实时性要求高的场景,RTMP与RTSP可能更为合适。
平台支持:如果目标是跨平台应用,HLS因其基于HTTP的优势而更受欢迎。
压缩效率:FLV在Flash平台上的使用历史中表现出色,尤其在对压缩效率有较高要求的场景下。
版权保护与防盗链:HLS提供较好的版权保护机制,适合版权内容的分发。
流媒体协议的实现与设置
开发工具:对于开发者来说,使用如Python、Node.js、Java等通用编程语言搭配专门的流媒体框架(如FFmpeg、Nginx的RTMP模块)可以快速搭建流媒体服务。
2.3:推流和拉流
2.3.1:推流
将直播的内容推送至服务器的过程,其实就是将现场的视频信号传到网络的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是糟糕。要想用于推流还必须把音视频数据使用传输协议进行封装,变成流数据。常用的流传输协议有 RTSP、RTMP、HLS 等,使用 RTMP 传输的延时通常在 1–3 秒,对于手机直播这种实时性要求非常高的场景,RTMP 也成为手机直播中最常用的流传输协议。最后通过一定的 QoS 算法将音视频流数据推送到网络端,并通过 CDN 进行分发。
2.3.2:拉流
拉流:指服务器已有直播内容,用指定地址进行拉取的过程。即是指服务器里面有流媒体视频文件,这些视频文件根据不同的网络协议类型(如 RTMP、RTSP、HTTP 等)被读取的过程,称之为拉流,我们日常观看视频和直播就是一个拉流的过程。