前端接入??低晹z像頭的3種方案示例代碼
方案選擇?
| 方案 | 適用場(chǎng)景 | 優(yōu)缺點(diǎn) |
|---|---|---|
| ?Web SDK(3.0)?? | 需要完整功能(PTZ控制、錄像回放) | 功能全,但需加載海康JS文件 |
| ?RTSP轉(zhuǎn)Web播放? | 低延遲實(shí)時(shí)監(jiān)控 | 需后端轉(zhuǎn)碼(如FFmpeg轉(zhuǎn)HLS) |
| ?HTTP API? | 簡(jiǎn)單截圖或設(shè)備管理 | 直接調(diào)用REST接口 |
方案一:??礧eb SDK(Vue組件封裝)??
適用場(chǎng)景:需要完整功能(實(shí)時(shí)監(jiān)控、PTZ控制、錄像回放)
1. 安裝依賴(lài)
npm install hikvision-web-sdk # 或直接引入JS文件
2. 封裝Vue組件
<template>
<div>
<!-- 視頻容器 -->
<div id="hikvision-player" ref="videoContainer"></div>
<!-- PTZ控制按鈕 -->
<button @click="ptzControl('LEFT')">左轉(zhuǎn)</button>
<button @click="capture">截圖</button>
</div>
</template>
<script>
export default {
data() {
return {
player: null
}
},
mounted() {
this.initPlayer();
},
methods: {
initPlayer() {
// 動(dòng)態(tài)加載??礢DK
const script = document.createElement('script');
script.src = 'https://open.hikvision.com/resource/webVideoCtrl.js';
script.onload = () => {
WebVideoCtrl.init({
callback: () => {
this.player = new WebVideoCtrl.IWebPlayback({
id: this.$refs.videoContainer.id,
width: '100%',
height: '500px'
});
this.loginCamera();
}
});
};
document.head.appendChild(script);
},
loginCamera() {
this.player.login({
ip: '192.168.1.64',
port: 8000,
username: 'admin',
password: 'your_password',
success: () => this.player.startPreview()
});
},
ptzControl(direction) {
this.player.ptzControl(direction);
},
capture() {
this.player.capturePicture('snapshot_' + Date.now() + '.jpg');
}
},
beforeDestroy() {
if (this.player) this.player.stopPreview();
}
}
</script>方案二:RTSP轉(zhuǎn)Web播放(通過(guò)FFmpeg + WebSocket)??
適用場(chǎng)景:低延遲需求(如實(shí)時(shí)監(jiān)控<500ms)
1. 后端服務(wù)(Node.js示例)
// server.js
const express = require('express');
const { spawn } = require('child_process');
const app = express();
app.get('/stream', (req, res) => {
const ffmpeg = spawn('ffmpeg', [
'-i', 'rtsp://admin:password@192.168.1.64:554/Streaming/Channels/101',
'-c:v', 'libx264',
'-preset', 'ultrafast',
'-f', 'mpegts',
'pipe:1'
]);
ffmpeg.stdout.pipe(res);
});
app.listen(3000);2. Vue組件(使用JSMpeg播放)
<template>
<canvas ref="videoCanvas"></canvas>
</template>
<script>
import JSMpeg from '@cycjimmy/jsmpeg-player';
export default {
mounted() {
new JSMpeg.Player('ws://your-server:3000/stream', {
canvas: this.$refs.videoCanvas,
autoplay: true,
audio: false
});
}
}
</script>方案三:HTTP API調(diào)用(輕量級(jí)管理)??
適用場(chǎng)景:僅需截圖或設(shè)備管理
Vue組件示例
<template>
<div>
<img :src="snapshotUrl" v-if="snapshotUrl">
<button @click="getSnapshot">獲取截圖</button>
</div>
</template>
<script>
export default {
data() {
return {
snapshotUrl: null
}
},
methods: {
async getSnapshot() {
try {
const response = await fetch(
'http://192.168.1.64/ISAPI/Streaming/channels/101/picture',
{
headers: {
'Authorization': 'Basic ' + btoa('admin:password')
}
}
);
const blob = await response.blob();
this.snapshotUrl = URL.createObjectURL(blob);
} catch (error) {
console.error('獲取截圖失敗', error);
}
}
}
}
</script>三種方案對(duì)比?
| 特性 | Web SDK方案 | RTSP轉(zhuǎn)碼方案 | HTTP API方案 |
|---|---|---|---|
| ?功能完整性? | ? 全功能支持 | ? 僅視頻流 | ? 基礎(chǔ)管理 |
| ?延遲? | 500ms~1s | 200ms~500ms | - |
| ?Vue集成難度? | 中等(需SDK加載) | 簡(jiǎn)單(純前端) | 非常簡(jiǎn)單 |
| ?是否需要后端? | ? | ?(需轉(zhuǎn)碼服務(wù)) | ? |
| ?典型應(yīng)用場(chǎng)景? | 企業(yè)監(jiān)控系統(tǒng) | 實(shí)時(shí)監(jiān)控大屏 | 設(shè)備狀態(tài)管理 |
推薦選擇?
- ?需要PTZ控制/錄像回放? → ?Web SDK方案?
- ?追求最低延遲? → ?RTSP轉(zhuǎn)碼方案?(配合WebRTC更佳)
- ?僅需簡(jiǎn)單管理? → ?HTTP API方案?
?安全注意事項(xiàng)
// 所有方案都應(yīng):
1. 使用HTTPS加密通信
2. 避免在前端硬編碼密碼(推薦通過(guò)后端接口鑒權(quán))
3. 設(shè)置攝像頭IP白名單
在市場(chǎng)上,企業(yè)級(jí)項(xiàng)目接入海康威視攝像頭的主流方案選擇會(huì)根據(jù)項(xiàng)目規(guī)模、功能需求和技術(shù)棧有所不同。以下是行業(yè)實(shí)踐中的常見(jiàn)選擇及原因分析:
市場(chǎng)主流方案排名(按使用頻率)??
| 排名 | 方案 | 市場(chǎng)占比 | 典型應(yīng)用場(chǎng)景 | 代表用戶(hù)群體 |
|---|---|---|---|---|
| 1?? | ?Web SDK方案? | ~65% | 安防監(jiān)控平臺(tái)、智慧園區(qū) | 政府/金融/大型企業(yè) |
| 2?? | ?RTSP轉(zhuǎn)碼方案? | ~25% | 實(shí)時(shí)監(jiān)控大屏、移動(dòng)端H5 | 中小型企業(yè)/教育/醫(yī)療 |
| 3?? | ?HTTP API方案? | ~10% | 設(shè)備管理系統(tǒng)、簡(jiǎn)單狀態(tài)監(jiān)控 | 物業(yè)/零售/輕量級(jí)應(yīng)用 |
各方案的市場(chǎng)選擇原因?
?1. Web SDK方案(最主流)??
?核心優(yōu)勢(shì)?:
? ?功能完整?:原生支持PTZ控制、多畫(huà)面分割、錄像回放等專(zhuān)業(yè)功能
? ?官方維護(hù)?:海康持續(xù)更新,兼容90%以上型號(hào)(如DS-2CD3系列、iDS-7系列)
? ?開(kāi)發(fā)效率?:直接調(diào)用API,無(wú)需自研視頻流處理
?典型案例?:
- 銀行金庫(kù)監(jiān)控系統(tǒng)(需雙向語(yǔ)音對(duì)講+報(bào)警聯(lián)動(dòng))
- 智慧城市交通監(jiān)控(支持電子地圖集成)
?技術(shù)棧適配:
// Vue項(xiàng)目通常封裝為獨(dú)立組件
<hikvision-player
ip="192.168.1.64"
@ptz-move="handlePtz"
@alarm="handleAlarm"
/>
2. RTSP轉(zhuǎn)碼方案(性?xún)r(jià)比之選)??
?核心優(yōu)勢(shì)?:
? ?低延遲?:WebRTC方案延遲可控制在300ms內(nèi)(SDK通常500ms+)
? ?跨平臺(tái)?:一套代碼兼容PC/移動(dòng)端(H5/微信小程序)
? ?規(guī)避授權(quán)?:不依賴(lài)??礢DK,避免商業(yè)授權(quán)問(wèn)題
?典型硬件方案?

