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] apiDebug1 defaultSnap./www/logo.png downloadRoot./www; secretsu6TiedN2rVAmBbIDX0aa0QTiBJLBdcf snapRoot./www/snap/ [cluster] origin_url retry_count3 timeout_sec15 [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_sec0 snap%s -rtsp_transport tcp -i %s -y -f mjpeg -frames:v 1 %s [general] broadcast_player_count_changed0 check_nvidia_dev1 enableVhost0 enable_ffmpeg_log0 flowThreshold1024 listen_ip:: maxStreamWaitMS15000 mediaServerIdpolaris mergeWriteMS0 resetWhenRePlay1 streamNoneReaderDelayMS20000 unready_frame_cache100 wait_add_track_ms3000 wait_audio_track_data_ms1000 wait_track_ready_ms10000 [hls] broadcastRecordTs0 deleteDelaySec10 fastRegister0 fileBufSize65536 segDelay0 segDur2 segKeep0 segNum3 segRetain5 [hook] alive_interval10.0 enable1 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 retry1 retry_delay3.0 stream_changed_schemasrtsp/rtmp/fmp4/ts/hls/hls.fmp4 timeoutSec30 [http] allow_cross_domains1 allow_ip_range charSetutf-8 dirMenu1 forbidCacheSuffix forwarded_ip_header keepAliveSecond30 maxReqSize40960 notFoundhtmlheadtitle404 Not Found/title/headbody bgcolorwhitecenterh1您访问的资源不存在/h1/centerhrcenterZLMediaKit(git hash:8ccb4e9/%aI,branch:master,build time:2024-11-07T10:34:19)/center/body/html port6080 rootPath./www sendBufSize65536 sslport4443 virtualPath [multicast] addrMax239.255.255.255 addrMin239.0.0.0 udpTTL64 [protocol] add_mute_audio1 auto_close0 continue_push_ms3000 enable_audio1 enable_fmp41 enable_hls1 enable_hls_fmp40 enable_mp40 enable_rtmp1 enable_rtsp1 enable_ts1 fmp4_demand0 hls_demand0 hls_save_path./www modify_stamp2 mp4_as_player0 mp4_max_second3600 mp4_save_path/home paced_sender_ms0 rtmp_demand0 rtsp_demand0 ts_demand0 [record] appNamerecord enableFmp40 fastStart0 fileBufSize65536 fileRepeat0 sampleMS500 [rtc] datachannel_echo0 externIP maxRtpCacheMS5000 maxRtpCacheSize2048 max_bitrate0 min_bitrate0 nackIntervalRatio1.0 nackMaxCount15 nackMaxMS3000 nackMaxSize2048 nackRtpSize8 port8000 preferredCodecAPCMA,PCMU,opus,mpeg4-generic preferredCodecVH264,H265,AV1,VP9,VP8 rembBitRate0 start_bitrate0 tcpPort8000 timeoutSec30 [rtmp] directProxy1 enhanced0 handshakeSecond15 keepAliveSecond15 port10935 sslport0 [rtp] audioMtuSize600 h264_stap_a1 lowLatency0 rtpMaxSize10 videoMtuSize1400 [rtp_proxy] dumpDir gop_cache1 h264_pt98 h265_pt99 opus_pt100 port10000 port_range30000-30500 ps_pt96 rtp_g711_dur_ms100 timeoutSec15 udp_recv_socket_buffer4194304 [rtsp] authBasic0 directProxy1 handshakeSecond15 keepAliveSecond15 lowLatency0 port5540 rtpTransportType-1 sslport0 [shell] maxReqSize1024 port0 [srt] latencyMul4 pktBufSize8192 port9000 timeoutSec5 ; } ---注意配置文件修改后需要重启容器/热重启也行五、API接口1. 访问管理界面 http://宿主机IP:880 2. API接口测试 http://宿主机IP:880/api/defaultAuth 3. 热重启 http://宿主机IP:880/api/reloadConfig?secretyour_custom_secret注意如果提示“在url路径中添加正确的secret参数/Required parameter missed: secret”只需要在请求路径最后增加?secretadmin123如果播放不了查看config.ini文件中[hook]中生成的一些IP访问地址把这些IP改成实际的SIP服务地址即可