使用Docker部署ZLMediaKit流媒體服務器實現gb/t28181協議的設備

最近在研究一個攝像頭,通信協議是 gb/t28181。對于這個協議也是第一次接觸,通過查閱多方資料,找到了兩個開源的源碼,來實現 視頻播放、攝像頭直播。以前也沒有深入的了解過關于視頻播放的這方面的技術,偶爾網站播放視頻 也都是 mp4視頻,通過html標簽直接播放。通過這次的學習,對于視頻播放的技術有了一部分的了解。這篇文章主要是講解 怎么搭建一下 我找的這兩個開源的源碼服務,從來對gb/t28181協議的設備 進行一個管理。
源碼1:ZLMediaKit
https://github.com/ZLMediaKit/ZLMediaKit
對于ZLMediaKit 源碼 他提供 docker部署的 方案,所以我們就不需要下載源碼自行編譯了
這個服務 我們主要是用來做視頻流轉換與播放等等
源碼2:wvp-GB28181-pro
https://github.com/648540858/wvp-GB28181-pro
對于這個源碼 已經集成了各種設備協議和ZLMediaKit的使用。
他是帶前后端的管理系統,如果你們已經有了前端頁面。可以只是用他的后端,通過api的方式調用即可。

好了,簡單的介紹了這兩個項目。
接下來我們來搭建 ZLMediaKit

docker 部署:

  1. 拉取官方鏡像
docker pull zlmediakit/zlmediakit:master
  1. 首次運行臨時容器
docker run -d --name zlmediakit-tmp zlmediakit/zlmediakit:master
  1. 提取默認配置文件
# 創建宿主機配置目錄
mkdir /home/zlmediakit/conf
# 復制容器內配置文件到宿主機
docker cp zlmediakit-tmp:/home/zlmediakit/conf/config.ini /opt/zlmediakit/conf/
# 刪除臨時容器
docker rm -f zlmediakit-tmp
  1. 修改config.ini配置文件
[api]
secret = your_custom_secret  # 必須修改默認值[rtp_proxy]# 端口范圍需與容器映射一致 這個拉流的時候 隨機使用的端口# 如果設備同時在線多 再增加即可 現在是500個端口
port_range = 30000-30500    [http]
port = 9092                    # 保持與容器映射端口對應 
allow_ip_range = 0.0.0.0/0   # 允許所有IP訪問
ssl_port=443                 # 若開啟HTTPS 默認443  也可以改成別的 8443[rtmp]
port=1935                    # 必須與Docker映射的容器端口一致[websocket]
port=9000                    # 若開啟WebSocket[general]
mediaServerId = sdaafdgfdgferdz  #服務器唯一id 可自定義

配置文件別的 一般情況就不需要改了,當 wvp-GB28181-pro 源碼啟動的時候 和 ZLMediaKit 服務建立通信成功后 ,wvp-GB28181-pro 會把 一些參數 同步到 config.ini 配置文件里。

最后啟動ZLMediaKit :
docker-compose.yml 文件方式啟動:
大家可以根據自己的需求自行修改

version: "3.7"services:zlmediakit:image: zlmediakitports:- "1935:1935"       # rtmp 端口- "9092:9092"     # web 80端口- "8443:8443"     # web 443端口- "8554:8554"     # rtsp 端口- "10000:10000"     # rtp_proxy 端口- "10000:10000/udp" # rtp 代理端口 udp- "8000:8000/udp"   # rtc 端口- "9000:9000/udp"   # srt 端口- "30000-30500:30000-30500/tcp"  # rtp 代理端口范圍(WebRTC/RTP轉發)- "30000-30500:30000-30500/udp"  # rtp 代理端口范圍(WebRTC/RTP轉發)restart: alwayscontainer_name: zlmediakitvolumes:- /home/lianxi/ZLMediaKit/conf/config.ini:/opt/media/conf/config.ini  # 配置文件

