live555 生成 Visual Studio 工程
1安装Visual Studio 工程如 Visual Studio 2022建议安装包含「使用 C 的桌面开发」工作负载以便后续编译 Live555 相关工程。下载地址Visual Studio 官网选择 Community 版本即可免费使用。安装时勾选「使用 C 的桌面开发」工作负载并确保包含 MSVC 编译器和 Windows SDK。2安装cmake从 CMake 官网 下载安装包选择 Windows x64 版本的 .msi 安装文件。安装时勾选「Add CMake to the system PATH」确保命令行中可直接使用 cmake 命令。安装完成后可在命令行执行cmake --version验证是否安装成功。3下载live555和CMAKE生成从 Live555 官网 下载最新源码包并解压然后在源码根目录执行以下命令生成 Visual Studio 工程3.1 下载源码从 Live555 官网 下载最新源码包live555-latest.tar.gz下载后解压到本地目录例如D:\live555。解压后确认目录中包含 BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment、testProgs 等子目录。3.2 下载Visual Studio 工程cmake下载 windows VS 2022 cmake 文档下载路径为https://download.csdn.net/download/qazwsxwtc/93326509?spm1001.2014.3001.5501。下载完成后将压缩包解压取出其中的 CMakeLists.txt 文件备用。3.3 cmake生成工程把下载的 CMakeLists.txt 放在与 live 同目录下即放在 project 目录中与 live 文件夹平级。目录结构如下3.3.1 ive555目录:live/ ├── BasicUsageEnvironment ├── groupsock ├── liveMedia ├── UsageEnvironment └── testProgs # 示例程序3.3.2 CMakelists.txt放置处project ├─ CMakeLists.txt └─ live/ # live555源码解压在这里3.3.3 执行cmake生成工程cd project mkdir build cd build cmake .. -G Visual Studio 17 2022 -A x64生成成功后在目录build/live555.sln用 Visual Studio 打开 build 目录下的解决方案文件.sln即可编译 Live555 相关工程。生成的工程为live555_solution ├─ Libraries │ ├─ UsageEnvironment │ ├─ BasicUsageEnvironment │ ├─ groupsock │ ├─ liveMedia │ └─ announceLib ├─ testserver │ ├─ mediaServerDemo │ ├─ proxyServerDemo │ └─ hlsProxyDemo └─ TestPrograms ├─ openRTSP ├─ playSIP ├─ live555Announce └─ ....4 问题4.1 testGSMStreamer工程编译不过因为 createNewGSMAudioSource 函数并没有在 Live555 库中实现。这是一个示例/模板代码意在展示如何构建 GSM 流媒体服务器但 Live555 官方库中不包含 GSM 音频的具体采集或文件读取实现。你需要自己实现这个函数或者使用其他已有的测试程序作为参考。4.1.1 解决方案一 自实现 createNewGSMAudioSource 函数简单示例从文件读取1. 新建一个文件 GSMAudioSource.cpp。2. 实现如下逻辑简化版实际需继承 FramedSource#include liveMedia.hh #include GroupsockHelper.hh // 简单的 GSM 文件源示例 class GSMAudioFileSource : public FramedSource { public: static GSMAudioFileSource* createNew(UsageEnvironment env, char const* fileName) { FILE* fid fopen(fileName, rb); if (!fid) return NULL; return new GSMAudioFileSource(env, fid); } virtual ~GSMAudioFileSource() { fclose(fFid); } protected: GSMAudioFileSource(UsageEnvironment env, FILE* fid) : FramedSource(env), fFid(fid) { } virtual void doGetNextFrame() { // GSM 帧大小通常为 33 字节 (全速率) 或 65 字节 (半速率等)具体取决于格式 // 这里假设每帧 33 字节实际需根据 GSM 文件格式调整 unsigned int frameSize 33; if (frameSize gt; fMaxSize) { fNumTruncatedBytes frameSize - fMaxSize; frameSize fMaxSize; } fFrameSize fread(fTo, 1, frameSize, fFid); if (fFrameSize 0) { handleClosure(); return; } // GSM 采样率通常为 8000Hz每帧 20ms fPresentationTime fNextPresentationTime; fNextPresentationTime timeval{0, 20000}; afterGetting(this); } private: FILE* fFid; }; // 实现 testGSMStreamer.cpp 中声明的函数 FramedSource* createNewGSMAudioSource(UsageEnvironment env) { // 请替换为你实际的 GSM 文件路径 return GSMAudioFileSource::createNew(env, test.gsm); }4.1.2 方案二 临时屏蔽该测试程序如果你不需要 GSM 支持可以在 CMakeLists.txt 或 VS 解决方案中排除 testGSMStreamer.cpp 的编译。具体做法在 CMakeLists.txt 中找到 testGSMStreamer 相关的 target 定义将其注释或删除或者在 Visual Studio 解决方案资源管理器中右键该工程选择「从项目中排除」。4.2 是否需要支持SSL4.2.1 支持选择当前提供的CMakelists.txt屏蔽了SSL的支持 如果需要支持ssl修改cmake文件中的如下这才是说明NO_OPENSSL # 新增这一行关闭openssl依赖去掉这行打开openssltarget_compile_definitions(live555 PRIVATE _WIN32 WIN32 _CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS NO_GETIFADDRS NO_OPENSSL # 新增这一行关闭openssl依赖去掉这行打开openssl )4.2.2 openssl 下载如果需要启用 SSL 支持需要先下载并安装 OpenSSL。推荐从 Win32 OpenSSL 官网 下载 Windows 版本安装包选择与 Visual Studio 编译环境匹配的版本建议选择 Win64 OpenSSL 的完整安装版例如 Win64 OpenSSL v3.x。安装时注意以下几点安装路径建议使用默认目录例如C:\Program Files\OpenSSL-Win64便于后续在 CMake 中引用。安装过程中选择「Copy OpenSSL DLLs to /bin directory」或「Copy OpenSSL DLLs to the Windows system directory」确保运行时能加载 OpenSSL 动态库。安装完成后确认系统环境变量OPENSSL_ROOT_DIR已指向 OpenSSL 安装目录或在 CMake 配置时手动指定该路径。安装完成后回到 CMakeLists.txt去掉NO_OPENSSL这一行重新执行 cmake 生成工程即可启用 SSL 支持。