日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

C#使用WebService调用海康SDK实现抓图与录像实时下载

發(fā)布時(shí)間:2024/3/24 151 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#使用WebService调用海康SDK实现抓图与录像实时下载 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.??翟O(shè)備網(wǎng)絡(luò)SDK下載

下載地址:https://www.hikvision.com/cn/download_more_401.html

下載完畢解壓后的目錄結(jié)構(gòu)如下:

2.代碼實(shí)現(xiàn)

通過參考“CH-HCNetSDKV6.0.2.35_build20190411_Win32\Demo示例\3- C# 開發(fā)示例\1-實(shí)時(shí)預(yù)覽示例代碼一”路徑下的示例項(xiàng)目,控制??典浵駲C(jī)進(jìn)行抓拍圖片與實(shí)時(shí)下載錄像功能

2.1 算了不貼代碼了,這個(gè)MarkDown編輯器真tm難用,為什么復(fù)制過來的代碼變成這樣?

2.2 主要代碼

2.2.1 Web.config

<appSettings><!--??禂z像機(jī)配置--><add key="dvrIp" value="10.14.8.70"/><add key="dvrPort" value="8000"/><add key="dvrUserName" value="admin"/><add key="dvrPassword" value="12345"/><!--圖片視頻存儲(chǔ)路徑配置--><add key="picturePath" value="C:\\HYKJ\\Pictures\\"/><add key="videoPath" value="C:\\HYKJ\\Videos\\"/></appSettings>

2.2.2 WebService1.asmx

public static string dvrIp = ConfigurationManager.AppSettings["dvrIp"].ToString(); //錄像機(jī)IP public static string dvrPort = ConfigurationManager.AppSettings["dvrPort"].ToString(); //錄像機(jī)端口 public static string dvrUserName = ConfigurationManager.AppSettings["dvrUserName"].ToString(); //錄像機(jī)用戶名 public static string dvrPassword = ConfigurationManager.AppSettings["dvrPassword"].ToString(); //錄像機(jī)密碼public static string picPath = ConfigurationManager.AppSettings["picturePath"].ToString(); //圖片存儲(chǔ)路徑 C:\\HYKJ\\Pictures\\ public static string vidPath = ConfigurationManager.AppSettings["videoPath"].ToString(); //錄像存儲(chǔ)路徑 C:\\HYKJ\\Videos\\/// <summary>/// ??典浵駲C(jī)登錄實(shí)例/// </summary>private static Int32 m_lUserID = -1;/// <summary>/// ??靛e(cuò)誤號(hào)/// </summary>private static uint iLastErr = 0;/// <summary>/// 用于接收??嫡{(diào)用接口返回信息/// </summary>private static string str;/// <summary>/// ??礢DK是否初始化/// </summary>private static bool m_bInitSDK = false;/// <summary>/// ??殿A(yù)覽數(shù)據(jù)回調(diào)/// </summary>private static CHCNetSDK.REALDATACALLBACK RealData = null;/// <summary>/// ??殿A(yù)覽集合/// </summary>private static Dictionary<string, Int32> realHandleDic = new Dictionary<string, Int32>();/// <summary>/// ??典浵窦?// </summary>private static Dictionary<string, bool> recordDic = new Dictionary<string, bool>();/// <summary> /// 海康錄像機(jī)拍照 /// </summary> /// <param name="channelNum">攝像機(jī)通道號(hào)</param> /// <returns></returns> public bool TakePhoto(C2SJsonMessage c2sjm) {string channelNum = c2sjm.channelNum;string pictureFileName = c2sjm.pictureFileName;DateTime date = DateTime.Now;string year = date.Year.ToString() + "\\";string month = date.Month.ToString() + "\\";string day = date.Day.ToString() + "\\";bool flag = false;string sJpegPicDirectory = picPath + year + month + day;if (!Directory.Exists(sJpegPicDirectory)){Directory.CreateDirectory(sJpegPicDirectory);}//圖片保存路徑和文件名 C:\\HYKJ\\Pictures\\2019\\08\\08\\jylsh_jccs_hphm_channelNum_1.jpgstring sJpegPicFileName = sJpegPicDirectory + pictureFileName;int lChannel = Int16.Parse(channelNum); //通道號(hào) Channel numberCHCNetSDK.NET_DVR_JPEGPARA lpJpegPara = new CHCNetSDK.NET_DVR_JPEGPARA();lpJpegPara.wPicQuality = 0; //圖像質(zhì)量 Image qualitylpJpegPara.wPicSize = 0xff; //抓圖分辨率 Picture size: 2- 4CIF,0xff- Auto(使用當(dāng)前碼流分辨率),抓圖分辨率需要設(shè)備支持,更多取值請(qǐng)參考SDK文檔//JPEG抓圖 Capture a JPEG pictureif (!CHCNetSDK.NET_DVR_CaptureJPEGPicture(m_lUserID, lChannel, ref lpJpegPara, sJpegPicFileName)){iLastErr = CHCNetSDK.NET_DVR_GetLastError();str = "NET_DVR_CaptureJPEGPicture failed, error code= " + iLastErr;}else{str = "Successful to capture the JPEG file and the saved file is " + sJpegPicFileName;flag = true;}return flag; }/// <summary> /// 海康錄像機(jī)開始錄像 /// </summary> /// <param name="sVideoFileName">錄像保存路徑和文件名</param> /// <param name="channelNum">攝像機(jī)通道號(hào)</param> /// <returns></returns> public bool StartTakeVideo(C2SJsonMessage c2sjm) {/*** 錄像的前提是進(jìn)行了預(yù)覽,錄像的流程應(yīng)該是:* 1.開始預(yù)覽* 2.開始錄像* 3.結(jié)束錄像* 4.停止預(yù)覽* */string channelNum = c2sjm.channelNum;string videoFileName = c2sjm.videoFileName;DateTime date = DateTime.Now;string year = date.Year.ToString() + "\\";string month = date.Month.ToString() + "\\";string day = date.Day.ToString() + "\\";bool flag = false;string sVideoFiledDirectory = vidPath + year + month + day;if (!Directory.Exists(sVideoFiledDirectory)){Directory.CreateDirectory(sVideoFiledDirectory);}//錄像保存路徑和文件名 C:\\HYKJ\\Videos\\2019\\08\\08\\jylsh_jccs_hphm_channelNum.mp4string sVideoFileName = sVideoFiledDirectory + videoFileName;if (!recordDic.ContainsKey(channelNum)){//強(qiáng)制I幀 Make a I frameint lChannel = Int16.Parse(channelNum); //通道號(hào) Channel numberCHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, lChannel);//開始錄像 Start recordingif (!CHCNetSDK.NET_DVR_SaveRealData(realHandleDic[channelNum], sVideoFileName)){iLastErr = CHCNetSDK.NET_DVR_GetLastError();str = "NET_DVR_SaveRealData failed, error code= " + iLastErr;}else{recordDic.Add(channelNum, true);flag = true;}}return flag; }/// <summary> /// 海康錄像機(jī)結(jié)束錄像 /// </summary> /// <param name="sVideoFileName">錄像保存路徑和文件名</param> /// <param name="channelNum">攝像機(jī)通道號(hào)</param> /// <returns></returns> public bool StopTakeVideo(C2SJsonMessage c2sjm) {string channelNum = c2sjm.channelNum;string videoFileName = c2sjm.videoFileName;DateTime date = DateTime.Now;string year = date.Year.ToString() + "\\";string month = date.Month.ToString() + "\\";string day = date.Day.ToString() + "\\";bool flag = false;string sVideoFiledDirectory = vidPath + year + month + day;if (!Directory.Exists(sVideoFiledDirectory)){Directory.CreateDirectory(sVideoFiledDirectory);}//錄像保存路徑和文件名 C:\\HYKJ\\Videos\\2019\\08\\08\\jylsh_jccs_hphm_channelNum.mp4string sVideoFileName = sVideoFiledDirectory + videoFileName;if (recordDic.ContainsKey(channelNum)){//停止錄像 Stop recordingif (!CHCNetSDK.NET_DVR_StopSaveRealData(realHandleDic[channelNum])){iLastErr = CHCNetSDK.NET_DVR_GetLastError();str = "NET_DVR_StopSaveRealData failed, error code= " + iLastErr;}else{HKStopPreview(channelNum);//關(guān)閉預(yù)覽str = "Successful to stop recording and the saved file is " + sVideoFileName;recordDic.Remove(channelNum);flag = true;}}return flag; }

