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);
            }
        }
    }
}
攝像頭雲台控制

 

簡單記錄一下,不喜勿噴

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM