如何將海康威視攝像頭SDK的視頻流推送到Vue前端項目中?

如何將海康威視攝像頭SDK的視頻流推送到Vue前端項目中?

將海康威視攝像頭SDK視頻流集成到vue前端項目

本文介紹如何將海康威視攝像頭SDK獲取的視頻流整合到Vue前端項目中。傳統的海康SDK Demo通常基于Java Swing,需要將其適配到Vue環境。本文采用spring Boot后端處理視頻流,并借助本地流媒體服務器ZLMediaKit實現前端播放。

開發環境

本方案基于攝像頭直連本地電腦的開發環境,使用spring boot框架,不依賴云視頻服務。

技術方案

后端Spring Boot應用使用海康SDK獲取視頻流,并將數據推送到ZLMediaKit流媒體服務器。Vue前端項目則從ZLMediaKit拉取RTSP流進行播放。

后端代碼結構

后端EquipmentHikvisionServiceImpl服務類負責初始化和連接海康設備。關鍵代碼片段如下:

立即學習前端免費學習筆記(深入)”;

@Service public class EquipmentHikvisionServiceImpl implements EquipmentHikvisionService {      @Override     @PostConstruct     public void register() {         ClientHikvision clientHikvision = new ClientHikvision();         clientHikvision.initPipedStream();         clientHikvision.clientInit();         clientHikvision.action();     } }

ClientHikvision類負責SDK初始化、設備連接等操作:

public class ClientHikvision {      ExecutorService executor = Executors.newFixedThreadPool(5);     // ... other variables ...      // 初始化管道流     public void initPipedStream() {         // ...     }      // 初始化SDK     public void clientInit() {         // ...     }      // 注冊設備     public void register() {         // ...     }      // 執行預覽     public void action() {         // ...     } }

ClientHikvision包含內部類RealDataCallback處理預覽回調數據:

class RealDataCallback implements HCNetSDK.FRealDataCallBack_V30 {     @Override     public void invoke(int lRealHandle, int dwDataType, ByteByReference pBuffer, int dwBufSize, Pointer pUser) {         if (dwDataType == HCNetSDK.NET_DVR_STREAMDATA) {             if (dwBufSize > 0) {                 executor.execute(() -> push(pBuffer.getPointer().getByteBuffer(0, dwBufSize).array(), dwBufSize));             }         }     } }

視頻流推送

獲取視頻流后,將其推送到ZLMediaKit:

public void push(byte[] data, int size) {     try {         outputStream.write(data, 0, size);         handle();     } catch (IOException | InterruptedException e) {         // ... error handling ...     } }  public void handle() throws InterruptedException, IOException {     // ... 使用ffmpegFrameGrabber和FFmpegFrameRecorder推流到ZLMediaKit ... }

前端vue項目集成

Vue前端通過http請求獲取視頻流。后端使用FFmpeg將RTSP流轉碼為FLV格式,并推送給前端播放器。

  1. 前端請求: Vue項目發送HTTP請求獲取視頻流。
  2. 后端處理: Spring Boot后端使用FFmpeg處理RTSP流,轉碼為FLV。
  3. FLV推送: 后端將FLV流推送到前端。
  4. 前端播放: Vue前端使用FLV播放器播放接收到的FLV流。

此方案類似于直播平臺的HTTP-FLV方案,實現實時視頻流播放。 通過以上步驟,即可實現海康威視攝像頭SDK視頻流在Vue前端項目的實時顯示。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享