典型案例?:
- 建筑工地移動(dòng)巡檢APP
- 連鎖門(mén)店實(shí)時(shí)巡店系統(tǒng)
?成本對(duì)比?:
| 項(xiàng)目 | Web SDK方案 | RTSP轉(zhuǎn)碼方案 |
|---|---|---|
| 開(kāi)發(fā)成本 | 低(直接調(diào)用) | 中(需搭建轉(zhuǎn)碼) |
| 硬件成本 | 無(wú) | 需轉(zhuǎn)碼服務(wù)器 |
| 授權(quán)成本 | 需企業(yè)級(jí)授權(quán) | 無(wú) |
?3. HTTP API方案(輕量級(jí)場(chǎng)景)??
?核心優(yōu)勢(shì)?:
? ?零依賴(lài)?:純HTTP調(diào)用,適合簡(jiǎn)單需求
? ?快速上線?:1人天即可完成集成
?典型調(diào)用鏈?:
// 獲取設(shè)備狀態(tài)(無(wú)需視頻流) GET /ISAPI/System/deviceInfo // 控制云臺(tái)(需支持PTZ的型號(hào)) PUT /ISAPI/PTZCtrl/channels/1/continuous
適用場(chǎng)景?:
- 物業(yè)設(shè)備狀態(tài)看板(僅需展示在線狀態(tài))
- 零售門(mén)店攝像頭管理(定時(shí)截圖抽查)
選擇決策樹(shù)

