目录
这篇是在unity使用rtsp数据流接监控画面的方法和打包后踩坑问题解决记录
1. 背景说明
2.在unity项目中播放监控方法
3.打包项目exe后遇到问题及解决方案总结
方法一:
方法二:
方法三:
方法四:
方法五:
4. 链接整合
---------------------------------------------------------------------------------------------------------------------------------
海康威视的监控
做项目时用的电脑和监控不在一个局域网,对方监控视频只能局域网查看,所以远程了局域网内的电脑进行测试
---------------------------------------------------------------------------------------------------------------------------------
Unity Editor使用的是2021.3.27f1版本
---------------------------------------------------------------------------------------------------------------------------------
Universal Media Player插件不要用旧版(比如1.7.1)!!!!!!!!
在淘宝上直接买个2.0.3版本
---------------------------------------------------------------------------------------------------------------------------------
导入UMP插件package后,Universal Media Player那个文件夹要保证在Assets下面。
---------------------------------------------------------------------------------------------------------------------------------
创建一个空对象,添加Universal Media Player组件
创建一个raw image对象,拖进前面UMP组件里
---------------------------------------------------------------------------------------------------------------------------------
遇到的各种问题有:
1.打包后运行没有视频画面
2.在其他设备上运行播放没有视频画面
3.打包Debug版的exe报错显示,can‘t find lib...
---------------------------------------------------------------------------------------------------------------------------------
在Preference -> Player Settings -> configuration ->xxxxx 选择 .Net.4.x (.Net Framework)
这个方法其实是最终帮助我解决问题的步骤,相信各位应该已经看了各种网上的解决方案都试过了,所以在此将这个放在方法一,首先修改此设置尝试
---------------------------------------------------------------------------------------------------------------------------------
首先保证rtsp数据流地址没有写错
举例:rtsp:/admin:Admin123/xxx.xxx.xx.xx:554/101
admin是用户名; Admin123是密码; xxx.xxx.xx.xx是地址; 默认端口号一般是554;
101表示的是通道1的主码流
如果是通道n的主码流就是 .../n01
如果是子码流就是 .../n02;
---------------------------------------------------------------------------------------------------------------------------------
其次保证这个rtsp数据流确实能打开正常观看,
建议先下载一个VLC尝试打开这个数据流查看是否能观看,方法如下:
打开 文件 -> 网络数据流,输入MRL,点击播放,有画面就是正常的
---------------------------------------------------------------------------------------------------------------------------------
打开Universal Media Player文件夹 Resource文件夹下面的UMPSettings.dll,
查看Inspector里的Use Installed VLC选项是否勾选,如果勾选了表示会使用已经安装好的VLC,如果你的电脑上没有VLC,那么就看不了,最好不勾选。
(解决方案来源https://blog.csdn.net/f402455894/article/details/125798362)
---------------------------------------------------------------------------------------------------------------------------------
(这个方法旧版本插件用不了,刚开始使用的1.7.1版本的UMP,后来更改为2.0.3)
VLC获取使用的是绝对路径,发送到其他电脑shang肯定是找不到的,所以将这个路径下面的文件UMPPostBuilds.cs进行修改
......\Assets\UniversalMediaPlayer\Editor\UMPPostBuilds.cs
里面的一个BuildWindowsPlayer64(string path, UMPSettings settings)方法
修改为下面这个。
public static void BuildWindowsPlayer64(string path, UMPSettings settings)
{
string buildPath = Path.GetDirectoryName(path);
string dataPath = buildPath + "/" + Path.GetFileNameWithoutExtension(path) + "_Data";
if (!string.IsNullOrEmpty(buildPath))
{
if (!settings.UseExternalLibs)
{
CopyPlugins(settings.AssetPath + "/Plugins/Win/x86_64/plugins/", dataPath + "/Plugins/plugins/");
string[] files = Directory.GetFiles(dataPath + "/Plugins/x86_64/");
foreach (string str in files)
{
string file = Path.GetFileName(str);
Debug.LogError(file);
File.Copy(str, dataPath + "/Plugins/" + file);
}
Directory.Delete(dataPath + "/Plugins/x86_64/", true);
}
else
{
if (File.Exists(dataPath + "/Plugins/" + UMPSettings.LIB_VLC_NAME + ".dll"))
File.Delete(dataPath + "/Plugins/" + UMPSettings.LIB_VLC_NAME + ".dll");
if (File.Exists(dataPath + "/Plugins/" + UMPSettings.LIB_VLC_CORE_NAME + ".dll"))
File.Delete(dataPath + "/Plugins/" + UMPSettings.LIB_VLC_CORE_NAME + ".dll");
}
}
Debug.Log("Standalone Windows (x86_x64) build is completed: " + path);
}
(解决方案来源https://blog.csdn.net/f402455894/article/details/125798362)
https://www.cnblogs.com/AranNice/p/16378805.html
https://blog.csdn.net/f402455894/article/details/125798362