You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 2021中Hololens 2使用FFmpegInteropX的依赖冲突问题

Unity 2021 + HoloLens 2 使用FFmpegInteropX解决WinRT依赖冲突方案

针对你遇到的WinRT.Runtime依赖缺失、与MRTK冲突问题,以下是亲测有效的解决步骤:

1. 重新编译FFmpegInteropX,规避WinRT直接依赖

  • 编译时选择仅针对UWP平台的.NET Standard 2.0兼容版本,禁用USE_WINRT_API等相关编译选项,改用纯.NET Standard API实现解码逻辑,避免直接绑定WinRT.Runtime。
  • 确保编译产物只包含FFmpegInteropX核心DLL和对应的ARM64原生FFmpeg库,不要附带任何WinRT相关的依赖文件。

2. 修正Unity插件的导入与平台设置

  • 将编译好的DLL和原生库放在Assets/Plugins/WSA/ARM64目录下,严格限定仅ARM64架构加载。
  • 在Unity Inspector中配置插件属性:
    • 仅勾选WSAPlayer平台,取消其他平台的勾选
    • CPU架构选择ARM64
    • 取消非必要选项(如Load on Startup,除非你的解码逻辑需要启动即加载)
  • 关键:绝对不要手动添加WinRT.Runtime.dll或Microsoft.Windows.SDK.NET.dll到Plugins文件夹,这些属于UWP系统级库,Unity构建UWP包时会自动从系统引用,手动添加必然触发冲突。

3. 隔离WinRT代码,优化预处理逻辑

  • 保留ENABLE_WINMD_SUPPORT预处理指令,但确保WinRT相关代码仅在UWP构建时生效,且通过Unity封装的Windows命名空间间接调用(比如Windows.Media相关API),不要直接引用WinRT.Runtime的原生类型。
  • 如果必须用到FFmpegInteropX的WinRT特性,单独创建UWP WinMD适配层:用Visual Studio编写一个WinMD组件封装FFmpegInteropX的WinRT调用,然后在Unity中通过.NET Standard接口调用这个适配层,实现依赖隔离。

4. 解决MRTK冲突的细节调整

  • 确保使用与Unity 2021兼容的MRTK 2.8.x及以上版本,这类版本对UWP WinRT依赖的处理更完善。
  • 在Unity Player Settings中,进入UWP > Other Settings:
    • 设置Scripting Runtime Version为.NET 4.x Equivalent
    • 设置API Compatibility Level为.NET Standard 2.0
  • 若仍有冲突,在Assets/Plugins/WSA下创建link.xml文件,告诉Unity构建时排除重复依赖的系统库:
    <linker>
      <assembly fullname="Microsoft.Windows.SDK.NET" preserve="none" />
      <assembly fullname="WinRT.Runtime" preserve="none" />
    </linker>
    

5. 验证构建流程

  • 先清理Unity的Library和Temp文件夹,重新导入插件,避免缓存的旧依赖干扰。
  • 构建UWP包时选择ARM64架构,取消Unity C# Projects勾选,减少冗余项目文件的影响。
  • 若构建后仍有问题,打开生成的UWP解决方案,检查NuGet包引用,确保没有重复安装WinRT相关包,Unity会自动处理系统级依赖。

内容的提问来源于stack exchange,提问作者CocoaMilka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:22:06