注意:zlmediakit 服務的 9092 web 端口 通過瀏覽器可以直接訪問,可以訪問到一些目錄結構,還不知道有沒有安全方面的影響,目前不知道怎么關閉。有知道的小伙伴也歡迎留言~

這個 wvp-GB28181-pro 項目他默認是 3個 配置文件夾 我給他整合成1個了。
在這里插入圖片描述
我修改后的 application.yml 配置文件 和上面的這個 docker-compose.yml是配到的。
更多配置 可以去翻看他的源碼里有。

application.yml 內容:

spring:application:name: wvpprofiles:active: dev  # 設置接口超時時間mvc:async:request-timeout: 20000thymeleaf:cache: false  # [可選] 上傳文件大小限制servlet:multipart:max-file-size: 10MBmax-request-size: 100MBcache:type: redis  # REDIS數據庫配置redis:# [必須修改] Redis服務器IP, REDIS安裝在本機的, 使用127.0.0.1host: 127.0.0.1  # [必須修改] 端口號port: 6379# [可選] 數據庫 DBdatabase: 1# [可選] 訪問密碼, 若你的redis服務器沒有設置密碼,就不需要用密碼去連接password: 123456# [可選] 超時時間timeout: 10000mysql:datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/gb28181?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=trueusername: rootpassword: root# [可選] WVP監聽的HTTP端口, 網頁和接口調用都是這個端口
server:port: 18080
# [可選] HTTPS配置, 默認不開啟ssl:# [可選] 是否開啟HTTPS訪問enabled: false# [可選] 證書文件路徑,放置在resource/目錄下即可,修改xxx為文件名key-store: classpath:test.monitor.89iot.cn.jks# [可選] 證書密碼key-store-password: gpf64qmw# [可選] 證書類型, 默認為jks,根據實際修改key-store-type: JKS# 作為28181服務器的配置
sip:# [可選] 28181服務監聽的端口port: 8116# 根據國標6.1.2中規定,domain宜采用ID統一編碼的前十位編碼。國標附錄D中定義前8位為中心編碼(由省級、市級、區級、基層編號組成,參照GB/T 2260-2007) 后兩位為行業編碼,定義參照附錄D.3# [可選] domain: 4101050000# [可選] id: 41010500002000000001# [可選] 默認設備認證密碼,后續擴展使用設備單獨密碼, 移除密碼將不進行校驗password: 12345678# 是否存儲alarm告警信息alarm: false# zlm 默認服務器配置
media:id:  sdaafdgfdgferdz  # 要和 zlmediakit 服務配置文件里mediaServerId一致# [必須修改] zlm服務器的內網IPip: 192.168.0.110# [必須修改] zlm服務器的http.porthttp-port: 9092# 要和 zlmediakit docker映射的端口一致http-ssl-port: 8443rtmp-port: 1935rtsp-port: 8554# [必選選] zlm服務器的 secretsecret: tnc4XpPRdsasawQCaslpAsaaK
# 要和 zlmediakit 服務配置文件里secret一致rtp:# [可選] 是否啟用多端口模式, 開啟后會在portRange范圍內選擇端口用于媒體流傳輸enable: true# [可選] 在此范圍內選擇端口用于媒體流傳輸, 必須提前在zlm上配置該屬性,不然自動配置此屬性可能不成功port-range: 30000,30500  # 端口范圍# [可選] 國標級聯在此范圍內選擇端口發送媒體流, send-port-range: 30000,30500send-port-range: 30000,30500  # 端口范圍# [根據業務需求配置]
user-settings:# 點播/錄像回放 等待超時時間, 單位:毫秒play-timeout: 180000# [可選] 自動點播, 使用固定流地址進行播放時,如果未點播則自動進行點播, 需要rtp.enable=trueauto-apply-play: true# 推流直播是否錄制record-push-live: false# 國標是否錄制record-sip: false# 國標點播 按需拉流, true:有人觀看拉流,無人觀看釋放, false:拉起后不自動釋放stream-on-demand: true# 是否返回Date屬性,true:不返回,避免攝像頭通過該參數自動校時,false:返回,攝像頭可能會根據該時間校時disable-date-header: falseserverId:  sdaafdgfdgferdz
# 關閉在線文檔(生產環境建議關閉)
springdoc:api-docs:enabled: falseswagger-ui:enabled: false

