admin管理员组文章数量:1532440
unity 使用ump插件播放视频 ,打包发布后黑屏或者在别人电脑上运行黑屏,解决方案。
ump插件下载
- 最近在项目里面 需要接入海康监控 并在unity中显示,我选择使用ump 插件播放视频,
- 刚开始使用 ump1.7.1 插件 ,发现在unity中运行正常 打包发布后 运行黑屏(具体原因可能和2.0.3一样), 又换升级ump插件到2.0.3 ,解决发布后在自己电脑黑屏问题 。于是又踩新坑 就是把这个包发送给同事 在他电脑上运行黑屏 , 问题原因有下:
- ump插件会自动获取 VLC库,如果当前电脑没有安装VLC就会使用ump插件中的VLC库 ,但此时获取的方式为绝对路径, 所以换电脑播放就找不到绝对路径下的VLC库了 会黑屏
- ump播放视频 是基于 VLC库的播放 因为当前电脑上没有这库 所以运行黑屏
- 解决方法有两种:
- 方法1.
电脑安装VLC 地址 :https://ftp.stu.edu.tw/others/VideoLAN/vlc/3.0.6/win64/vlc-3.0.6-win64.exe - 方法2.
- 修改脚本 NativeInterop中ReadLocalRegKey方法
- 然后 打包后把插件中Win / x86_64文件拷贝到xxx_Data/Plugins下面去,
解决 电脑播放黑屏问题
- 方法1.
public static string ReadLocalRegKey(string keyPath, string valueName)
{
var platform = UMPSettings.RuntimePlatform;
var value = string.Empty;
if (platform == UMPSettings.Platforms.Win)
{
var localMachine = new UIntPtr(0x80000002u);
var readKeyRights = 131097;
var hKey = UIntPtr.Zero;
//如果当前电脑上 安装了vlc 就用安装的VLC 路径下的dll
if (WindowsInterop.RegOpenKeyEx(localMachine, keyPath, 0, readKeyRights, out hKey) == 0)
{
uint type;
uint size = 1024;
var keyBuffer = new StringBuilder((int)size);
if (WindowsInterop.RegQueryValueEx(hKey, valueName, 0, out type, keyBuffer, ref size) == 0)
value = keyBuffer.ToString();
else
Debug.LogWarning(string.Format("[ReadLocalRegKey] Can't read local reg key value: '{0}'", valueName));
WindowsInterop.RegCloseKey(hKey);
}
else //当前当前电脑 没有安装 VLC 就去data文件下找
{
value = Application.dataPath + "/Plugins/x86_64/";
}
//else
// Debug.LogWarning(string.Format("[ReadLocalRegKey] Can't open local reg key: '{0}'", keyPath));
}
return value;
}
版权声明:本文标题:unity 使用ump插件播放视频 ,打包发布后黑屏或者在别人电脑上运行黑屏,解决方案 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1725405503a1022009.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论