1. 为什么选择ZLMediaKit搭建流媒体服务第一次接触流媒体服务器开发时我和很多新手一样被各种专业术语搞得晕头转向。直到发现了ZLMediaKit这个宝藏项目它就像Windows平台上的瑞士军刀让流媒体服务搭建变得异常简单。相比其他只能在Linux运行的流媒体服务器ZLMediaKit对Windows的原生支持简直是开发者的福音。记得去年我接了个智能家居监控项目需要在Windows服务器上实时转发200多路摄像头视频。当时尝试了各种方案要么配置复杂得让人崩溃要么性能差到画面卡成PPT。后来用ZLMediaKit重写服务端只用了三天就完成了部署至今稳定运行了8个月零故障。这种实战验证过的可靠性正是我推荐它的理由。核心优势你可能不知道单机支持5000并发连接实测i5处理器8G内存环境延迟控制在200ms以内比同类产品低30%内置HLS/RTMP/RTSP等多种协议转换完全开源且文档齐全GitHub星标超5k2. 环境准备避开我踩过的那些坑2.1 开发工具全家桶第一次配置环境时我像个无头苍蝇似的装了十几个软件包结果各种版本冲突。现在给你总结最精简的方案Visual Studio 2019社区版完全够用安装时务必勾选使用C的桌面开发CMake 3.20官网下载.msi安装包安装时勾选Add to PATHOpenSSL 1.1.1建议选Win32版本兼容性更好# 验证工具是否安装成功 cmake --version # 应显示3.20 cl # 运行VS开发人员命令提示符输入应显示MSVC编译器信息2.2 依赖库的玄学问题官方文档说只需要OpenSSL但实际开发中我发现这几个库也得备着FFmpeg处理MP4录制时必需下载shared版本SDL2测试播放器需要注意下载VC版本有个坑我踩了三次这些库的路径绝对不能有中文或空格建议统一放在C:\SDK下目录结构这样安排SDK/ ├── openssl/ ├── ffmpeg/ └── SDL2/3. 编译实战从CMake到VS工程3.1 CMake配置的隐藏技巧打开CMake GUI时别急着点Configure先设置这两个关键参数OPENSSL_ROOT_DIR指向你的OpenSSL安装目录如C:/SDK/opensslENABLE_X264如果要H.264编码就勾选第一次生成可能会报错找不到OpenSSL别慌这是CMake的经典bug。解决方法删除CMakeCache.txt手动指定OpenSSL路径set OPENSSL_ROOT_DIRC:/SDK/openssl3.2 VS编译的加速秘籍用VS打开生成的sln文件后试试我的编译优化三连并行编译右键解决方案→属性→最大并行项目数设为CPU核心数1Release模式Debug模式慢得像蜗牛测试时再用只编译MediaServer右键该项目→设为启动项目编译过程中如果遇到LNK2005重复定义错误八成是库链接顺序问题。在项目属性→链接器→输入里调整顺序把openssl的lib文件放最前面。4. 服务部署让服务器跑起来4.1 配置文件的黑科技编译生成的MediaServer.exe在release/windows/Debug目录但直接运行会崩溃需要把ZLMediaKit/conf/config.ini复制过来。这几个参数建议修改[rtmp] port1935 # 改成未被占用的端口 [hls] segNum5 # HLS分片数影响延迟 [record] fastStart1 # MP4快速启动模式有个隐藏功能在config.ini同目录创建push.json可以设置自动推流到其他平台格式如下{ channels: [ { url: rtmp://其他服务器地址, secret: 你的推流密钥 } ] }4.2 开机自启的骚操作想让服务在后台运行用这个vbs脚本保存为start.vbsSet ws CreateObject(Wscript.Shell) ws.run cmd /c MediaServer.exe, vbhide然后把它放到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup实现开机启动。5. 推流与播放从理论到实战5.1 OBS推流设置指南在OBS设置→推流中这样配置服务类型自定义服务器rtmp://localhost/live串流密钥任意数字如123避坑提示如果OBS提示连接失败检查防火墙是否放行1935端口MediaServer是否正常运行看控制台输出推流地址是否包含live/前缀5.2 用FFmpeg实现无人值守推流这个命令可以把监控摄像头变成网络直播ffmpeg -i rtsp://摄像头地址 -c copy -f flv rtmp://localhost/live/0加个-re参数能模拟实时流适合测试ffmpeg -re -i test.mp4 -c copy -f flv rtmp://localhost/live/06. 高级玩法点播与API控制6.1 搭建私人视频网站把MP4文件扔到www/record目录就能通过URL访问RTMP点播rtmp://服务器IP/record/文件名HLS点播http://服务器IP/record/文件名/hls.m3u8我做的自动化脚本保存为watchdog.bat可以监控文件夹自动转码echo off :loop ffmpeg -i new_video.mp4 -c:v libx264 -profile:v high -preset fast new_video_conv.mp4 move new_video_conv.mp4 www/record/ timeout /t 5 goto loop6.2 REST API实战示例ZLMediaKit内置了HTTP API用curl就能控制# 获取服务器状态 curl http://127.0.0.1:8080/api/statistic # 踢掉指定客户端 curl -X POST -d {schema:rtsp,id:客户端ID} http://127.0.0.1:8080/api/kick_session最近我给公司做的监控系统就基于这些API实现了自动踢掉异常连接、实时统计流量等功能。有个细节要注意API返回的JSON里code为0表示成功负数都是错误码。