對于 wvp-GB28181-pro 項目部署 這里就不說了 ,非常簡單 把數據庫 表導入到數據庫 ,數據庫配置一下
java8 環境 idea編輯器 啟動即可

網上找的模擬設備協議工具 進行9屏播放效果
在這里插入圖片描述

最后:非常感謝這些大佬們開源的源碼,讓我了解了這么多關于視頻播放的相關編程知識,向大佬致敬~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94623.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

硬件三人行--運算基礎篇

第3講 負反饋放大電路

【LINUX網絡】TCP原理

目錄 本文介紹 1. 什么是TCP? 2. TCP結構 為什么需要協議棧:兩臺主機通信的復雜性解決方案 3. 確認應答機制 進一步理解什么是確認和請求以及序號 進一步理解什么是序號和確認序號 并發發送帶來的問題以及解決方案(序號) …

Java -- 文件基礎知識--Java IO流原理--FileReader

目錄 1. 常用文件操作 2. Java IO流原理 2.1 流的分類 3. FileReader和FileWriter介紹 FileReader相關方法: FileWriter常用方法: 文件是保存數據的地方,比如大家經常使用的word文檔,txt文件,excel文件...都是文…

向量方法證明正余弦定理的數學理論體系

向量方法證明正余弦定理的數學理論體系 摘要: 向量理論為幾何定理的證明提供了強有力的代數化工具。本文基于向量空間的基本概念與運算性質,嚴格推導平面幾何中的正弦定理與余弦定理。通過建立系統的向量表示框架,將幾何關系轉化為向量運算&a…

【筆記ing】大模型算法架構

前言 隨著人工智能技術的飛速發展,大模型算法及其架構已成為推動科技前沿的重要力量。它們不僅能夠處理海量的數據,還具備強大的表征學習能力,能夠應對日益復雜的場景需求。本章節將介紹大模型算法及其架構,帶您了解其背后的原理、技術創新以及在實際應用中的廣闊前景。 …

ConcurrentHashMap的原理

1.底層數據結構JDK1.7底層采用分段的數組鏈表實現JDK1.8 采用的數據結構跟HashMap1.8的結構一樣,數組鏈表/紅黑二叉樹2.加鎖的方式JDK1.7采用Segment分段鎖,底層使用的是ReentrantLockJDK1.8采用CAS添加新節點,采用synchronized鎖定鏈表或紅黑二叉樹的首節點,相對Segment分段鎖…

【論文閱讀】健全個體無輔助運動期間可穿戴傳感器雙側下肢神經機械信號的基準數據集

Benchmark Datasets for Bilateral Lower-Limb Neuromechanical Signals from Wearable Sensors during Unassisted Locomotion in Able-Bodied Individuals 原文:DOI: 10.3389/frobt.2018.00014 2018年 翻譯:靠岸學術 目錄 1引言 2儀器設…

反向海淘系統搭建:從架構設計到合規運營的全方位指南

一、系統架構設計1.1 分層架構設計反向海淘系統通常采用四層架構設計:?接入層?:負責與淘寶開放平臺、1688海外接口通信,處理接口認證、請求轉發與響應解析。?業務層?:包含商品檢索、訂單管理、支付處理、物流追蹤等核心模塊。…

20.22 QLoRA微調實戰:中文語音識別數據準備全流程解密

QLoRA微調實戰:中文語音識別數據準備全流程解密 實戰項目:QLoRA 微調數據準備詳解 本環節我們將以中文語音識別任務為場景,詳細拆解 QLoRA 微調前的數據準備流程。以下流程圖展示了完整的數據處理路徑: #mermaid-svg-A3ZpWn1ysZUg6jg4 {font-family:"trebuchet ms&q…

