ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

在 Windows 上从源码构建 Video2X Qt6 图形界面:完整编译与部署指南

在 Windows 上从源码构建 Video2X Qt6 图形界面:完整编译与部署指南 在 Windows 上从源码构建 Video2X Qt6 图形界面完整编译与部署指南【免费下载链接】video2xA machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018.项目地址: https://gitcode.com/GitHub_Trending/vi/video2x本文以 Video2X 官方构建文档 docs/book/src/building/windows-qt6.md 为骨架完整讲解在 Windows 上从源码编译 Video2X Qt6 图形界面GUI的每一步环境准备、克隆仓库、预构建libvideo2x共享库、获取 FFmpeg 运行库、使用 Qt Creator 构建以及用windeployqt部署运行时依赖并成功启动video2x-qt6.exe。读完本文你将能够在一台干净的 Windows 机器上独立复现整个构建链路并理解每一步背后的构建系统原理以仓库根目录 CMakeLists.txt 中的实现为准。一、构建前须知Video2X 6.x 的组件构成Video2X 6.0.0 起项目被完全重写为 C/C 实现见 README.md。在 6.x 架构下项目被拆分为多个可独立构建的组件libvideo2x核心 C/C 处理库负责视频解码、滤镜超分辨率、帧插值与编码封装了 FFmpeg、ncnnVulkan、Real-ESRGAN、Real-CUGAN、RIFE 等能力video2x CLI命令行前端源码位于 tools/video2x/src/video2x.cppVideo2X Qt6 GUI图形界面前端由独立的video2x-qt6仓库维护通过链接libvideo2x共享库工作。也就是说Qt6 GUI 并不是一个完全独立的程序它本质上是libvideo2x的一个图形化调用端。因此构建 GUI 前必须先把libvideo2x编译成共享库DLL这正是本文第 3 节要解决的问题。二、环境准备Prerequisites官方构建文档假设 Qt6 已安装到默认位置C:\Qt以下工具需要预先手动安装依赖说明Visual Studio 2022必须勾选Desktop development with C桌面 C 开发工作负载提供 MSVC 编译器工具链winget-cliWindows 包管理器命令行工具用于安装 Git 等辅助软件Qt6安装时勾选Qt6 with MSVC 2022 64-bit组件编译器套件必须与 MSVC 2022 匹配并勾选Qt Creator集成开发环境此外结合 README.md 中列出的硬件要求你的机器还需满足CPU预编译二进制要求支持 AVX2Intel Haswell 及更新、AMD Excavator 及更新从源码构建时同样建议选择带 AVX2 指令集的 CPUGPU必须支持 VulkanNVIDIA Kepler/GTX 600 系列及以上、AMD GCN 1.0/Radeon HD 7000 系列及以上、Intel HD Graphics 4000 及以上因为 ncnn 推理与 libplacebo 渲染均走 Vulkan 硬件管线。提示构建仅需要 MSVC 工具链 CMake Qt6Vulkan SDK 在构建 GUI 时并非必需项CLI 的构建才显式find_package(Vulkan)见下文源码分析但运行超分辨率/插值功能时必须有可用的 Vulkan 驱动。三、克隆仓库首先用 winget 安装 Git如尚未安装winget install -e --idGit.Git然后克隆video2x-qt6仓库。务必使用--recurse-submodules参数因为该项目通过 Git 子模块托管了大量第三方依赖ncnn、spdlog、Boost 以及 Real-ESRGAN/Real-CUGAN/RIFE 的 ncnn-Vulkan 封装库对应本仓库中的 third_party/ 目录结构缺少该参数会导致依赖缺失、构建失败git clone --recurse-submodules video2x-qt6 仓库地址 cd video2x-qt6克隆完成后进入仓库目录接下来需要为 GUI 准备其运行所依赖的库。四、准备依赖一先构建 libvideo2x 共享库Qt6 GUI 编译时需要libvideo2x的头文件与导入库.lib运行时需要其 DLL。官方构建文档明确要求在构建 GUI 之前先把 libvideo2x 构建为共享库并将产物放到third_party/libvideo2x-shared目录。libvideo2x的构建方式记录在 docs/book/src/building/windows.md 中其给出的核心命令如下在video2x主仓库根目录执行cmake -S . -B build -DUSE_SYSTEM_NCNNOFF -DUSE_SYSTEM_SPDLOGOFF -DUSE_SYSTEM_BOOSTOFF -DCMAKE_BUILD_TYPERelease -DCMAKE_INSTALL_PREFIXbuild/libvideo2x-shared cmake --build build --config Release --parallel --target install理解这条命令需要对照 CMakeLists.txt 中的实际构建逻辑共享库开关BUILD_SHARED_LIBS默认即为ONCMakeLists.txtlibvideo2x默认以动态库形式产出依赖开关顶层实际使用的选项名是VIDEO2X_USE_EXTERNAL_NCNN / VIDEO2X_USE_EXTERNAL_SPDLOG / VIDEO2X_USE_EXTERNAL_BOOSTCMakeLists.txt三者默认均为ON即优先使用系统提供的第三方库上面的命令将其关闭改为使用third_party下随子模块引入的源码ncnn、spdlog、Boost在本地构建适合不想额外安装系统级依赖的场景FFmpeg 的处理在 Windows 上libvideo2x直接从third_party/ffmpeg-shared目录链接avcodec、avfilter、avformat、avutil、swscale五个库CMakeLists.txt这正是下一步要手动下载 FFmpeg 共享包并重命名目录的原因模型文件安装install规则会把 models/ 下的全部模型Anime4K GLSL 着色器、Real-ESRGAN/Real-CUGAN/RIFE 的.param/.bin文件一并安装到数据目录CMakeLists.txt确保运行时能加载对应算法。命令执行完毕后libvideo2x的头文件、导入库与 DLL 会集中出现在build/libvideo2x-shared下。将整个目录内容复制到 GUI 仓库的third_party/libvideo2x-shared目录不存在则新建即完成 GUI 对核心库的依赖准备。五、准备依赖二获取 FFmpeg 共享运行库libvideo2x的解码、编码与像素格式转换全部依赖 FFmpegWindows 上以共享库DLL形式链接。构建文档给出的获取方式是下载 FFmpeg 官方 Windows 共享构建包full build shared 版本由 GyanD 维护发布版本号以变量形式管理以便升级# Versions of manually installed dependencies $ffmpegVersion 7.1 # Download and extract FFmpeg curl -Lo ffmpeg-shared.zip FFmpeg 7.1 full build shared 下载地址 Expand-Archive -Path ffmpeg-shared.zip -DestinationPath third_party Rename-Item -Path third_party/ffmpeg-$ffmpegVersion-full_build-shared -NewName ffmpeg-shared注意最后一步解压后必须把目录重命名为ffmpeg-shared。这是因为 CMakeLists.txt 中硬编码了third_party/ffmpeg-shared作为 FFmpeg 查找基准路径其下的include/头文件与lib/*.lib导入库会被用于编译链接。如果你使用其他版本如 7.0、7.1 之后的版本只需修改$ffmpegVersion变量并保持目录重命名规则一致即可。下载时请选择shared共享构建而非 static静态构建因为构建脚本按共享库方式链接并依赖 DLL 运行。六、在 Qt Creator 中构建 GUI 项目依赖准备就绪后进入构建阶段官方文档给出的流程极简但有效打开项目在 Qt Creator 中选择“打开项目”Open Project将 GUI 仓库根目录下的CMakeLists.txt文件作为项目文件打开。Qt Creator 会自动读取 CMake 配置并提示选择构建套件Kit选择正确的 Kit务必选择与安装的 Qt 版本匹配的MSVC 2022 64-bit套件例如Desktop Qt 6.8.0 MSVC2022 64bit否则会因编译器/Qt 架构不匹配而配置失败执行构建点击窗口左下角的锤子图标Build即可开始编译。CMake 会先重新生成配置再调用 MSVC 编译器编译 GUI 源码并链接libvideo2x与 Qt6 库产物位置构建完成后可执行文件位于build目录下典型路径形如build\Desktop_Qt_6_8_0_MSVC2022_64bit-Release\video2x-qt6.exe该路径同时被后续部署命令引用需保持一致。从源码结构看GUI 通过 CMake 的target_link_libraries与libvideo2x建立链接关系因此第 4 节中third_party/libvideo2x-shared目录的完备性头文件 导入库 DLL 三者齐备直接决定此步能否成功。七、部署运行时依赖并启动应用video2x-qt6.exe编译成功后并不能直接双击运行因为它的运行还依赖大量 DLLQt6 核心模块Core、Gui、Widgets 等、libvideo2x.dll、FFmpeg DLL 以及 ncnn 的 Vulkan 运行时。官方构建文档给出了两条部署步骤。7.1 清理发布目录在复制依赖之前先进入build目录下对应的 Release 子目录即video2x-qt6.exe所在目录删除其中除video2x-qt6.exe和.qm文件以外的所有内容。.qm是 Qt 的翻译文件必须保留——Video2X Qt6 GUI 内置了英语、简体中文、日语、葡萄牙语、法语、德语等多语言支持见 README.md删除后界面将失去本地化能力。7.2 使用 windeployqt 部署 Qt 运行时windeployqt是 Qt 官方提供的部署工具会自动分析可执行文件的依赖并拷贝所需的 Qt DLL、插件与翻译文件。官方文档给出的命令以 Qt 6.8.0 为例C:\Qt\6.8.0\msvc2022_64\bin\windeployqt.exe --release --compiler-runtime .\build\Desktop_Qt_6_8_0_MSVC2022_64bit-Release\video2x-qt6.exe参数说明--release按 Release 模式部署与构建配置一致避免混入 Debug 运行库--compiler-runtime同时拷贝 MSVC 运行时vcruntime、msvcp等保证在没有安装 Visual Studio 运行库的机器上也能运行路径中的Desktop_Qt_6_8_0_MSVC2022_64bit-Release需与你实际构建输出目录一致若安装的 Qt 版本不同如 6.7、6.9请同步修改C:\Qt\版本\msvc2022_64\bin前缀。7.3 部署 libvideo2x 共享库最后把第 4 节准备好的third_party/libvideo2x-shared目录内容复制到video2x-qt6.exe所在的发布目录但需要排除三个项目include目录头文件仅编译期需要运行时不需要libvideo2x.lib导入库仅链接期需要运行时不需要video2x.exe这是 CLI 命令行程序属于另一个前端GUI 场景下不需要。需要一并复制的是libvideo2x.dll及其依赖的 FFmpeg DLL、ncnn DLL 等libvideo2x的 install 规则本身也会把ffmpeg_base_path/bin/*.dll与ncnn.dll拷贝到 bin 目录见 CMakeLists.txt。你可以通过 libvideo2x.h 了解该库对外暴露的 C API进一步确认 GUI 与核心库的交互边界。7.4 启动验证完成以上步骤后双击video2x-qt6.exe即可启动 GUI。若启动失败优先检查是否缺少某个 DLL可用进程监控工具或直接观察报错信息回到 7.2/7.3 补全对应文件。八、备选路径直接使用官方安装包如果你不需要定制源码只是想快速获得可用的 GUI则完全不必走上述编译流程。docs/book/src/installing/windows-qt6.md 提供了更简单的方案直接下载官方发布的安装程序video2x-qt6-windows-amd64-installer.exe双击运行跟随向导选择安装目录与是否创建桌面快捷方式完成后双击桌面快捷方式即可使用。从源码构建更适合需要二次开发、调试或定制构建选项的开发者。九、常见问题与排查Q1Qt Creator 配置时报找不到libvideo2x检查third_party/libvideo2x-shared目录是否完整存在且包含头文件、libvideo2x.lib与libvideo2x.dll确认构建 libvideo2x 时使用的 MSVC 版本与 Qt 套件的 MSVC 版本一致均为 MSVC 2022 x64。Q2运行提示缺少avcodec-*.dll等 FFmpeg 库确认 FFmpeg 共享包已正确重命名为third_party/ffmpeg-shared且其bin目录下的全部 DLL 已随libvideo2x-shared一起复制到发布目录。若仍然缺失可直接从 FFmpeg 共享包的bin目录手动补拷。Q3构建时找不到ncnn相关依赖--recurse-submodules克隆是否完整。本仓库对应的third_party/ncnn、third_party/librealesrgan_ncnn_vulkan、third_party/librealcugan_ncnn_vulkan、third_party/librife_ncnn_vulkan等子模块缺一不可缺少时执行git submodule update --init --recursive补齐后重新配置。Q4程序启动后无法进行超分辨率/插值处理确认 GPU 支持 Vulkan 且驱动已更新libvideo2x的 ncnn 推理路径依赖 Vulkan 设备对应本仓库中的filter_realcugan、filter_realesrgan、interpolator_rife等实现见 src/filter_realcugan.cpp 等文件。总结从源码构建 Video2X Qt6 GUI 的本质是一条“先库后壳”的依赖链先编译libvideo2x共享库并安放至third_party/libvideo2x-shared再获取 FFmpeg 共享包并重命名为third_party/ffmpeg-shared随后在 Qt Creator 中以 MSVC 2022 64-bit 套件构建 GUI最后用windeployqt部署 Qt 运行时、复制 libvideo2x 及 FFmpeg DLL 完成收尾。理解 CMakeLists.txt 中BUILD_SHARED_LIBS、VIDEO2X_USE_EXTERNAL_*等选项的语义与third_party/ffmpeg-shared硬编码路径能帮助你在版本升级、路径变更等场景下快速定位并解决问题。【免费下载链接】video2xA machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018.项目地址: https://gitcode.com/GitHub_Trending/vi/video2x创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表