最新趨勢(shì)(2024)??
- ?WebAssembly加速?:
部分企業(yè)用WASM解碼H.265,替代FFmpeg轉(zhuǎn)碼(如Broadway.js方案) - ?國(guó)密加密支持?:
政府項(xiàng)目要求SM4加密視頻流,Web SDK已兼容 - ?低代碼集成?:
??敌峦瞥龅摹篙p量化配置工具」可生成Vue組件代碼
實(shí)際項(xiàng)目反饋?
"在智慧園區(qū)項(xiàng)目中,我們測(cè)試了三種方案:
- Web SDK在功能完整性上得分最高,但移動(dòng)端加載速度慢;
- 最終采用混合方案?:PC端用Web SDK,移動(dòng)端用WebRTC轉(zhuǎn)碼"
——某安防上市公司技術(shù)總監(jiān)
?最終建議?:
- 大型項(xiàng)目?jī)?yōu)先選 ?Web SDK?(功能全、維護(hù)省心)
- 中小項(xiàng)目推薦 ?RTSP轉(zhuǎn)WebRTC?(平衡成本與體驗(yàn))
- 簡(jiǎn)單管理場(chǎng)景用 ?HTTP API?(快速落地)
總結(jié)
到此這篇關(guān)于前端接入??低晹z像頭的3種方案的文章就介紹到這了,更多相關(guān)前端接入??低晹z像頭內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue前端框架—Mint UI詳解(更適用于移動(dòng)端)
這篇文章主要介紹了vue前端框架—Mint UI的詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
React DOM diff 對(duì)比Vue DOM diff
這篇文章主要為大家介紹了React DOM diff 對(duì)比Vue DOM diff 區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Vue.js 實(shí)現(xiàn)微信公眾號(hào)菜單編輯器功能(二)
這篇文章主要介紹了Vue.js 實(shí)現(xiàn)微信公眾號(hào)菜單編輯器功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05
集成vue到j(luò)query/bootstrap項(xiàng)目的方法
下面小編就為大家分享一篇集成vue到j(luò)query/bootstrap項(xiàng)目的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Vue + Webpack + Vue-loader學(xué)習(xí)教程之相關(guān)配置篇
這篇文章主要介紹了關(guān)于Vue + Webpack + Vue-loader的相關(guān)配置篇,文中通過(guò)示例代碼介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03
關(guān)于Vue源碼vm.$watch()內(nèi)部原理詳解
這篇文章主要介紹了關(guān)于Vue源碼vm.$watch()內(nèi)部原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
使用Plotly.js在Vue中創(chuàng)建交互式散點(diǎn)圖的示例代碼
Plotly.js是一個(gè)功能強(qiáng)大的JavaScript庫(kù),用于創(chuàng)建交互式數(shù)據(jù)可視化,它支持各種圖表類(lèi)型,包括散點(diǎn)圖、折線圖和直方圖,在Vue.js應(yīng)用程序中,Plotly.js可用于創(chuàng)建動(dòng)態(tài)且引人入勝的數(shù)據(jù)可視化,本文介紹了使用Plotly.js在Vue中創(chuàng)建交互式散點(diǎn)圖,需要的朋友可以參考下2024-07-07

