Unity连接海康摄像头(shader转码)硬解码

1.第一种方法

之前写过就不写了给个地址

2.第二种方法

用海康的SDK

(shader转码)

先上效果

 

 

demo下载地址: 点击下载

开启多个摄像头的话 第二种比一种流畅

3.添加一个控制摄像头云台控制的(摄像头旋转)球机摄像机 直接上一个脚本吧

 

using PreviewDemo;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HKSKDColler : MonoBehaviour
{

    private uint iLastErr = 0;
    public int m_lUserID = -1;
    private bool m_bInitSDK = false;
    private bool m_bRecord = false;
    private bool m_bTalk = false;
    private int m_lRealHandle = -1;
    private int lVoiceComHandle = -1;
    private string str;

    CHCNetSDK.REALDATACALLBACK RealData = null;
    CHCNetSDK.LOGINRESULTCALLBACK LoginCallBack = null;
    public CHCNetSDK.NET_DVR_PTZPOS m_struPtzCfg;
    public CHCNetSDK.NET_DVR_USER_LOGIN_INFO struLogInfo;
    public CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo;

    private bool Checked ;
    private int m_lChannel = 1;
    private void Start()
    {
        m_bInitSDK = CHCNetSDK.NET_DVR_Init();
       
    }

    public void Login(string Ip, string Port, string UserName, string PassWord)
    {

        if (m_lUserID < 0)
        {
            //登录设备
            m_lUserID = CHCNetSDK.NET_DVR_Login_V30(Ip, int.Parse(Port), UserName, PassWord, ref DeviceInfo);
            //  Debug.Log(dcv40. + "这是设备类型吗"+ dcv40.wDevType);

            CHCNetSDK.NET_DVR_DEVICECFG_V40 nET_DVR_DEVICECFG_V40 = new CHCNetSDK.NET_DVR_DEVICECFG_V40();

            if (m_lUserID < 0)
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                Debug.Log("登录失败:错误号" + iLastErr);
                return;
            }
            else
            {

                //Login(Ip, Port, UserName, PassWord);

                Debug.Log("登录成功");
                //VideoBtnClick(1);
            }
        }

    }
    /// <summary>
    /// 登出
    /// </summary>
    public void LogOut()
    {      
        if (m_lUserID < 0) return;      
        if (!CHCNetSDK.NET_DVR_Logout(m_lUserID))
        {
            iLastErr = CHCNetSDK.NET_DVR_GetLastError();
            str = "NET_DVR_Logout failed, error code= " + iLastErr;
            Debug.LogError(str);
            return;
        }
        m_lUserID = -1;
        Debug.Log("注销登录");
    }
    private void OnApplicationQuit()
    {
        CHCNetSDK.NET_DVR_Cleanup();
    }
    private void Update()
    {
        //登陆
        if (Input.GetKeyDown (KeyCode.Alpha1))
        {
            Login("195.100.97.242", "8000", "admin", "123");
        }
        
        //登出
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            LogOut();
        }

        //
        if (Input.GetKey(KeyCode.J))
        {
            if (Checked)
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, (uint)CHCNetSDK.PAN_LEFT, 0, 4);
                Debug.Log("");
            }
            else
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.PAN_LEFT, 0, 4);
                Debug.Log("");
            }

        }
        if (Input.GetKeyUp(KeyCode.J))
        {
            if (Checked)
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, (uint)CHCNetSDK.PAN_LEFT, 1, 4);
            }
            else
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.PAN_LEFT, 1, 4);
            }
        }
        //
        if (Input.GetKey(KeyCode.I))
        {
            if (Checked)
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_UP, 0, 4);
            }
            else
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.TILT_UP, 0, 4);
            }
            Debug.Log("");
        }
        if (Input.GetKeyUp(KeyCode.I))
        {
            if (Checked)
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_UP, 1, 4);
            }
            else
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.TILT_UP, 1, 4);
            }
        }
        //
        if (Input.GetKey(KeyCode.L))
        {
            if (Checked)
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_RIGHT, 0, 4);
            }
            else
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.PAN_RIGHT, 0, 4);
            }
            Debug.Log("");
        }
        if (Input.GetKeyUp(KeyCode.L))
        {
            if (Checked)
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_RIGHT, 1, 4);
            }
            else
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.PAN_RIGHT, 1, 4);
            }
        }
        //
        if (Input.GetKey(KeyCode.K))
        {
            if (Checked)
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_DOWN, 0, 4);
            }
            else
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.TILT_DOWN, 0, 4);
            }
            Debug.Log("");
        }
        if (Input.GetKeyUp(KeyCode.K))
        {
            if (Checked)
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_DOWN, 1, 4);
            }
            else
            {
                CHCNetSDK.NET_DVR_PTZControlWithSpeed_Other(m_lUserID, m_lChannel, CHCNetSDK.TILT_DOWN, 1, 4);
            }
        }
    }
}
摄像头云台控制

 

简单记录一下,不喜勿喷

 

posted @ 2022-01-11 14:57  剑起苍穹  阅读(987)  评论(0编辑  收藏  举报
/*鼠标点击特效*/