Unity 接入监控视频

Unity 监控RTSP实时流传输协议

实时流

海康

rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream

详解:
username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
codec:有h264、MPEG-4、mpeg4这几种。
channel: 通道号,起始为1。例如通道1,则为ch1。
subtype: 码流类型,主码流为main,辅码流为sub。

rtsp://admin:123456@192.0.0.64:554/h264/ch1/main/av_stream

大华

rtsp://[username]:[password]@[ip]:[port]/cam/realmonitor?channel=1&subtype=0

详解:
username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
channel: 通道号,起始为1。例如通道2,则为channel=2。
subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。

rtsp://admin:12345@192.0.0.64:554/cam/realmonitor?channel=2&subtype=1

回放流

海康

rtsp://[username]:[password]@[ip]:[port]/Streaming/tracks/101?starttime=20120802t063812z&endtime=20120802t064816z

详解:
username: 用户名。
password: 密码。
ip: 为设备IP。
port: 端口号。
101:1,表示通道1;01,表示以单播形式回放指定设备的通道中的录像文件
starttime:开始时间
endtime:结束时间
时间范围是starttime到endtime,其中starttime和endtime的格式要符合ISO 8601。
具体格式是YYYYMMDD”T”HHmmSS.fraction”Z” ,Y是年,M是月,D是日,T是时间分格符,H是小时,M是分,S是秒,Z是可选的、表示Zulu (GMT) 时间。

大华

rtsp://[username]:[password]@[ip]:[port]/cam/playback?channel=1&subtype=0&starttime=2017_01_10_01_00_00&endtime=2017_01_10_02_00_00

详解:
username: 用户名。
password: 密码。
ip: 为设备IP。
port: 端口号。
channel: 通道号。
subtype: 码流类型。
starttime:开始时间。
endtime:结束时间。

使用插件 Universal Media Player

导入插件,文件夹下有个Prefabs,UniversalMediaPlayer,在该预制体下有个脚本UniversalMediaPlayer,
按上述的拉流地址填入Path。

坑:
1、摄像机拍到的黑色区域是透明的
将RawImage的RawImage组件的Material替换为一个Sprites-Default。
2、打包出来没画面
更新插件版本,低版本插件未适配Unity高版本
3、打包报错cant load “libvlccore“ library
路径不要有中文
UMPSettings 勾选了Use installed VLC ,需要下载VLC软件。
未勾选,打包后把3个在这里插入图片描述直接放进Plugins。

大牛自制
案例都在里面 直接跑就行。
https://download.youkuaiyun.com/download/weixin_44347839/88677371

public class CameraInfo
{
    public string Username = "admin";
    public string Password = "12345";
    public string IP = "192.0.0.64";
}
public class FFmpegTest : MonoBehaviour
{
    public CameraInfo cameraInfo = new CameraInfo();
    public FFmpegPlayerBasicRawImage mediaPlayer;
    private void Awake()
    {
        FFmpegPlayerMono.Init(Application.streamingAssetsPath + "/FFmpegNativeLib");
    }
    void Start()
    {
        string liveUrl = "rtsp://" + cameraInfo.Username + ":" + cameraInfo.Password + "@" + cameraInfo.IP + ":8200/cam/realmonitor?channel=19&subtype=0&proto=Private3";
        OnLoadVideo(liveUrl);
    }
    private void OnLoadVideo(string url)
    {
        mediaPlayer.UseTcp = true;
        mediaPlayer.OpenPlayUrl(url);
    }
    // Update is called once per frame
    void Update()
    {

    }
}

平台原生sdk
链接

https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10
https://support.dahuatech.com/tools/sdkExploit

### 集成小米监控SDK至Unity项目 为了在Unity项目中集成小米监控服务,开发者需遵循特定步骤来配置环境并实现功能。通常情况下,在Android平台上的第三方SDK集成涉及修改项目的`build.gradle`文件以及添加必要的权限声明。 对于Unity而言,由于其跨平台特性,集成本质上是在原生层面上完成后再通过插件形式暴露给C#脚本调用接口[^1]。具体来说: #### 准备工作 - 获取小米官方提供的最新版本监控SDK包。 - 解压下载下来的压缩包,找到其中用于Android部分的`.aar`或`.jar`文件作为主要依赖库。 #### 修改Gradle设置 打开Unity工程目录下的`Assets/Plugins/Android/mainTemplate.gradle`模板文件(如果不存在则新建),在此处加入如下内容以确保编译时能够识别新增加的模块: ```groovy dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // 假设解压后的.aar位于此路径下 implementation(name:'miot-sdk-release', ext:'aar') } repositories { flatDir{ dirs 'libs' } } ``` #### 添加资源与权限 将SDK附带的相关资源文件复制到相应位置,并更新`AndroidManifest.xml`中的权限列表,比如网络访问、存储读写等必要项。这部分操作同样可以在上述提到的gradle配置里指定自动处理方式[^2]。 #### 创建桥梁类 编写Java代码充当连接Unity和底层API之间的中介角色,负责初始化、数据传递等工作。此类应当放置于`Assets/Plugins/Android/src/com/example/miotsdkbridge/MiotSdkBridge.java`这样的结构内以便被正确打包进APK之中。 ```java package com.example.miotsdkbridge; import android.content.Context; // 导入其他所需的小米SDK组件... public class MiotSdkBridge { private static Context context; public void init(Context ctx){ this.context = ctx; // 执行具体的初始化逻辑... } // 提供更多方法封装实际业务流程... } ``` #### 实现C#端交互 最后一步就是在Unity这边利用`DllImport`属性或者直接实例化安卓对象的方式触发之前准备好的函数入口点。下面给出了一种简单的示例演示如何启动该过程: ```csharp using UnityEngine; #if UNITY_ANDROID && !UNITY_EDITOR using UnityEngine.Android; #endif public class MiOTIntegration : MonoBehaviour { private AndroidJavaObject miotPluginInstance; void Start() { InitializeMiOT(); } void InitializeMiOT(){ #if UNITY_ANDROID && !UNITY_EDITOR using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); miotPluginInstance = new AndroidJavaObject( "com.example.miotsdkbridge.MiotSdkBridge" ); miotPluginInstance.Call("init", currentActivity); } #endif } // 更多功能待补充... } ``` 以上就是大致的工作流描述,当然实际情况可能会更加复杂一些,建议参照小米开放平台文档获取最权威指导信息[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值