日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

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

1.海康設備網絡SDK下載

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

下載完畢解壓后的目錄結構如下:

2.代碼實現

通過參考“CH-HCNetSDKV6.0.2.35_build20190411_Win32\Demo示例\3- C# 開發示例\1-實時預覽示例代碼一”路徑下的示例項目,控制海康錄像機進行抓拍圖片與實時下載錄像功能

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

2.2 主要代碼

2.2.1 Web.config

<appSettings><!--海康攝像機配置--><add key="dvrIp" value="10.14.8.70"/><add key="dvrPort" value="8000"/><add key="dvrUserName" value="admin"/><add key="dvrPassword" value="12345"/><!--圖片視頻存儲路徑配置--><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(); //錄像機IP public static string dvrPort = ConfigurationManager.AppSettings["dvrPort"].ToString(); //錄像機端口 public static string dvrUserName = ConfigurationManager.AppSettings["dvrUserName"].ToString(); //錄像機用戶名 public static string dvrPassword = ConfigurationManager.AppSettings["dvrPassword"].ToString(); //錄像機密碼public static string picPath = ConfigurationManager.AppSettings["picturePath"].ToString(); //圖片存儲路徑 C:\\HYKJ\\Pictures\\ public static string vidPath = ConfigurationManager.AppSettings["videoPath"].ToString(); //錄像存儲路徑 C:\\HYKJ\\Videos\\/// <summary>/// 海康錄像機登錄實例/// </summary>private static Int32 m_lUserID = -1;/// <summary>/// 海康錯誤號/// </summary>private static uint iLastErr = 0;/// <summary>/// 用于接收海康調用接口返回信息/// </summary>private static string str;/// <summary>/// 海康SDK是否初始化/// </summary>private static bool m_bInitSDK = false;/// <summary>/// 海康預覽數據回調/// </summary>private static CHCNetSDK.REALDATACALLBACK RealData = null;/// <summary>/// 海康預覽集合/// </summary>private static Dictionary<string, Int32> realHandleDic = new Dictionary<string, Int32>();/// <summary>/// 海康錄像集合/// </summary>private static Dictionary<string, bool> recordDic = new Dictionary<string, bool>();/// <summary> /// 海康錄像機拍照 /// </summary> /// <param name="channelNum">攝像機通道號</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); //通道號 Channel numberCHCNetSDK.NET_DVR_JPEGPARA lpJpegPara = new CHCNetSDK.NET_DVR_JPEGPARA();lpJpegPara.wPicQuality = 0; //圖像質量 Image qualitylpJpegPara.wPicSize = 0xff; //抓圖分辨率 Picture size: 2- 4CIF,0xff- Auto(使用當前碼流分辨率),抓圖分辨率需要設備支持,更多取值請參考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> /// 海康錄像機開始錄像 /// </summary> /// <param name="sVideoFileName">錄像保存路徑和文件名</param> /// <param name="channelNum">攝像機通道號</param> /// <returns></returns> public bool StartTakeVideo(C2SJsonMessage c2sjm) {/*** 錄像的前提是進行了預覽,錄像的流程應該是:* 1.開始預覽* 2.開始錄像* 3.結束錄像* 4.停止預覽* */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)){//強制I幀 Make a I frameint lChannel = Int16.Parse(channelNum); //通道號 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> /// 海康錄像機結束錄像 /// </summary> /// <param name="sVideoFileName">錄像保存路徑和文件名</param> /// <param name="channelNum">攝像機通道號</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);//關閉預覽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>/// 檢驗機構編號/// </summary>public string jyjgbh;/// <summary>/// 檢驗流水號/// </summary>public string jylsh;/// <summary>/// 檢測線代號/// </summary>public string jcxdh;/// <summary>/// 檢測次數/// </summary>public string jccs;/// <summary>/// 號牌號碼/// </summary>public string hphm;/// <summary>/// 號牌種類/// </summary>public string hpzl;/// <summary>/// 車輛識別代號/// </summary>public string clshbh;/// <summary>/// 檢驗項目/// </summary>public string jyxm;/// <summary>/// 海康錄像機攝像機通道號/// </summary>public string channelNum;/// <summary>/// 同一個流水號和檢測次數的檢測記錄調用接口的次數,主要給抓拍接口用,用于區分第幾張抓拍圖片/// </summary>public string cs;/// <summary>/// 圖片文件名稱,建議命名規則jylsh_jccs_hphm_channelNum_cs.jpg,且只能是jpg格式/// </summary>public string pictureFileName;/// <summary>/// 視頻文件名稱,建議命名規則jylsh_jccs_hphm_channelNum.mp4,且只能是mp4格式/// </summary>public string videoFileName;}

3.我的實例資源下載

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。