当前位置: 首页 > news >正文

Docker部署ZLMediaKit流媒体服务器及配置

一、docker-compose.yml一键安装文件

services: polaris-media: image: zlmediakit/zlmediakit:master ports: - "6080:6080/tcp" # HTTP端口 - "10935:10935/tcp" # RTMP推流/拉流端口(TCP) - "5540:5540/tcp" # RTSP推流/拉流端口(TCP) - "5540:5540/udp" # RTSP推流/拉流端口(UDP) - "10000:10000/tcp" # RTP单端口模式的收发端口 - "10000:10000/udp" # RTP单端口模式的收发端口 - "30000-30500:30000-30500/tcp" # RTP多端口模式的端口范围 - "30000-30500:30000-30500/udp" # RTP多端口模式的端口范围 - "8000:8000/udp" # WebRTC - "9000:9000/udp" # SRT volumes: - /data/docker/zlmediakit/conf:/opt/media/conf/ - /data/docker/zlmediakit/record:/opt/media/record/ - /data/docker/zlmediakit/logs:/opt/media/logs/ - /etc/localtime:/etc/localtime:ro networks: - iot volumes: zlmediakit-record: zlmediakit-logs: zlmediakit-conf: networks: iot: external: true

注意:volumes可根据实际情况映射到宿主机,ports主机外的端口映射可根据实际情况映射

二、创建持久化文件

sudo mkdir -p /data/docker/zlmediakit/conf \ /data/docker/zlmediakit/record \ /data/docker/zlmediakit/logs sudo chmod -R 777 /data/docker/zlmediakit

三、运行文件

// yml文件命名为compose.yaml时执行以下命令 docker compose up -d // yml文件命名为xxx.yaml时执行以下命令 docker compose -f xxx.yaml up -d

四、修改配置文件

; auto-generated by mINI class { [api] apiDebug=1 defaultSnap=./www/logo.png downloadRoot=./www; secret=su6TiedN2rVAmBbIDX0aa0QTiBJLBdcf 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=polaris 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= on_publish= on_record_mp4= on_record_ts= on_rtp_server_timeout= on_rtsp_auth= on_rtsp_realm= on_send_rtp_stopped= on_server_exited= on_server_keepalive= on_server_started= on_shell_login= on_stream_changed= on_stream_none_reader= on_stream_not_found= retry=1 retry_delay=3.0 stream_changed_schemas=rtsp/rtmp/fmp4/ts/hls/hls.fmp4 timeoutSec=30 [http] allow_cross_domains=1 allow_ip_range= charSet=utf-8 dirMenu=1 forbidCacheSuffix= forwarded_ip_header= keepAliveSecond=30 maxReqSize=40960 notFound=<html><head><title>404 Not Found</title></head><body bgcolor="white"><center><h1>您访问的资源不存在!</h1></center><hr><center>ZLMediaKit(git hash:8ccb4e9/%aI,branch:master,build time:2024-11-07T10:34:19)</center></body></html> port=6080 rootPath=./www sendBufSize=65536 sslport=4443 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=/home 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=0 externIP= maxRtpCacheMS=5000 maxRtpCacheSize=2048 max_bitrate=0 min_bitrate=0 nackIntervalRatio=1.0 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=30 [rtmp] directProxy=1 enhanced=0 handshakeSecond=15 keepAliveSecond=15 port=10935 sslport=0 [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-30500 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=5540 rtpTransportType=-1 sslport=0 [shell] maxReqSize=1024 port=0 [srt] latencyMul=4 pktBufSize=8192 port=9000 timeoutSec=5 ; } ---

注意:配置文件修改后需要重启容器/热重启也行

五、API接口

1. 访问管理界面 http://宿主机IP:880 2. API接口测试 http://宿主机IP:880/api/defaultAuth 3. 热重启 http://宿主机IP:880/api/reloadConfig?secret=your_custom_secret

注意:如果提示“在url路径中添加正确的secret参数/
Required parameter missed: "secret"
”只需要在请求路径最后增加?secret=admin123

如果播放不了,查看config.ini文件中[hook]中生成的一些IP访问地址,把这些IP改成实际的SIP服务地址即可

http://www.cnnetsun.cn/news/3702589.html

相关文章:

  • 孤能子视角:哲学篇·LLM与语言接口帧——硅基观察符的协议化投射:当大模型开始“说话“
  • 孤能子视角:EIS是什么——回顾文明来时路,试构碳硅认知语法
  • Cluster API Provider AWS常见问题解答:新手必知的20个核心概念
  • 知网AIGC检测和iThenticate哪个更严?实测同一篇论文相差27个百分点,附免费过检方法
  • SQL注入黑名单绕过实战:5种编码变形与等价替换技巧
  • 数字孪生空间计算技术:亚毫米级精度实现与应用
  • 如何高效使用开源翻译工具:智能游戏本地化实战指南
  • HR知识卡片-18:组织变革模型
  • Jellium Desktop智能家居设备支持列表:兼容的设备
  • 从零到一:AI大模型应用开发实战指南(Python、Prompt、RAG与低代码平台)
  • TPIC7710EVM评估板:汽车电子驻车制动系统开发实战指南
  • 诊断技术十年演进:从传统到智能化的突破
  • 基于Arduino与超声波传感器的TFT雷达扫描系统设计与实现
  • 古月学院课程代码揭秘:从零开始手写URDF模型的完整教程
  • 基于Java+Vue的旅游攻略分享系统架构设计与实践
  • 树莓派GUI开发实战:用Pyside6与gpiozero实现LED亮度控制
  • LTX2.3+ComfyUI:AI视频生成技术解析与漫剧创作实战指南
  • GenshinCelShaderURP实战教程:Nilou模型卡通渲染效果实现步骤详解
  • 打包 APK 时,报错:The destination folder does not exist or is not writeable
  • 树莓派PySide6 QML串口工具开发:从环境搭建到实战优化
  • Matlab实现风光水火储多能互补优化调度模型
  • AI编程驱动视频自动化生成:Claude Code与Cursor整合实践
  • Garth安全实践:保护Garmin账号认证信息的5个关键策略
  • 如何快速入门Windows-iotcore-samples:从环境搭建到第一个Blinky项目
  • 谜语大全 API 参数详解与请求优化最佳实践
  • 基于RP2040的极简时钟设计:驱动TFT屏实现无表盘指针动画
  • Arduino蓝牙串口通信协议解析与精简实现教程
  • DevOps实践指南:从CI/CD到文化转型
  • HTTPS性能优化实战:从TLS握手到HTTP/2的全链路提速指南
  • 从源码到运行:SoulSync开发者指南 — 架构解析与贡献教程