工業電子看板賦能線纜工廠生產高效運轉

在制造業智能化轉型的浪潮中,工業電子看板已不再只是“顯示數據的屏幕”,而是成為連接設備層、控制層與管理層的實時信息樞紐。尤其在線纜制造這類對工藝參數敏感、生產連續性要求高的行業中,電子看板通過對關鍵數據的透明化、實時化與交互化…

Java爬蟲是什么,如何獲取API接口

一、Java爬蟲的定義Java爬蟲是一種基于Java編程語言開發的網絡爬蟲程序。它通過模擬瀏覽器行為,向目標網站發送HTTP請求,獲取網頁內容并解析出所需數據。Java爬蟲技術廣泛應用于數據采集、市場分析、競爭情報等領域。二、Java爬蟲獲取API接口的方法&…

Python篇---返回類型

基礎返回類型:在 Python 中,函數的返回類型就像函數 “產出” 的不同 “物品”,理解它們能幫你更好地控制代碼的輸出。下面用通俗的方式介紹常見的返回類型及用法:一、最基礎的返回類型1. 無返回值(None)特…

ArkTS 與 TypeScript 的關系及鴻蒙開發常見錯誤案例

隨著 HarmonyOS NEXT(純血鴻蒙) 的到來,開發者在學習鴻蒙應用開發時會遇到一個新的語言 —— ArkTS。很多人會疑惑:它和 TypeScript(TS)是什么關系?又有哪些新的特性?在實際開發中&a…

初識socket編程(實現一個簡單的TCPServer)

監聽套接字的創建流程 在網絡編程中,listen 套接字(通常稱為“監聽套接字”)是服務器端用于接收客戶端連接請求的特殊套接字,是 TCP 服務器建立連接過程中的核心組件。下面我們就來簡單看一下監聽套接字創建的過程創建流程&#x…

開發者如何在 Gitee 上開源一個自己的項目

文章目錄一、為什么要在 Gitee 上開源?1. 開源的價值2. 為什么是 Gitee?二、前期準備:讓項目“可開源”1. 項目代碼整理2. 添加必要文件3. 確定開源許可證三、在 Gitee 上創建倉庫四、推送本地代碼到 Gitee五、完善項目展示(吸引力…

卷積神經網絡實現mnist手寫數字集識別案例

手寫數字識別是計算機視覺領域的“Hello World”,也是深度學習入門的經典案例。它通過訓練模型識別0-9的手寫數字圖像(如MNIST數據集),幫助我們快速掌握神經網絡的核心流程。本文將以PyTorch框架為基礎,帶你從數據加載…

實戰筆記——構建智能Agent:SpreadJS代碼助手

目錄 前言 解決思路 需求理解 MCP Server LangGraph 本教程目標 技術棧 第一部分:構建 MCP Server - 工具服務化的基礎架構 第二部分:Tools 實現 第三部分:基于 LangGraph 構建智能 Agent 第四部分:服務器和前端搭建 前…

【Word】用 Python 輕松實現 Word 文檔對比并生成可視化 HTML 報告

在日常工作和學習中,我們經常需要對兩個版本的文檔進行比對,比如合同修改、論文修訂、報告更新等。手動逐字檢查不僅耗時費力,還容易遺漏細節。 今天,我將帶你使用 Python python-docx difflib 實現一個自動化 Word 文檔對比工具…

從0開始搭建一個前端項目(vue + vite + typescript)

版本 node:v22.17.1 pnpm:v10.13.1 vue:^3.5.18 vite:^7.0.6 typescipt:~5.8.0腳手架初始化vue pnpm create vuelatest只選擇: TypeScript, JSX 3. 用vscode打開創建的項目,并刪除多余的代碼esl…

1.ImGui-環境安裝

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 本次游戲沒法給 內容參考于:微塵網絡安全 IMGUI是一個被廣泛應用到逆向里面的,它可以用來做外部的繪制,比如登錄界面&…