Files
Velix-MPV-Core/DOCS/MPV_BUILD_REPORT.md

5.3 KiB
Raw Permalink Blame History

HarmonyOS First Native Build Report

Result

Phase 1 已在 DevEco Studio OpenHarmony SDK 6.1.1.125 / API 24 下生成真实 arm64 libmpv。本报告只证明编译、链接和静态检查,不声明真机运行语义已验证。

项目 结果
Origin https://git.leee.xin/leeexin/Velix-MPV-Core.git
origin/harmony-port 以本次 Phase 1 提交推送后的 commit 为准
MPV 182fa6ca49f455cadb884858f386e2f00540aeb7 / 0.41.0-UNKNOWN
FFmpeg 3acec0a1af2dda0a0838689b8b8649e7deb080a0
libmpv build/ohos-arm64/prefix/lib/libmpv.so.2.5.0
Size 34,314,184 bytes
SHA-256 80e4c6fda86d9822543615a97045fff3641e9125b23a4f736fb8511fe5a47790
Architecture / ABI ELF64, little-endian, AArch64, System V ABI, shared object, SONAME libmpv.so.2
Toolchain OHOS Clang/LLD 15.0.4, target aarch64-linux-ohos, musl sysroot
MPV / build files 7:ao_harmony.c/.h、AO 注册、Meson feature、OHOS build script、依赖 allowlist;第三方依赖源码修改 0
Build issues 4,全部关闭

Features

MPV enabled:clone、ffmpeg、gl、glibc-thread-name、glob、glob-posix、gpl、harmony-audio、libass、libdl、libplacebo、linux-fstatfs、memrchr、ohos、posix、posix-shm、ppoll、pthread-condattr-setclock、vector、vt.h、zlib、libmpv shared、plain-gl。

FFmpeg enabled:软件解码、demux、network、HTTP/HTTPS/TCP/TLS、OpenSSL 3.6.4、SDK zlib、OHCodec H.264/HEVC decoder/encoder。FFmpeg GPL/version3/nonfree 均为 0。

Disabled:mpv CLI、tests、fuzzers、Lua/JavaScript、libcurl、桌面音视频后端、X11、Wayland、DRM/GBM、Cocoa、Windows backend、Android-specific backend、Vulkan、VAAPI、VDPAU、CUDA。libplacebo 的 Vulkan/OpenGL 自有 backend 关闭;MPV 自身 OpenGL Render API 保留。

Verification

  • 最小 C/C++ 探针均为 OHOS AArch64 ELF;C++ 探针依赖 SDK libc++_shared.so。
  • prefix 内 13 个静态库的全部可见 archive object 均通过 AArch64 ELF 检查。
  • libmpv.so.2.5.0 动态依赖为 libc.so、libz.so、libnative_media_vdec.so、libnative_media_venc.so、libnative_media_codecbase.so、libnative_media_core.so、libnative_window.so、libohaudio.so;均来自 HarmonyOS SDK allowlist。
  • target metadata 未发现 Homebrew、/usr/local、.dylib、Apple framework 或 Mach-O 污染。
  • 已验证 mpv_create、mpv_initialize、mpv_command、mpv_set_property、mpv_get_property、mpv_render_context_create、mpv_render_context_render、mpv_render_context_set_update_callback、mpv_render_context_free。
  • scripts/build-all-ohos.sh 已完成本次 Phase 3 全链路构建与最终校验(verified_archives=13)。

Warnings

剩余 18 条构建 warning:FFmpeg 5 条 upstream fallthrough/unused-function;FriBidi 5 条 enum-conversion;HarfBuzz 1 条仅开发者需要 Ragel;libass/MPV 4 条非阻塞 CMake compiler-state 探测;libplacebo 3 条无 graphics backend/name-prefix 提示。均不影响当前 target 产物,未通过关闭警告掩盖问题。

Dependency Graph

实际依赖图见 DOCS/PHASE1_DEPENDENCY_MATRIX.md。所有第三方库均静态进入 libmpv,SDK zlib、OHCodec 与 libc 保持系统动态依赖。

License

仓库与 libmpv 当前按 MPV GPL-2.0-or-later 路线管理。FFmpeg 为 LGPL 配置且未启用 GPL/nonfree;OpenSSL 为 Apache-2.0;静态 LGPL 组件仍需在正式发布时履行可重新链接、源码与 notices 义务。本文件不是最终发行 notice。

Phase 2 Risks

  1. POSIX、DNS、HTTP/HTTPS 与动态库加载目前仅 compile/link verified,尚未真机 runtime verified。
  2. XComponent / OHNativeWindow 生命周期、线程归属、窗口销毁与 EGL context loss 尚未验证。
  3. MPV plain-gl 与 HarmonyOS EGL/GLES 的实际格式、扩展、同步和首帧路径尚未联调。
  4. FFmpeg OHCodec 已编译,但 MPV hwdec 选择、surface/output buffer 生命周期及零拷贝均未验证。
  5. OpenSSL CA 路径与 HAP 内依赖打包、SDK系统库版本兼容仍需真机验证。

Phase 2 Entry Condition

已具备 XComponent + OHNativeWindow + EGL + libmpv OpenGL Render API 真机首帧测试的编译侧条件:SDK API 可用、libmpv 可链接、OpenGL Render API symbols 齐全。尚不代表首帧已经成功;Phase 2 必须在真机建立窗口和 EGL context 后验证。

FFmpeg-Harmony export prefix

Phase 4.5 的 FFmpeg fork 独立维护于 https://git.leee.xin/leeexin/Velix-FFmpeg-Harmony.git,分支 harmony-ohcodec-export,当前分支 tip f3a036c695(跨 origin 重定向丢弃敏感凭证;代码修正 commit aacbe7d578)。MPV 不包含 FFmpeg 源码,也不读取其私有头文件;需要切换时执行:

./scripts/build-mpv-ohos-ffmpeg-harmony.sh

脚本默认消费 ../Velix-FFmpeg-Harmony/build/ohos-arm64/prefix,也可用 FFMPEG_PREFIX=/path/to/prefix MPV_BUILD_ROOT=/path/to/mpv-build MPV_PREFIX=/path/to/mpv-prefix 覆盖。切换脚本默认把 MPV 安装到 build/ohos-arm64/prefix-mpv-ffmpeg-harmony,避免覆盖默认 prefix。默认 build-mpv-ohos.sh 与 build-mpv-ohos-software.sh 的原有前缀和 harmony-ohcodec-gl=disabled 行为不变。本次切换构建已通过 AArch64 ELF、符号 和动态依赖校验,但没有进入 GPU mapper 或设备硬解验证。