ZLMediaKit 最新 9.0(master 分支)源码下载完整教程
重要说明
ZLMediaKitmaster 分支就是 9.0 开发主线,自带完整 ICE-Full WebRTC 客户端拉流能力;8.0 稳定分支无该功能,不要拉 8.0 分支。禁止直接下载 ZIP 压缩包,第三方子模块会缺失,编译必报错,必须用 Git 克隆。
一、国内推荐(Gitee 镜像,速度快)
# --depth 1 只拉最新提交,加速下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git cd ZLMediaKit # 拉取第三方依赖子模块(必须执行) git submodule update --init --recursive2. 后续更新到最新代码
cd ZLMediaKit git pull git submodule update --init --recursive二、海外 GitHub 官方源(网络好再用)
git clone --depth 1 https://github.com/ZLMediaKit/ZLMediaKit.git cd ZLMediaKit git submodule update --init --recursive三、Linux 编译(开启 WebRTC 客户端核心功能)
1. 先安装依赖(Ubuntu/Debian)
bash
运行
sudo apt update sudo apt install git cmake build-essential libssl-dev libsrtp2-dev2. 编译(必须加-DENABLE_WEBRTC=true)
bash
运行
mkdir build && cd build # 开启WebRTC,才能使用ZLM作为WebRTC客户端拉远端流 cmake .. -DENABLE_WEBRTC=true # 多核编译,nproc自动获取CPU核心数 make -j$(nproc)3. 编译完成程序路径
release/linux/Debug/MediaServer
四、关键注意点
- 分支区分
master= 9.0 最新版:支持 ZLM 主动拉 WebRTC 流(你需要的功能)8.0分支:仅 ICE-Lite,只能当 WebRTC 服务端,不能拉外部 WebRTC
- 子模块命令
git submodule update --init --recursive缺一不可,缺了会编译失败 - WebRTC 依赖:OpenSSL ≥1.1.1k、libsrtp,系统自带版本不够要手动编译升级
- 公网部署务必修改
conf/rtc.ini里externIP=你的公网IP,否则外网 WebRTC 穿透失败
=============================做流媒体服务器================================
Windows (ffmpeg/OBS 推 RTMP) → Ubuntu MediaServer → Ubuntu app_webrtc_test (WebRTC 拉 AAC) 1. 确认 Ubuntu 局域网 IP 在 Ubuntu 上执行: hostname -I 假设得到 192.168.1.100(后面示例都用这个,请换成你的实际 IP)。 2. 配置 MediaServer(Ubuntu,只需做一次) 编辑 MediaServer 实际使用的 config.ini(一般在 release/linux/Release/config.ini): [rtc] externIP=192.168.1.100 # Ubuntu 局域网 IP [http] port=80 # 若 80 需 root,可改为 8080 改完后重启 MediaServer。 若 HTTP 用 8080,后面 WebRTC URL 里端口也要写成 8080。 3. Ubuntu 放行端口(如有防火墙) sudo ufw allow 1935/tcp # RTMP 推流(Windows → Ubuntu) sudo ufw allow 80/tcp # HTTP / WHEP(或 8080) sudo ufw allow 8000/udp sudo ufw allow 8000/tcp # WebRTC 媒体 sudo ufw allow 3478/udp sudo ufw allow 3478/tcp # ICE 4. Windows 推流到 Ubuntu 在 Windows 安装 ffmpeg 后,在 cmd/PowerShell 执行: 纯 AAC 测试流: ffmpeg -re -f lavfi -i "sine=frequency=1000" -c:a aac -ar 44100 -b:a 64k -f flv rtmp://192.168.1.100:1935/live/test 或用本地文件: ffmpeg -re -i test.mp4 -c:v copy -c:a aac -f flv rtmp://192.168.1.100:1935/live/test 推流窗口需保持运行。流名固定为:app=live,stream=test。 拉流播放测试:ffplay rtmp://192.168.1.100:1935/live/test