前端接入海康威視攝像頭的3種方案示例代碼
方案選擇?
| 方案 | 適用場景 | 優(yōu)缺點 |
|---|---|---|
| ?Web SDK(3.0)?? | 需要完整功能(PTZ控制、錄像回放) | 功能全,但需加載??礘S文件 |
| ?RTSP轉(zhuǎn)Web播放? | 低延遲實時監(jiān)控 | 需后端轉(zhuǎn)碼(如FFmpeg轉(zhuǎn)HLS) |
| ?HTTP API? | 簡單截圖或設(shè)備管理 | 直接調(diào)用REST接口 |
方案一:??礧eb SDK(Vue組件封裝)??
適用場景:需要完整功能(實時監(jiān)控、PTZ控制、錄像回放)
1. 安裝依賴
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() {
// 動態(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播放(通過FFmpeg + WebSocket)??
適用場景:低延遲需求(如實時監(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)用(輕量級管理)??
適用場景:僅需截圖或設(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>三種方案對比?
| 特性 | Web SDK方案 | RTSP轉(zhuǎn)碼方案 | HTTP API方案 |
|---|---|---|---|
| ?功能完整性? | ? 全功能支持 | ? 僅視頻流 | ? 基礎(chǔ)管理 |
| ?延遲? | 500ms~1s | 200ms~500ms | - |
| ?Vue集成難度? | 中等(需SDK加載) | 簡單(純前端) | 非常簡單 |
| ?是否需要后端? | ? | ?(需轉(zhuǎn)碼服務(wù)) | ? |
| ?典型應(yīng)用場景? | 企業(yè)監(jiān)控系統(tǒng) | 實時監(jiān)控大屏 | 設(shè)備狀態(tài)管理 |
推薦選擇?
- ?需要PTZ控制/錄像回放? → ?Web SDK方案?
- ?追求最低延遲? → ?RTSP轉(zhuǎn)碼方案?(配合WebRTC更佳)
- ?僅需簡單管理? → ?HTTP API方案?
?安全注意事項
// 所有方案都應(yīng):
1. 使用HTTPS加密通信
2. 避免在前端硬編碼密碼(推薦通過后端接口鑒權(quán))
3. 設(shè)置攝像頭IP白名單
在市場上,企業(yè)級項目接入??低晹z像頭的主流方案選擇會根據(jù)項目規(guī)模、功能需求和技術(shù)棧有所不同。以下是行業(yè)實踐中的常見選擇及原因分析:
市場主流方案排名(按使用頻率)??
| 排名 | 方案 | 市場占比 | 典型應(yīng)用場景 | 代表用戶群體 |
|---|---|---|---|---|
| 1?? | ?Web SDK方案? | ~65% | 安防監(jiān)控平臺、智慧園區(qū) | 政府/金融/大型企業(yè) |
| 2?? | ?RTSP轉(zhuǎn)碼方案? | ~25% | 實時監(jiān)控大屏、移動端H5 | 中小型企業(yè)/教育/醫(yī)療 |
| 3?? | ?HTTP API方案? | ~10% | 設(shè)備管理系統(tǒng)、簡單狀態(tài)監(jiān)控 | 物業(yè)/零售/輕量級應(yīng)用 |
各方案的市場選擇原因?
?1. Web SDK方案(最主流)??
?核心優(yōu)勢?:
? ?功能完整?:原生支持PTZ控制、多畫面分割、錄像回放等專業(yè)功能
? ?官方維護?:??党掷m(xù)更新,兼容90%以上型號(如DS-2CD3系列、iDS-7系列)
? ?開發(fā)效率?:直接調(diào)用API,無需自研視頻流處理
?典型案例?:
- 銀行金庫監(jiān)控系統(tǒng)(需雙向語音對講+報警聯(lián)動)
- 智慧城市交通監(jiān)控(支持電子地圖集成)
?技術(shù)棧適配:
// Vue項目通常封裝為獨立組件
<hikvision-player
ip="192.168.1.64"
@ptz-move="handlePtz"
@alarm="handleAlarm"
/>
2. RTSP轉(zhuǎn)碼方案(性價比之選)??
?核心優(yōu)勢?:
? ?低延遲?:WebRTC方案延遲可控制在300ms內(nèi)(SDK通常500ms+)
? ?跨平臺?:一套代碼兼容PC/移動端(H5/微信小程序)
? ?規(guī)避授權(quán)?:不依賴??礢DK,避免商業(yè)授權(quán)問題
?典型硬件方案?

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

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

