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 设置

  1. 链接错误

解决:确保所有依赖库都是相同架构(x86/x64)

  1. 路径问题

解决:使用绝对路径,避免空格和中文

```

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 安装路径

  1. 找不到 usrsctp.h

解决:确认 usrsctp 安装正确

  1. 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

  1. 确保所有依赖库使用相同的运行时库配置
相关推荐
界面开发小八哥1 小时前
界面控件DevExpress WPF v25.1预览 - 支持Windows 11系统强调色
windows·wpf·界面控件·devexpress·ui开发·.net 9
岫珩4 小时前
“由于启动计算机时出现了页面文件配置问题,Windows在你的计算机上创建了一个临时页面文件。。。”的问题解决
windows
李菠菜5 小时前
解决Windows系统下Git克隆时报错“unable to checkout working tree”的方法详解
windows·git
子非衣9 小时前
Windows云主机远程连接提示“出现了内部错误”
服务器·windows
剁椒排骨10 小时前
win11什么都不动之后一段时间黑屏桌面无法显示,但鼠标仍可移动,得要熄屏之后才能进入的四种解决方法
运维·windows·经验分享·计算机外设·win11·win10
李菠菜11 小时前
Windows Terminal 集成 Git Bash 的简洁配置指南
windows·git
大数据魔法师12 小时前
Hadoop生态圈框架部署 - Windows上部署Hadoop
大数据·hadoop·windows
江沉晚呤时13 小时前
深入了解C# List集合及两种常见排序算法:插入排序与堆排序
windows·sql·算法·oracle·c#·排序算法·mybatis
聂 可 以19 小时前
推荐几个可以免费下载视频的软件(Neat Download Manager、蜗牛下载助手、bilidown)
windows·开源软件
菜鸟射手1 天前
QT creater和vs2017文件路径问题
linux·c++·windows·qt