docker部署Zlm服務(wù)的實(shí)現(xiàn)
起因:內(nèi)網(wǎng)環(huán)境不能使用yum,并且缺少gcc,gcc-c++,make等依賴(lài)庫(kù),可以直接使用docker部署省去太多的麻煩
Zlm和wvp在同一臺(tái)機(jī)器上部署,Zlm使用dokcer方式,而wvp直接jar包啟動(dòng)即可
docker run -d -p 1935:1935 \ --name zlm \ -p 8085:80 -p 4455:443 \ -p 554:554 -p 10000:10000 \ -p 10000:10000/udp -p 8000:8000/udp \ -p 9000:9000/udp \ -p 30000-30100:30000-30100/tcp -p 30000-30100:30000-30100/udp \ -v /home/conf:/opt/media/conf \ zlmediakit/zlmediakit:master
ZLM宿主機(jī)安全組開(kāi)放端口:TCP 8085,30000-30010 , UDP 30000-30010
其中Zlm的配置文件config.ini被映射到宿主機(jī)文件夾
; auto-generated by mINI class { [api] apiDebug=1 defaultSnap=./www/logo.png downloadRoot=./www secret=33x7uzEBTgXgsuifyyMrt5I38wfMFeXk snapRoot=./www/snap/ [cluster] origin_url= retry_count=3 timeout_sec=15 [ffmpeg] bin=/usr/bin/ffmpeg cmd=%s -re -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s log=./ffmpeg/ffmpeg.log restart_sec=0 snap=%s -rtsp_transport tcp -i %s -y -f mjpeg -frames:v 1 %s [general] broadcast_player_count_changed=0 check_nvidia_dev=1 enableVhost=0 enable_ffmpeg_log=0 flowThreshold=1024 listen_ip=:: maxStreamWaitMS=15000 mediaServerId=52Epv9vzIi3jbZio mergeWriteMS=0 resetWhenRePlay=1 streamNoneReaderDelayMS=20000 unready_frame_cache=100 wait_add_track_ms=3000 wait_audio_track_data_ms=1000 wait_track_ready_ms=10000 [hls] broadcastRecordTs=0 deleteDelaySec=10 fastRegister=0 fileBufSize=65536 segDelay=0 segDur=2 segKeep=0 segNum=3 segRetain=5 [hook] alive_interval=10.0 enable=1 on_flow_report= on_http_access= on_play=http://172.17.0.1:8080/index/hook/on_play on_publish=http://172.17.0.1:8080/index/hook/on_publish on_record_mp4=http://172.17.0.1:8080/index/hook/on_record_mp4 on_record_ts= on_rtp_server_timeout=http://172.17.0.1:8080/index/hook/on_rtp_server_timeout on_rtsp_auth= on_rtsp_realm= on_send_rtp_stopped=http://172.17.0.1:8080/index/hook/on_send_rtp_stopped on_server_exited= on_server_keepalive=http://172.17.0.1:8080/index/hook/on_server_keepalive on_server_started=http://172.17.0.1:8080/index/hook/on_server_started on_shell_login= on_stream_changed=http://172.17.0.1:8080/index/hook/on_stream_changed on_stream_none_reader=http://172.17.0.1:8080/index/hook/on_stream_none_reader on_stream_not_found=http://172.17.0.1:8080/index/hook/on_stream_not_found retry=1 retry_delay=3.000000 stream_changed_schemas=rtsp/rtmp/fmp4/ts/hls/hls.fmp4 timeoutSec=30 [http] allow_cross_domains=1 allow_ip_range=::1,127.0.0.1,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255,10.0.0.0-10.255.255.255 charSet=utf-8 dirMenu=1 forbidCacheSuffix= forwarded_ip_header= keepAliveSecond=15 maxReqSize=40960 notFound=<html><head><title>404 Not Found</title></head><body bgcolor="white"><center><h1>您訪(fǎng)問(wèn)的資源不存在!</h1></center><hr><center>ZLMediaKit(git hash:a27e945/2025-01-20T18:00:13+08:00,branch:master,build time:2025-01-20T10:01:26)</center></body></html> port=80 rootPath=./www sendBufSize=65536 sslport=443 virtualPath= [multicast] addrMax=239.255.255.255 addrMin=239.0.0.0 udpTTL=64 [protocol] add_mute_audio=1 auto_close=0 continue_push_ms=3000 enable_audio=1 enable_fmp4=1 enable_hls=1 enable_hls_fmp4=0 enable_mp4=0 enable_rtmp=1 enable_rtsp=1 enable_ts=1 fmp4_demand=0 hls_demand=0 hls_save_path=./www modify_stamp=2 mp4_as_player=0 mp4_max_second=3600 mp4_save_path=./www paced_sender_ms=0 rtmp_demand=0 rtsp_demand=0 ts_demand=0 [record] appName=record enableFmp4=0 fastStart=0 fileBufSize=65536 fileRepeat=0 sampleMS=500 [rtc] datachannel_echo=1 externIP= maxRtpCacheMS=5000 maxRtpCacheSize=2048 max_bitrate=0 min_bitrate=0 nackIntervalRatio=1.000000 nackMaxCount=15 nackMaxMS=3000 nackMaxSize=2048 nackRtpSize=8 port=8000 preferredCodecA=PCMA,PCMU,opus,mpeg4-generic preferredCodecV=H264,H265,AV1,VP9,VP8 rembBitRate=0 start_bitrate=0 tcpPort=8000 timeoutSec=15 [rtmp] directProxy=1 enhanced=0 handshakeSecond=15 keepAliveSecond=15 port=1935 sslport=19350 [rtp] audioMtuSize=600 h264_stap_a=1 lowLatency=0 rtpMaxSize=10 videoMtuSize=1400 [rtp_proxy] dumpDir= gop_cache=1 h264_pt=98 h265_pt=99 opus_pt=100 port=10000 port_range=30000-30100 ps_pt=96 rtp_g711_dur_ms=100 timeoutSec=15 udp_recv_socket_buffer=4194304 [rtsp] authBasic=0 directProxy=1 handshakeSecond=15 keepAliveSecond=15 lowLatency=0 port=554 rtpTransportType=-1 sslport=332 [shell] maxReqSize=1024 port=9000 [srt] latencyMul=4 passPhrase= pktBufSize=8192 port=9000 timeoutSec=5 ; } ---
需要改動(dòng)的屬性
如果hook校驗(yàn)開(kāi)啟,那么ip要配置到wvp的地址,我在這里要通過(guò)容器內(nèi)部去請(qǐng)求宿主機(jī),可以使用宿主機(jī)的docker網(wǎng)關(guān)地址
wvp的application.yml配置如下
spring: # 設(shè)置接口超時(shí)時(shí)間 mvc: async: request-timeout: 20000 thymeleaf: cache: false # [可選]上傳文件大小限制 servlet: multipart: max-file-size: 10MB max-request-size: 100MB cache: type: redis # REDIS數(shù)據(jù)庫(kù)配置 redis: # [必須修改] Redis服務(wù)器IP, REDIS安裝在本機(jī)的,使用127.0.0.1 host: 10.101.32.198 # [必須修改] 端口號(hào) port: 6379 # [可選] 數(shù)據(jù)庫(kù) DB database: 12 # [可選] 訪(fǎng)問(wèn)密碼,若你的redis服務(wù)器沒(méi)有設(shè)置密碼,就不需要用密碼去連接 password: 12345 # [可選] 超時(shí)時(shí)間 timeout: 10000 # mysql數(shù)據(jù)源 datasource: dynamic: primary: master datasource: master: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://10.101.32.198:3306/wvp2?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=UTC&useSSL=false&allowMultiQueries=true username: root password: 12345 hikari: connection-timeout: 20000 # 是客戶(hù)端等待連接池連接的最大毫秒數(shù) initialSize: 50 # 連接池初始化連接數(shù) maximum-pool-size: 200 # 連接池最大連接數(shù) minimum-idle: 10 # 連接池最小空閑連接數(shù) idle-timeout: 300000 # 允許連接在連接池中空閑的最長(zhǎng)時(shí)間(以毫秒為單位) max-lifetime: 1200000 # 是池中連接關(guān)閉后的最長(zhǎng)生命周期(以毫秒為單位) #[可選] WVP監(jiān)聽(tīng)的HTTP端口, 網(wǎng)頁(yè)和接口調(diào)用都是這個(gè)端口 server: port: 8080 # [可選] HTTPS配置, 默認(rèn)不開(kāi)啟 ssl: # [可選] 是否開(kāi)啟HTTPS訪(fǎng)問(wèn) enabled: false # [可選] 證書(shū)文件路徑,放置在resource/目錄下即可,修改xxx為文件名 key-store: classpath:test.monitor.89iot.cn.jks # [可選] 證書(shū)密碼 key-store-password: gpf64qmw # [可選] 證書(shū)類(lèi)型, 默認(rèn)為jks,根據(jù)實(shí)際修改 key-store-type: JKS # 作為28181服務(wù)器的配置 sip: # [必須修改] 本機(jī)的IP,對(duì)應(yīng)你的網(wǎng)卡,監(jiān)聽(tīng)什么ip就是使用什么網(wǎng)卡, # 如果要監(jiān)聽(tīng)多張網(wǎng)卡,可以使用逗號(hào)分隔多個(gè)IP, 例如: 192.168.1.4,10.0.0.4 # 如果不明白,就使用0.0.0.0,大部分情況都是可以的 # 請(qǐng)不要使用127.0.0.1,任何包括localhost在內(nèi)的域名都是不可以的。 ip: 0.0.0.0 # [可選] 28181服務(wù)監(jiān)聽(tīng)的端口 port: 5060 # 根據(jù)國(guó)標(biāo)6.1.2中規(guī)定,domain宜采用ID統(tǒng)一編碼的前十位編碼。國(guó)標(biāo)附錄D中定義前8位為中心編碼(由省級(jí)、市級(jí)、區(qū)級(jí)、基層編號(hào)組成,參照GB/T 2260-2007) # 后兩位為行業(yè)編碼,定義參照附錄D.3 # 3701020049標(biāo)識(shí)山東濟(jì)南歷下區(qū) 信息行業(yè)接入 # [可選] domain: 4101050000 # [可選] id: 41010500002000000001 # [可選] 默認(rèn)設(shè)備認(rèn)證密碼,后續(xù)擴(kuò)展使用設(shè)備單獨(dú)密碼, 移除密碼將不進(jìn)行校驗(yàn) password: 123456 # 是否存儲(chǔ)alarm信息 alarm: true #zlm 默認(rèn)服務(wù)器配置 media: id: 52Epv9vzIi3jbZio # [必須修改] zlm服務(wù)器的內(nèi)網(wǎng)IP ip: 10.101.32.198 # [必須修改] zlm服務(wù)器的http.port http-port: 8085 secret: 33x7uzEBTgXgsuifyyMrt5I38wfMFeXk # [可選] 返回流地址時(shí)的ip,置空使用 media.ip stream-ip: 10.101.32.198 # [可選] wvp在國(guó)標(biāo)信令中使用的ip,此ip為攝像機(jī)可以訪(fǎng)問(wèn)到的ip, 置空使用 media.ip sdp-ip: # [可選] zlm服務(wù)器的hook所使用的IP, 默認(rèn)使用sip.ip hook-ip: # [可選] zlm服務(wù)器的http.sslport, 置空使用zlm配置文件配置 http-ssl-port: # 啟用多端口模式, 多端口模式使用端口區(qū)分每路流,兼容性更好。 單端口使用流的ssrc區(qū)分, 點(diǎn)播超時(shí)建議使用多端口測(cè)試 rtp: # [可選] 是否啟用多端口模式, 開(kāi)啟后會(huì)在portRange范圍內(nèi)選擇端口用于媒體流傳輸 enable: true # [可選] 在此范圍內(nèi)選擇端口用于媒體流傳輸, 必須提前在zlm上配置該屬性,不然自動(dòng)配置此屬性可能不成功 port-range: 30000,30100 # 端口范圍 # [可選] 國(guó)標(biāo)級(jí)聯(lián)在此范圍內(nèi)選擇端口發(fā)送媒體流, send-port-range: 30000,30100 # 端口范圍 # 錄像輔助服務(wù), 部署此服務(wù)可以實(shí)現(xiàn)zlm錄像的管理與下載, 0 表示不使用 record-assist-port: 18081 # [根據(jù)業(yè)務(wù)需求配置] user-settings: allowed-origins: - http://10.101.32.198:9000 - http://10.101.32.198:80 # 點(diǎn)播/錄像回放 等待超時(shí)時(shí)間,單位:毫秒 play-timeout: 180000 # [可選] 自動(dòng)點(diǎn)播, 使用固定流地址進(jìn)行播放時(shí),如果未點(diǎn)播則自動(dòng)進(jìn)行點(diǎn)播, 需要rtp.enable=true auto-apply-play: true # 設(shè)備/通道狀態(tài)變化時(shí)發(fā)送消息 device-status-notify: true # [可選] 日志配置, 一般不需要改 logging: config: classpath:logback-spring.xml
成功部署并接入國(guó)標(biāo)攝像頭
到此這篇關(guān)于docker部署Zlm服務(wù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)docker部署Zlm內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何使用Docker Desktop部署GitLab
- Docker部署Graylog日志管理系統(tǒng)
- 兩臺(tái)互通的服務(wù)器使用Docker部署一主兩從MySQL8.0.35的方法
- docker?springcloud?k8s集成部署方式
- 使用Docker部署Redis并配置持久化與密碼保護(hù)的詳細(xì)步驟
- Docker部署Mysql數(shù)據(jù)庫(kù)的詳細(xì)步驟
- 如何在 Ubuntu 下通過(guò) Docker 部署 Caddy 服務(wù)器
- Dockerfile打包部署詳細(xì)圖文教程
- docker部署java項(xiàng)目的詳細(xì)步驟
相關(guān)文章
三分鐘完成 ubuntu16.04初始化,Java,maven,docker環(huán)境的部署問(wèn)題
這篇文章主要介紹了三分鐘完成 ubuntu16.04初始化,Java,maven,docker環(huán)境的部署問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-11-11物理機(jī)與啟動(dòng)的Docker容器間的目錄映射方式
這篇文章主要介紹了物理機(jī)與啟動(dòng)的Docker容器間的目錄映射方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11嘗試Docker+Nginx部署單頁(yè)應(yīng)用方法
這篇文章主要介紹了嘗試Docker+Nginx部署單頁(yè)應(yīng)用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02IDEA使用Docker插件遠(yuǎn)程部署項(xiàng)目到云服務(wù)器的方法步驟
這篇文章主要介紹了IDEA使用Docker插件遠(yuǎn)程部署項(xiàng)目到云服務(wù)器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12docker使用dockercompose編排一個(gè)Hadoop集群方式
這篇文章主要介紹了docker使用dockercompose編排一個(gè)Hadoop集群方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Docker 數(shù)據(jù)卷操作的實(shí)現(xiàn)
這篇文章主要介紹了Docker 數(shù)據(jù)卷操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06