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

你可能感兴趣的:(Unity,unity,c#)