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

ZLMediaKit Windows 编译指南

 1 ZLMediaKit Windows 一般编译指南

## 1. 环境准备

### 1.1 必需工具
```plaintext
1. Visual Studio 2019 或更高版本
2. CMake (3.15+)
3. git
4. vcpkg (包管理器)
```

### 1.2 安装步骤

```mermaid
flowchart TB
    A[安装 Visual Studio] --> B[安装 CMake]
    B --> C[安装 Git]
    C --> D[安装 vcpkg]
    D --> E[配置环境变量]
```

#### Visual Studio 安装选项
```plaintext
必选组件:
- MSVC C++ 构建工具
- Windows 10 SDK
- CMake 工具
- Git for Windows
```

#### vcpkg 安装
```powershell
# 克隆 vcpkg
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg

# 运行安装脚本
.\bootstrap-vcpkg.bat

# 集成到 Visual Studio
.\vcpkg integrate install
```

## 2. 获取源码

### 2.1 克隆仓库
```powershell
# 克隆主仓库
git clone https://github.com/ZLMediaKit/ZLMediaKit.git
cd ZLMediaKit

# 更新子模块
git submodule update --init --recursive
```

### 2.2 目录结构
```plaintext
ZLMediaKit/
├── 3rdpart/          # 第三方库
├── api/              # API 接口
├── cmake/            # CMake 配置文件
├── server/           # 服务器实现
├── src/              # 核心源码
└── tests/            # 测试用例
```

## 3. 安装依赖

### 3.1 使用 vcpkg 安装依赖
```powershell
# 安装必要的库
vcpkg install openssl:x64-windows
vcpkg install ffmpeg:x64-windows
vcpkg install sdl2:x64-windows
```

### 3.2 依赖列表
```plaintext
必需依赖:
- OpenSSL
- FFmpeg
- SDL2 (可选,用于测试)

可选依赖:
- faac
- x264
```

## 4. 编译配置

### 4.1 CMake 配置
```powershell
# 创建构建目录
mkdir build
cd build

# 配置 CMake (Release 模式)
cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake -DENABLE_TESTS=ON -DENABLE_API=ON -DENABLE_SERVER=ON -DCMAKE_BUILD_TYPE=Release
```

### 4.2 CMake 选项说明
```cmake
# 主要编译选项
option(ENABLE_TESTS "编译测试用例" ON)
option(ENABLE_API "编译 API" ON)
option(ENABLE_SERVER "编译服务器" ON)
option(ENABLE_RTPPROXY "启用 RTP 代理" OFF)
```

## 5. 编译步骤

### 5.1 使用命令行编译
```powershell
# 在 build 目录下执行
cmake --build . --config Release

# 或使用 MSBuild
msbuild ZLMediaKit.sln /p:Configuration=Release
```

### 5.2 使用 Visual Studio 编译
```mermaid
flowchart LR
    A[打开解决方案] --> B[选择 Release 配置]
    B --> C[生成解决方案]
    C --> D[检查输出目录]
```

## 6. 常见问题解决

### 6.1 编译错误
```plaintext
1. 找不到依赖库
解决:检查 vcpkg 安装路径和 CMAKE_TOOLCHAIN_FILE 设置

2. 链接错误
解决:确保所有依赖库都是相同架构(x86/x64)

3. 路径问题
解决:使用绝对路径,避免空格和中文
```

### 6.2 运行问题
```powershell
# 检查 DLL 依赖
dumpbin /dependents MediaServer.exe

# 确保依赖 DLL 在路径中
echo %PATH%
```

## 7. 测试验证

### 7.1 运行测试用例
```powershell
# 进入测试程序目录
cd build/tests/Release

# 运行测试
.\test_server.exe
```

### 7.2 服务器测试
```powershell
# 运行服务器
cd build/release/MediaServer
.\MediaServer.exe
```

## 8. 发布准备

### 8.1 文件清单
```plaintext
发布必需文件:
├── MediaServer.exe
├── config.ini
├── www/
└── DLL文件/
    ├── libssl-1_1-x64.dll
    ├── libcrypto-1_1-x64.dll
    └── [其他依赖DLL]
```

### 8.2 配置文件
```ini
[zlmediakit]
max_streams=50
stream_timeout=15
retry_count=3
```

## 9. 性能优化

### 9.1 编译优化
```cmake
# CMake 优化选项
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
```

### 9.2 运行优化
```plaintext
1. 使用 Release 版本
2. 开启硬件加速
3. 调整缓冲区大小
4. 优化网络参数
```

2 . ZLMediaKit WebRTC 支持编译指南

## 1. WebRTC 支持说明

