Unity Universal Media Player(UMP) rtsp接实时监控方法+打包项目其他设备观看播放报错解决办法

目录

这篇是在unity使用rtsp数据流接监控画面的方法和打包后踩坑问题解决记录

1. 背景说明

2.在unity项目中播放监控方法

3.打包项目exe后遇到问题及解决方案总结

方法一:

方法二:

方法三:

方法四:

方法五:

4. 链接整合


这篇是在unity使用rtsp数据流接监控画面的方法和打包后踩坑问题解决记录

---------------------------------------------------------------------------------------------------------------------------------

1. 背景说明

海康威视的监控

做项目时用的电脑和监控不在一个局域网,对方监控视频只能局域网查看,所以远程了局域网内的电脑进行测试

---------------------------------------------------------------------------------------------------------------------------------

2.在unity项目中播放监控方法

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组件里

---------------------------------------------------------------------------------------------------------------------------------

3.打包项目exe后遇到问题及解决方案总结

遇到的各种问题有:

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

4. 链接整合

https://www.cnblogs.com/AranNice/p/16378805.html

https://blog.csdn.net/f402455894/article/details/125798362

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Unity3D是一款广泛用于游戏和应用程序开发的跨平台开发引擎。Universal Media PlayerUMP)是Unity3D的一个插件,专门用于播放多媒体文件。在使用Unity3D和UMP完成媒体播放任务时,经常会遇到需要重新连的情况。 在Unity3D中,要实现UMP的重新连,可以按照以下步骤进行操作: 1. 在Unity3D项目中,确保已经正确导入UMP插件,并添加UMP的相关脚本。 2. 首先,需要确定何时需要重新连UMP。例如,在连UMP时可能会出现网络中断、文件丢失等情况。在这些情况下,通过监测UMP的状态来确定是否需要重新连。 3. 当需要重新连时,首先需要断开当前的UMP。可以通过调用UMP的断开连函数或者重置UMP实例来完成。 4. 下来,重新配置UMP的连参数。例如,如果使用网络连,则需要重新设置IP地址、端口号等参数。如果播放的是本地文件,需要重新设置文件路径。 5. 确定好重新连的参数后,再次调用UMP的连函数来重新连。如果连成功,UMP将开始播放媒体。 6. 在重新连期间,可以在Unity3D中显示提示信息,告知用户正在重新连中,以增强用户体验。 总之,Unity3D使用UMP进行重连的过程实际上就是先断开当前连,然后重新配置连参数并建立新的连。理解UMP的连函数和相关参数设置,能够帮助开发者更好地掌握UMP的重新连机制,从而保证媒体播放的连贯性和稳定性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值