尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ZLMediaKit实用指南:源码编译到首播流,10分钟内打通推流与排错

ZLMediaKit实用指南:源码编译到首播流,10分钟内打通推流与排错 ZLMediaKit实用指南源码编译到首播流10分钟内打通推流与排错【免费下载链接】ZLMediaKitWebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT/STUN/TURN server and client framework based on C11项目地址: https://gitcode.com/GitHub_Trending/zl/ZLMediaKit想让摄像头的RTSP画面推到网页上播或者一路RTMP源同时转发成HLS、HTTP-FLV给不同客户端ZLMediaKit是一个C11流媒体服务器框架RTSP、RTMP、HTTP-FLV、HLS、WebRTC、SRT、GB28181多协议推拉流都内置了带协议互转、录制、HTTP API与WebHook钩子可以直接部署成直播服务。 项目速览推拉流、转协议、录制、截图一套服务端能力不用自己写协议代码一路流进、多协议出各协议之间按需互转播放端用什么协议就出什么协议内置RESTful API和WebHook钩子任何语言的业务系统都能调Linux、Windows、macOS、Android可跑x86和ARM都行附带C API可以当成SDK链进你自己的产品从源码到第一条流新机器上只需要编译器工具链和CMake四步拿到能收流的进程sudo apt install build-essential cmake git # 装构建工具 git clone https://gitcode.com/GitHub_Trending/zl/ZLMediaKit # 拉源码 cd ZLMediaKit mkdir build cd build cmake .. # 默认Debug把配置样例拷到输出目录 make -j$(nproc)产物在release/linux/Debug/MediaServer进程默认加载同目录的config.inicmake时会把 conf/config.ini 拷过去后续改配置改这份就行./release/linux/Debug/MediaServer启动后默认监听HTTP 80、RTMP 1935跑一句curl 127.0.0.1/index/api/getServerConfig返回JSON即表示服务可用。核心能力拆解RTMP / HTTP-FLV最常用的推拉流组合src/Rtmp/ 里有完整协议栈、推流客户端和FLV分流器。推流到rtmp://127.0.0.1:1935/live/test后浏览器直接访问http://127.0.0.1/live/test.flv无需二次转推。RTSPsrc/Rtsp/ 实现服务器、播放器、推流客户端三种角色RTP走TCP、UDP、组播都支持默认端口554。服务端已有的流可以用rtsp://127.0.0.1:554/live/test直接播。WebRTCwebrtc/ 是完整ICE/DTLS/SRTP协商栈主打浏览器低延迟播放。8000号UDP和TCP端口必须放通NAT后面做端口映射时外网映射端口必须和监听端口一致。RTP代理与GB28181src/Rtp/ 接收国标设备直发的PS/TS流解封装成标准流后再转成任意协议默认监听10000。场景实操拉取内网摄像头流录制并网页播放以一台RTSP地址为rtsp://192.168.1.64:554/stream1的摄像头为例。先用API让服务器代拉并挂起这路流curl 127.0.0.1/index/api/addStreamProxy?vhost__defaultVhost__appcamerastreamcam01urlrtsp://192.168.1.64:554/stream1服务端自动转出多协议网页播http://服务器IP/live/camera/cam01.flv移动端播http://服务器IP/live/camera/cam01/hls.m3u8。需要落盘存留时调录制接口curl 127.0.0.1/index/api/startRecord?schemartspvhost__defaultVhost__appcamerastreamcam01mp4_save_path./record 调参与运维以下开关都在程序目录的config.ini里改改完重启生效protocol.enable_hls/protocol.enable_mp4转协议开关流上线后自动产出HLS切片或MP4protocol.paced_sender_ms推流突发不均时开启平滑发送代价是CPU略涨rtp_proxy.port_rangeRTP与RTSP的UDP随机端口范围防火墙要整段放行监控走/index/api/下的接口路径直接拼在HTTP端口上getStatistic进程CPU、内存、带宽getMediaList当前所有流与在线人数getServerConfig/setServerConfig在线读、改配置close_stream强制关闭指定流 高频排错现象WebRTC页面始终连不上无音无画→ 可能原因8000号UDP被NAT或防火墙拦截或外网映射端口与服务器监听端口不一致。 → 定位服务器上执行ss -ulnp | grep 8000确认监听再看映射表是否同端口。现象推流成功浏览器flv只有声音没有画面→ 可能原因源流是H265编码浏览器不支持硬解而AAC音频正常。 → 定位调getMediaInfo查看流的编码确认是H265就换H264转推或改用WebRTC播放。现象流已上线但hls.m3u8返回404→ 可能原因enable_hls为0切片从未生成。 → 定位grep enable_hls config.ini改为1后重启再请求。进阶入口推播放走通后下一步是二次开发把 api/include/ 下的C API链进自有程序当SDK用录制模块位于src/Record/MP4、HLS、TS三种封装的读写实现都可以直接参考流的上下线要通知业务系统时看server/WebHook.cpp的钩子分发逻辑即可。【免费下载链接】ZLMediaKitWebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT/STUN/TURN server and client framework based on C11项目地址: https://gitcode.com/GitHub_Trending/zl/ZLMediaKit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表