2.2.3 C2SJonsMessage

public class C2SJsonMessage{/// <summary>/// 接口id/// </summary>public string jkid;/// <summary>/// 檢驗(yàn)機(jī)構(gòu)編號(hào)/// </summary>public string jyjgbh;/// <summary>/// 檢驗(yàn)流水號(hào)/// </summary>public string jylsh;/// <summary>/// 檢測線代號(hào)/// </summary>public string jcxdh;/// <summary>/// 檢測次數(shù)/// </summary>public string jccs;/// <summary>/// 號(hào)牌號(hào)碼/// </summary>public string hphm;/// <summary>/// 號(hào)牌種類/// </summary>public string hpzl;/// <summary>/// 車輛識(shí)別代號(hào)/// </summary>public string clshbh;/// <summary>/// 檢驗(yàn)項(xiàng)目/// </summary>public string jyxm;/// <summary>/// ??典浵駲C(jī)攝像機(jī)通道號(hào)/// </summary>public string channelNum;/// <summary>/// 同一個(gè)流水號(hào)和檢測次數(shù)的檢測記錄調(diào)用接口的次數(shù),主要給抓拍接口用,用于區(qū)分第幾張抓拍圖片/// </summary>public string cs;/// <summary>/// 圖片文件名稱,建議命名規(guī)則jylsh_jccs_hphm_channelNum_cs.jpg,且只能是jpg格式/// </summary>public string pictureFileName;/// <summary>/// 視頻文件名稱,建議命名規(guī)則jylsh_jccs_hphm_channelNum.mp4,且只能是mp4格式/// </summary>public string videoFileName;}

3.我的實(shí)例資源下載

有興趣的可以看看,沒興趣的就算了,就是個(gè)小例子,反正也沒什么技術(shù)含量

**下載連接地址:https://download.csdn.net/download/cgs_______/11517139 **

總結(jié)

以上是生活随笔為你收集整理的C#使用WebService调用海康SDK实现抓图与录像实时下载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。