```mermaid
flowchart TB
    subgraph "ZLMediaKit WebRTC"
        A["RTMP/RTSP/HLS"] --> B["Media Server"]
        C["WebRTC"] -.-> B
        B --> D["Browser"]
        
        style C stroke-dasharray: 5 5
    end
```

### 1.1 默认编译
```plaintext
❌ 默认编译配置不包含 WebRTC 支持
❌ 标准编译命令无法启用 WebRTC 功能
```

### 1.2 WebRTC 依赖
```plaintext
额外依赖:
- libsrtp
- openssl
- usrsctp
- json
```

## 2. 启用 WebRTC 的编译步骤

### 2.1 安装额外依赖加上上面的

vcpkg install openssl:x64-windows
vcpkg install ffmpeg:x64-windows
vcpkg install sdl2:x64-windows
```powershell
# 使用 vcpkg 安装必要的库
vcpkg install libsrtp:x64-windows
vcpkg install usrsctp:x64-windows
vcpkg install nlohmann-json:x64-windows
```

### 2.2 修改 CMake 命令
```powershell
cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake -DENABLE_TESTS=ON -DENABLE_API=ON -DENABLE_SERVER=ON -DENABLE_WEBRTC=ON -DCMAKE_BUILD_TYPE=Release
```

关键参数:
```plaintext
-DENABLE_WEBRTC=ON    # 启用 WebRTC 支持
```

## 3. 编译注意事项

### 3.1 依赖版本要求
```plaintext
最低版本要求:
- libsrtp >= 2.2.0
- openssl >= 1.1.1
- usrsctp >= 0.9.3
- nlohmann-json >= 3.9.0
```

### 3.2 常见编译错误
```plaintext
1. 找不到 srtp.h
解决:检查 libsrtp 安装路径

2. 找不到 usrsctp.h
解决:确认 usrsctp 安装正确

3. SSL 相关错误
解决:确保 OpenSSL 版本正确
```

## 4. 配置 WebRTC

### 4.1 配置文件设置
```ini
[webrtc]
# WebRTC 服务器配置
enabled=1
# 端口配置
port=8000
# STUN 服务器
stun_server=stun:stun.l.google.com:19302
# 启用 DTLS
enable_dtls=1
```

### 4.2 证书配置
```bash
# 生成证书
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

# 配置文件中指定证书路径
[webrtc]
cert_file=cert.pem
key_file=key.pem
```

## 5. 验证 WebRTC 功能

### 5.1 测试页面
```html
<!DOCTYPE html>
<html>
<head>
    <title>WebRTC Test</title>
</head>
<body>
    <video id="video" autoplay playsinline></video>
    <script>
        // WebRTC 连接代码
        const pc = new RTCPeerConnection();
        // ... 连接逻辑
    </script>
</body>
</html>

编译遇到问题解决

usrsctp.lib(user_socket.c.obj) : error LNK2019: 无法解析的外部符号 __imp__ftime64,函数 ftime 中引用了该符号

vcpkg install usrsctp:x64-windows-static   

安装静态库

// 在 Visual Studio 项目中:  
1. 右键项目 → 属性 → C/C++ → 代码生成  
2. 检查 "运行时库" 设置:  
   - 若使用 usrsctp 的静态库,选择 /MT 或 /MTd  
   - 若使用 DLL 版,选择 /MD 或 /MDd  
3. 确保所有依赖库使用相同的运行时库配置


http://www.kler.cn/a/554961.html

相关文章:

  • linux 搭建nfs服务(共享文件夹)
  • 从Majorana 1芯片看微软量子计算路径及竞品对比分析
  • android怎么卸载系统应用
  • 强化学习笔记之引论
  • 【数据分析】3 数据分析成长之路
  • three.js之特殊材质效果
  • VMware虚拟机打不开Ubuntu22.04,是否从库中移出Ubuntu_22.04_bak_1 64位.vmx 解决方法
  • Unity面板介绍_Project工程面板(23.1.1)
  • 深度学习在医疗影像分析中的革命性应用
  • [DeepSeek]一、DeepSeek+Dify创建工作流
  • python-leetcode 39.二叉树的直径
  • HTTP常见状态码和HTTP的发展
  • PLC数据采集网关(三格电子)
  • DeepSeek学习
  • NPM如何更换淘宝镜像——Node.js国内镜像配置教程
  • 「JVS更新日志」低代码、ERP应用、智能BI、智能排产2.19更新说明
  • Linux 实操篇 组管理和权限管理、定时任务调度、Linux磁盘分区和挂载
  • Redis 中列表(List)常见命令详解
  • 抖音试水AI分身;腾讯 AI 战略调整架构;百度旗下小度官宣接入DeepSeek...|网易数智日报
  • 网络安全防护