
音视频视频桌面应用【免费下载链接】mpc-hcMPC-HCs main repository. For support use our Trac: https://trac.mpc-hc.org/项目地址https://gitcode.com/gh_mirrors/mpc/mpc-hc点击查看免费下载本篇指南以仓库官方文档 docs/Compilation.md 为主体完整讲解在 Windows 上从源码编译 Media Player Classic - Home CinemaMPC-HC所需的全部步骤Visual Studio 与 MSYS2/GCC 双工具链环境准备、build.user.bat个性化配置、Git 克隆与子模块同步、通过 IDE 或build.bat命令行完成主程序/图标库/语言资源/独立滤镜的构建以及基于 Inno Setup 生成安装程序。读完本文你将能够独立完成一次从「空系统」到「可分发安装包」的完整 MPC-HC 构建并理解构建脚本与版本号生成的底层原理。一、编译总览需要哪些工具链MPC-HC 的构建不是一个「装一个 IDE 就能编译」的项目它同时依赖两条工具链工具链用途关键组件Visual Studio 工具链编译绝大部分 C 代码主程序、滤镜、库Visual C、Windows 8.1 SDK、MFC/ATL、DirectX SDK (June 2010)MSYS2 / GCC 工具链提供bash、make、pkg-config、yasm、MinGW 等辅助工具MSYS2、MinGW、YASM 汇编器Git for Windows克隆源码、获取版本号Git 命令行工具Inno Setup可选构建最终安装程序Inno Setup Unicode 5.5.9 或更新这两条工具链之所以缺一不可从源码结构上可以找到证据项目中的 YASM 汇编集成如 src/YASM.bat、src/YASM.props依赖 MSYS2 环境中的yasm.exe来处理.asm汇编源文件而版本号生成脚本 version.sh 则依赖bash.exe来自 Git for Windows 或 MSYS2来执行。构建脚本 common.bat 的:SubPreBuild例程会检查MPCHC_MINGW32、MPCHC_MINGW64、MPCHC_MSYS三个环境变量对应的目录是否存在任何一项缺失都会导致build.bat报Not all build dependencies were found并退出。二、通用准备安装 Git for Windows无论你打算用 IDE 还是命令行构建第一步都是安装 Git for Windows官网 git-for-windows.github.io。安装时选择Use Git from the Windows command prompt这一项。如果你选择了Use Git from Git Bash only不加入系统 PATH也不是不行但必须在build.user.bat中显式设置MPCHC_GIT变量指向 Git 的安装目录否则后续update_version.bat无法调用git命令生成版本号详见下文「build.user.bat 配置」。三、Part A准备 Visual Studio 环境支持的版本与安装要点官方支持Visual Studio 2017和Visual Studio 2015任意版本即可Community 版也能用。安装时务必勾选以下组件Visual C工作负载Windows 8.1 SDK——构建脚本中WINVER0x0601、_WIN32_WINNT0x0601等宏见 src/common.props针对 Windows 7 及以上系统定义而 Windows 8.1 SDK 是官方文档要求的目标 SDKMFC and ATL support——MPC-HC 的界面大量使用 MFC如MainFrm、各PPage*属性页类缺少该组件将直接编译失败装完后通过 Microsoft Update 安装全部可用更新。DirectX SDK (June 2010)下载并安装 DirectX SDKJune 2010。它是编译与打包阶段必需的构建脚本会从%DXSDK_DIR%\Redist中解压d3dx9_43.dllMPC_DX_SDK_NUMBER定义为 43见 include/mpc-hc_config.h并复制d3dcompiler_47.dllMPC_D3D_COMPILER_VERSION定义为 47到输出目录。VS2017 安装路径的自动检测对于 VS2017构建脚本会优先尝试自动检测安装路径common.bat的:SubVSPath例程调用 Visual Studio Installer 自带的vswhere.exe查找安装了 MSBuild、ATL/MFC、VC 工具集的实例并取installationPath。如果自动检测失败你需要在build.user.bat中手动指定例如SET MPCHC_VS_PATH%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\四、Part B准备 GCC 环境MSYS2 MinGW YASM1. 安装 MSYS2从 msys2.org 下载 MSYS264 位系统建议选择 64 位版本并安装到C:\MSYS\官方文档的后续命令均以此路径为前提你也可以装到别处但要记得同步修改build.user.bat。2. 首次启动与软件包安装运行msys2_shell.bat如果不是用安装器安装的首次运行后需要重启 MSYS2然后依次执行pacman -Syu pacman -Su pacman -S make pkg-config以上是最小依赖集合。make与pkg-config主要服务于仓库中通过 Makefile 方式构建的第三方库例如 LAV Filters 子模块中的 FFmpeg 相关构建你也可以按需安装更多软件包。3. 安装 YASM 汇编器下载对应位数的 YASM改名为yasm.exe并放入C:\MSYS\usr\bin32 位yasm-1.3.0-win32.exe64 位yasm-1.3.0-win64.exe推荐YASM 被 Visual Studio 项目用作自定义构建工具MSBuild 通过src\YASM.bat转发调用yasm.exesrc/YASM.props 中定义了命令行模板与 Win32/x64、Debug 的平台/配置切换负责将项目中的汇编源文件如src/DSUtil/vd_asm.cpp对应的汇编实现汇编成.obj。若yasm.exe不在 MSYS2 路径中相关项目会编译失败。4. 安装 MinGW从 files.1f0.de/mingw 下载并解压 MinGW 到C:\MSYS\mingw\。官方建议使用这个独立分发包而非 MSYS2 自带版本可以理解为对具体编译器版本的锁定确保产物一致。如果你把 MinGW 装到了其他目录后续build.user.bat中的MPCHC_MINGW32/MPCHC_MINGW64必须相应修改。5. 创建 build.user.bat 配置文件在C:\mpc-hc\仓库根目录创建build.user.bat内容按你的系统调整ECHO OFF SET MSYSTEMMINGW32 SET MPCHC_MSYSC:\MSYS SET MPCHC_MINGW32%MPCHC_MSYS%\mingw SET MPCHC_MINGW64%MPCHC_MINGW32% REM You can set MSYS2_PATH_TYPE here or in environment variables so that Git is properly added to your PATH REM SET MSYS2_PATH_TYPEinherit REM MPCHC_GIT is optional to set if you chose to add it in PATH when installing it and have set MSYS2_PATH_TYPE SET MPCHC_GITC:\Program Files\Git REM Optional, if you plan to modify the translations, install Python 2.7 or set the variable to its path SET MPCHC_PYTHONC:\Python27 REM Optional, If you want to customize the Windows SDK version used, set the variable SET MPCHC_WINSDK_VER8.1各变量含义与底层依据如下参考 build.bat、common.bat变量含义说明MSYSTEMMSYS2 子系统类型设为MINGW32构建脚本通过 src/YASM.bat 等间接使用MPCHC_MSYSMSYS2 根目录缺省C:\MSYScommon.bat :SubSetPath会将其下usr\bin、bin追加到PATHMPCHC_MINGW32/MPCHC_MINGW6432/64 位 MinGW 目录构建前必须真实存在否则build.bat直接失败MPCHC_GITGit 安装目录供 update_version.bat 将%MPCHC_GIT%\cmd加入PATH以调用 gitMPCHC_PYTHONPython 2.7 路径仅当你要修改/重新生成翻译资源时必需MPCHC_WINSDK_VERWindows SDK 版本默认 8.1对应mpc-hc_config.h中MPCHC_WINSDK_VER 8.1common.bat的:SubPreBuild会在每次构建时执行build.user.bat并核对上述三个MPCHC_*目录是否存在update_version.bat则会用它定位bash.exe并运行version.sh生成版本号。关于版本号的说明如果没有安装 Git或不在 Git 仓库内version.sh会回退到硬编码值hash0000000、ver0最终版本号形如固定的1.6.3.0。只要 Git 可用构建时会通过git describe --long --dirty自动计算出精确的 commit 哈希与自最近 tag 起的提交数写入 build/version_rev.h首次由脚本生成并同步更新src/mpc-hc/res/mpc-hc.exe.manifest用sed将$VERSION$占位符替换为实际版本模板见同目录mpc-hc.exe.manifest.conf。因此强烈建议保留 Git 环境否则产物将无法体现真实版本信息。五、Part C下载源码并编译主程序1. 克隆仓库含子模块将仓库克隆到C:\mpc-hc或其他你喜欢的位置。两种方式等价git clone --recursive https://github.com/mpc-hc/mpc-hc.git或git clone https://github.com/mpc-hc/mpc-hc.git git submodule update --init --recursive如果某个子模块更新失败先尝试git submodule foreach --recursive git fetch --tags然后再执行一次git submodule update --init --recursive。想获取最新稳定版而不是开发版可以在git clone时追加-b master参数。子模块数量众多见仓库根目录 .gitmodules包括LAVFilters位于src/thirdparty/LAVFilters/src、MediaInfoLib、SoundTouch、rapidjson、zlib、unrar、minhook等 16 个左右覆盖了解码、字幕、音频处理与压缩等核心能力缺失任何一个都会导致对应项目无法编译。子模块的更新维护流程可参考 docs/Submodules.md。2. 用 IDE 构建主程序打开解决方案文件C:\mpc-hc\mpc-hc.sln根目录 mpc-hc.sln该解决方案聚合了src/mpc-hc/mpc-hc.vcxproj、src/DSUtil、src/SubPic、src/Subtitles、src/filtersMuxer/Parser/Reader/Renderer/Source/Switcher/Transform 各滤镜工程以及src/thirdparty下若干第三方库工程在工具栏将解决方案配置切换为Release按F7构建整个解决方案构建成功后主程序位于C:\mpc-hc\bin\mpc-hc_x86\mpc-hc.exe。从 src/common.props 可以看到 Release 配置的编译细节启用/O2MaxSpeed、Whole Program Optimization、LTCG、函数级链接、/Zo与 C latest 标准Win32 目标默认开启 SSE2 指令集StreamingSIMDExtensions2链接时启用 ASLRRandomizedBaseAddress与 DEPDataExecutionPrevention。输出目录约定VS2017 工具链使用binVS2015 工具链使用bin15见 build.bat 中BIN_DIR的设定安装脚本 distrib/mpc-hc_setup.iss 也据此区分。3. 构建图标库mpciconlib主程序需要图标资源库打开C:\mpc-hc\mpciconlib.sln根目录 mpciconlib.sln按F7构建得到C:\mpc-hc\bin\mpc-hc_x86\mpciconlib.dll。4. 构建语言资源mpcresources打开C:\mpc-hc\mpcresources.sln根目录 mpcresources.sln构建其中的BuildAll项目——该项目src/mpc-hc/mpcresources/BuildAll.vcxproj会遍历每种语言配置如Release Arabic、Release Chinese Simplified等对应cfg目录下的mpc-hc.XX.cfg与PO目录下的.po翻译文件逐一调用mpcresources.vcxproj编译各语言的资源 DLL完成后语言资源位于C:\mpc-hc\bin\mpc-hc_x86\Lang\mpcresources.XX.dllXX 为语言代码。5. 更省事的方式build.bat官方推荐用仓库根目录的 build.bat 一键完成上述全部构建。运行build.bat help查看帮助或直接使用build.bat不带任何参数时等价于build.bat Build Both MPCHC Release同时构建 x86/x64 主程序与资源。常用示例build.bat x86 Resources -构建 x86 语言资源 build.bat Resources -同时构建 x86 和 x64 语言资源 build.bat x86 -构建 x86 主程序 exe 与 x86 资源 build.bat x86 Debug -构建 x86 主程序 Debug exe 与 x86 资源 build.bat x86 Filters -构建 x86 独立滤镜 build.bat x86 All -构建 x86 主程序、x86 滤镜与 x86 资源 build.bat x86 Packages -构建 x86 主程序与资源并生成安装包和 .7z 压缩包 build.bat x64 LAVFilters 7z -重编译 LAVFilters构建 x64 主程序与资源生成 .7z 压缩包build.bat的完整参数表参数不区分大小写、可省略、可加-/--//前缀参数类别取值作用动作Clean/Build/Rebuild默认BuildClean会同时跳过安装包/压缩包/LAVFiltersRebuild跳过 LAVFilters平台x86/x64/Both默认Both目标Main/Resources/MPCHC/IconLib/Translations/Filters/API/All默认MPCHC主程序资源配置Debug/Release默认ReleaseDebug 仅作用于 mpc-hc.sln且 Debug 下不构建资源附加Lite/Packages/Installer/7z/LAVFilters/VS2015/VS2017/Analyze见下文说明实现要点对应 build.bat 源码Packages等价于Installer7zInstaller调用 Inno Setup 的ISCC.exe编译 distrib/mpc-hc_setup.iss7z依赖 7-Zipcommon.bat :SubDetectSevenzipPath会在注册表与 PATH 中探测用 LZMA2 算法生成.7z分发包并附带 PDB 符号包Lite会跳过语言翻译资源产物命名带.Lite后缀LAVFilters会先调用src\thirdparty\LAVFilters\build_lavfilters.bat重建 LAV Filters 子模块再把其.ax/.dll/.manifest复制进输出目录Analyze会在编译中启用 PREfast 静态分析见common.props中ANALYZEtrue时的/wd...抑制项与EnablePREfast若仓库根目录存在signinfo.txt构建安装包/压缩包时会通过 contrib/sign.bat 对mpc-hc*.exe、*.dll、*.ax等产物做代码签名每次构建的 MSBuild 日志错误/警告分离输出到bin\logsVS2015 为bin15\logs文件命名如mpc-hc_errors_Release_Win32.log。六、Part D构建安装程序Inno Setup手动方式下载Inno Setup Unicode 5.5.9 或更新版本并完整安装进入C:\mpc-hc\distrib用 Inno Setup 打开mpc-hc_setup.iss先阅读脚本开头的注释确认无误后编译。脚本 distrib/mpc-hc_setup.iss 自带若干硬性校验可帮助你排查环境问题版本低于 5.5.9 会触发#error Update your Inno Setup version (5.5.9 or newer)非 Unicode 版本会触发#error Use the Unicode Inno Setup输出目录里找不到mpc-hc.exe或 64 位下的mpc-hc64.exe会触发#error Compile MPC-HC first——必须先完成 Part C 的编译再打包。脚本内已预置的可开关定义默认全部注释;#define VS2015 ; 使用 VS2015 工具链对应的 bin15 输出目录 ;#define x64Build ; 构建 64 位安装包取 mpc-hc_x64 输出目录 ;#define MPCHC_LITE ; 精简版安装包不含翻译资源未定义x64Build时默认打包 32 位输出文件名形如MPC-HC.X.Y.Z.x86.exe定义后为MPC-HC.X.Y.Z.x64.exe主程序取mpc-hc64.exe。版本号X.Y.Z由脚本从include/version.h的MPC_VERSION_MAJOR/MINOR/PATCH宏自动拼接夜间版还会带上MPC_VERSION_REV。用 build.bat 自动打包build.bat的installer或packages开关即可完成整套流程build.bat x86 Packages脚本会通过注册表自动探测ISCC.execommon.bat :SubDetectInnoSetup同时检查 32/64 位注册表视图未找到时会给出警告并跳过安装包步骤。编辑 iss 的注意事项如需修改.iss脚本建议使用 Inno Setup 自带 IDE 编辑不要改动文件编码脚本同时被mpc-hc_config.h、version.h等头文件以#include方式引用编码错乱极易导致预处理器或字符串解析失败。七、常见问题速查症状原因与对策Not all build dependencies were foundbuild.user.bat缺失或MPCHC_MSYS/MPCHC_MINGW32/MPCHC_MINGW64指向的目录不存在检查路径并确认 MSYS2/MinGW 已就位版本号固定不变如 1.6.3.0未安装 Git 或不在 Git 仓库内version.sh使用硬编码值确认 Git 可用并重跑build.bat GetVersionVS2017 路径未被识别common.bat :SubVSPath的 vswhere 探测失败请在build.user.bat设置MPCHC_VS_PATHyasm.exe相关编译错误YASM 未放入C:\MSYS\usr\bin或不在 PATH按 Part B 第 3 步补装#error Compile MPC-HC first未先编译主程序就打包回到 Part C 完成mpc-hc.sln的构建安装包步骤被跳过未安装 Inno Setup 或未安装 Unicode 版common.bat :SubDetectInnoSetup通过注册表找不到ISCC.exe八、延伸阅读docs/Compilation.md——本文依据的官方原始构建文档docs/Submodules.md——LAV Filters 与 FFmpeg 子模块的更新维护流程docs/Release.md——正式版本的发布流程其中使用CALL build.bat Clean All Both Release与CALL build.bat Build All Both Release Packages产出发布产物build.bat 与 common.bat——构建调度与依赖探测的完整实现include/mpc-hc_config.h——DX SDK 版本号、Windows SDK 版本、站点链接等构建期宏定义src/mpc-hc/mpcresources/BuildAll.vcxproj——多语言资源批量构建项目。赞分享音视频视频桌面应用【免费下载链接】mpc-hcMPC-HCs main repository. For support use our Trac: https://trac.mpc-hc.org/项目地址https://gitcode.com/gh_mirrors/mpc/mpc-hc点击查看免费下载相关推荐MPC-HC 从源码编译全流程指南Visual Studio 环境搭建、LAV Filters 集成与安装包构建MPC HC 从源码编译全流程指南Visual Studio 环境搭建、LAV Filters 集成与安装包构建 本篇技术指南以仓库官方文档 docs/Com音视频桌面应用视频如何编译MPC-HC源码Windows开发环境搭建的完整流程如何编译MPC HC源码Windows开发环境搭建的完整流程 MPC HC是一款广受欢迎的开源媒体播放器掌握其源码编译技巧能让你深入了解多媒体处理技术。本指音视频视频桌面应用Inno Setup源码编译环境搭建完全指南从零开始构建Windows安装程序Inno Setup源码编译环境搭建完全指南从零开始构建Windows安装程序 Inno Setup是一个功能强大的免费Windows程序安装包制作工具自1开发工具桌面应用CLI上一篇基于 Python sh 库的 sudo 调用全指南三种安全方案与底层源码原理下一篇Hazel Engine日志可视化在ImGui面板中显示实时日志创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考