最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)IP攝像頭的方法

 更新時間:2015年04月25日 15:33:03   作者:work24  
這篇文章主要介紹了C#實現(xiàn)IP攝像頭的方法,涉及C#IP連接與攝像頭視頻錄像的相關技巧,需要的朋友可以參考下

本文實例講述了C#實現(xiàn)IP攝像頭的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

#region IP攝像頭代碼
/// <summary>
/// ip攝像頭代碼
/// </summary>  
//視頻
private IntPtr m_hChannel;
private IntPtr m_hServer, phPlay;
public delegate void MyInvoke(string str);
public delegate void OutDelegate(IntPtr hSearch, DVSNET_FILE_TIME pFileTime, DVSNET_FILE_INFO pFileInfo, IntPtr pcontext);
//遠程視頻處理
public void BeforeRecordFrame(IntPtr hChannel, ref RECORD_INFO pRecordInfo, ref FRAME_HEADER pFrameHeader, IntPtr pcontext)
{
}
DVSNETClient.FileSearchCallback File_SearchCallback; //遠程視頻回放
public void FileSearchCallback(IntPtr hSearch, ref DVSNET_FILE_TIME pFileTime, ref DVSNET_FILE_INFO pFileInfo, IntPtr pcontext)
{
OutText(hSearch, pFileTime, pFileInfo, pcontext);   
}
public void OutText(IntPtr hSearch, DVSNET_FILE_TIME pFileTime, DVSNET_FILE_INFO pFileInfo, IntPtr pcontext)
{
  if (lvVideo.InvokeRequired)
  {
   OutDelegate outdelegate = new OutDelegate(OutText);
   this.BeginInvoke(outdelegate, new object[] { hSearch, pFileTime, pFileInfo, pcontext });
   return;
  }
  lvVideo.View = View.Details;
  lvVideo.FullRowSelect = true;
  for (int i = 0; i < pFileInfo.sFileName.Count(); i++)
  {
   ListViewItem item1 = new ListViewItem(pFileInfo.sFileName, i);
   lvVideo.Items.AddRange(new ListViewItem[] { item1 });
  }
 }
 private void pb_del_video_Click(object sender, EventArgs e)
 {
  this.Close();
 }
 public void SearchNotify(int nDevType,string sServName,string sServSerial,string sUrl,IntPtr MacAddr,ushort wWebPort,ushort wDataPort,string sSubNetMask,string sGateWay,string sMultiIp,string sDNS,ushort wMultiPort,int nChCount,uint bDHCP,IntPtr pcontext)
 {
  string str = Convert.ToString(wDataPort);
  //string str2 = sUrl + "(" + str + ")";
  string str2 = sUrl;
  this.AddText(str2);
 }
 //賦值給cmbIP
 private void AddText(string str)
 {
  MyInvoke method = new MyInvoke(this.AddTextToCmb);
  base.BeginInvoke(method, new object[] { str });
 }
 public void AddTextToCmb(string str)
 {
  this.CmbIP.Items.Add(str);
 }
 //s搜索服務器
 private void btnVideoSearck_Click(object sender, EventArgs e)
 {
  
   this.CmbIP.Items.Clear();
   errornum errornum = DVSNETClient.DVSNET_SearchServers(0xbb8, 1, new DVSNETClient.SearchNotify(this.SearchNotify), base.Handle, IntPtr.Zero);
   if (errornum == errornum.DVSNET_ERR_OK)
   {
    timerVideo.Enabled = true;
    btnVideoSearck.Enabled = false;
   }
   else
   {
   }
 }
 //打開鏈接
 private void btnVideoOpen_Click(object sender, EventArgs e)
 {
  string text = this.CmbIP.Text;
  string sServIp = text;
  int index = text.IndexOf('(');
  if (index != -1)
  {
   string str3 = new string(text.ToCharArray(), 0, index);
   sServIp = str3;
  }
  errornum errornum = DVSNETClient.DVSNET_OpenServer(this.EdtName.Text, sServIp, Convert.ToUInt16(this.EdtPort.Text), this.EdtUser.Text, this.EdtPassword.Text, ref this.m_hServer, 0, 0);
  this.btnVideoOpen.Enabled = false; //不能點擊
  if (errornum == errornum.DVSNET_ERR_OK)
  {
   DVSNET_SERVER_INFO dvsnet_server_info = new DVSNET_SERVER_INFO();
   MessageBox.Show("打開鏈接成功!");
   dvsnet_server_info = new DVSNET_SERVER_INFO
   {
    lStructSize = Marshal.SizeOf(dvsnet_server_info)
   };
   DVSNETClient.DVSNET_GetServerInfo(this.m_hServer, ref dvsnet_server_info);
   // this.CmbChannel.Items.Clear();
   for (int i = 0; i < dvsnet_server_info.nChnNum; i++)
   {
    int num3 = i + 1;
    // this.CmbChannel.Items.Add(num3.ToString());
   }
   // this.CmbChannel.SelectedIndex = 0;
  }
  else
  {
   MessageBox.Show("打開鏈接失敗,錯誤碼為:" + errornum.ToString());
   this.btnVideoOpen.Enabled = true; //不能點擊
  }
 }
 //關閉鏈接
 private void btnVideoClose_Click(object sender, EventArgs e)
 {
  if (this.m_hChannel != IntPtr.Zero)
  {
   MessageBox.Show("請關閉通道!再關閉鏈接");
  }
  else
  {
   if (this.m_hServer != IntPtr.Zero)
   {
    DVSNETClient.DVSNET_CloseServer(this.m_hServer);
    this.m_hServer = IntPtr.Zero;
    this.btnVideoOpen.Enabled = true; //不能點擊
   }
  }
 }
 //打開通道
 IntPtr selServer = IntPtr.Zero;
 private void btnVideoOpenChnnel_Click(object sender, EventArgs e)
 {
  this.panelVideo.Visible = true;
  this.pannelVideoTwo.Visible = false;
  if (this.m_hServer != IntPtr.Zero)
  {
   this.btnVideoOpenChnnel.Enabled = false; //不能點擊
   DVSNET_CHANNEL_INFO dvsnet_channel_info = new DVSNET_CHANNEL_INFO();
   MessageBox.Show("打開通道成功!請稍候");
   dvsnet_channel_info = new DVSNET_CHANNEL_INFO
   {
    lStructSize = Marshal.SizeOf(dvsnet_channel_info),
    nProtocol = 0,
    hWndDisplay = this.panelVideo.Handle,
    bPlayStart = 1,
    dwStreamNo = 0
   };
   DVSNETClient.DVSNET_OpenChannel(this.m_hServer, Convert.ToUInt16(0), ref dvsnet_channel_info, ref this.m_hChannel);
  }
  else
  {
   MessageBox.Show("請打開鏈接!");
  }
 }
 //關閉通道
 private void btnVideoCloseChnnel_Click(object sender, EventArgs e)
 {
  if (this.m_hChannel != IntPtr.Zero)
  {
   DVSNETClient.DVSNET_CloseChannel(this.m_hChannel);
   MessageBox.Show("關閉通道成功!請稍候");
   this.m_hChannel = IntPtr.Zero;
   this.btnVideoOpenChnnel.Enabled = true; //不能點擊
  }
 }
 //開始錄像
 private void btnVideoOn_Click(object sender, EventArgs e)
 {
  try
  {
   string ss = DateTime.Now.ToString().Replace(":", "-").Replace(" ", "-").Replace("/", "-") + ".asf";  
   if (this.panelVideo.Visible == false)
   {
    MessageBox.Show("請切換到打開通道");
   }
   else
   {
    if (this.m_hChannel != IntPtr.Zero)
    {
     this.btnVideoOn.Enabled = false; //不能點擊
     //DVSNETClient.DVSNET_StartRecord(this.m_hChannel, 1, FILETYPE.FILETYPE_ASF, ss, new DVSNETClient.BeforeRecordFrame(this.BeforeRecordFrame), base.Handle);
     DVSNETClient.DVSNET_StartRecord(this.m_hChannel, 1, FILETYPE.FILETYPE_ASF, ss,Before_RecordFrame, base.Handle);
    }
    else
    {
     MessageBox.Show("請打開通道!");
    }
   }
  }
  catch (Exception ex)
  {
   MessageBox.Show(ex.ToString());
  }  
 }
 //停止錄像
 private void btnStopRec_Click(object sender, EventArgs e)
 {
  DVSNETClient.DVSNET_StopRecord(this.m_hChannel);
  MessageBox.Show("已停止錄像!");
  this.btnVideoOn.Enabled = true; //不能點擊
 }
 //打開本地視頻
 IntPtr phPlayer;
 private void btnsearch_Click(object sender, EventArgs e)
 {
  try
  {
   if (m_hServer != IntPtr.Zero)
   {
    string fName = "";
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.InitialDirectory = Application.StartupPath;
    //注意這里寫路徑時要用c:\而不是c:
    openFileDialog.Filter = "文本文件|*.asf|所有文件|*.asf";
    openFileDialog.RestoreDirectory = true;
    openFileDialog.FilterIndex = 1;
    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
     this.panelVideo.Visible = false;
     this.pannelVideoTwo.Visible = true;
     this.btnsearch.Enabled = false;
     fName = openFileDialog.FileName;
     IntPtr hDisplayWnd = pannelVideoTwo.Handle;
     phPlayer = (IntPtr)0;
     DVSNETClient.DVSPLAYER_ReleaseInstance(phPlayer); //釋放
     DVSNETClient.DVSPLAYER_Stop(phPlayer); //釋放本地
     errornum aa = DVSNETClient.DVSPLAYER_CreateInstance(hDisplayWnd, ref phPlayer, 0);      
     aa = DVSNETClient.DVSPLAYER_OpenFile(phPlayer,ref fName, 1);
     DVSNETClient.DVSPLAYER_Start(phPlayer);
    }
    else
    {
     this.panelVideo.Visible = true;
     this.pannelVideoTwo.Visible = false;
    }
   }
   else
   {
    MessageBox.Show("請打開通道!");
   }
  }
  catch (Exception)
  {
   throw;
  }   
 }
 //停止視頻播放
 private void btnhf_Click(object sender, EventArgs e)
 {
  this.panelVideo.Visible = true;
  this.pannelVideoTwo.Visible = false;
  IntPtr phPlayer = (IntPtr)0;
  DVSNETClient.DVSPLAYER_Stop(phPlayer);
  MessageBox.Show("已停止回放錄像!");
  this.btnsearch.Enabled = true; ;  
 }
 //查找遠程視頻
 private void btnSearchbyName_Click(object sender, EventArgs e)
 {
  if (m_hServer == IntPtr.Zero)
  {
   MessageBox.Show("請先打開鏈接登錄服務器!");
   return;
  }
  this.btnSearchbyName.Enabled = false;
  DVSNET_FILE_TIME pStartTime = new DVSNET_FILE_TIME();
  pStartTime.lYear = (uint)this.dateTimePicker1.Value.Year;
  pStartTime.lMonth = (uint)this.dateTimePicker1.Value.Month;
  pStartTime.lDay = (uint)this.dateTimePicker1.Value.Day;
  pStartTime.nHour = 0;
  pStartTime.nMinute = 0;
  DVSNET_FILE_TIME pEndTime = new DVSNET_FILE_TIME();
  pEndTime.lYear = (uint)this.dateTimePicker1.Value.Year;
  pEndTime.lMonth = (uint)this.dateTimePicker1.Value.Month;
  pEndTime.lDay = (uint)this.dateTimePicker1.Value.Day;
  pEndTime.nHour = 23;
  pEndTime.nMinute = 59;
  IntPtr phSearch = IntPtr.Zero;
  //if(){}
  errornum bak = DVSNETClient.DVSNET_ServerFindFile(m_hServer, 0, 0, (char)0xff, ref pStartTime, ref pEndTime, File_SearchCallback, (IntPtr)0, ref phSearch);
  if (bak != errornum.DVSNET_ERR_OK)
  {
   MessageBox.Show("查找遠程視頻失?。?);
  }   
  this.btnSearchbyName.Enabled = true;
 }
 //鼠標雙擊事件
 private void lvVideo_MouseDoubleClick(object sender, MouseEventArgs e)
 {
  this.panelVideo.Visible = false;
  this.pannelVideoTwo.Visible = true;   
  string sa = "";
  IntPtr hWnd = pannelVideoTwo.Handle;
  if (lvVideo.SelectedItems.Count > 0)
  { //this.listView1.SelectedIndices
   sa = lvVideo.SelectedItems[0].Text.ToString();
  }
  
  DVSNETClient.DVSPLAYER_Stop(phPlayer); //釋放本地回放
  DVSNETClient.DVSNET_ClosePlayFile(phPlay); //釋放遠程
  phPlay = IntPtr.Zero;
  errornum bak = DVSNETClient.DVSNET_PlayFileByName(m_hServer, sa, 1, hWnd, ref phPlay);
  if (bak == errornum.DVSNET_ERR_OK)
  {
   UInt32 value = 0;
   DVSNETClient.DVSNET_ControlPlayFile(phPlay, 1, 0, ref value);
  }
  else
  {
   MessageBox.Show("回放遠程文件 失敗,錯誤碼為" + bak.ToString());
  }
 }
 #endregion
 //時間控件 1s
 private void timerVideo_Tick(object sender, EventArgs e)
 {
  int nStatus = 0;
  errornum errnum = DVSNETClient.DVSNET_GetSearchStatus(ref nStatus);
  if (errnum == errornum.DVSNET_ERR_OK)
  {
   if (nStatus == 1)
   {
    btnVideoSearck.Enabled = true;
    timerVideo.Enabled = false;
    MessageBox.Show("沒有啟動搜索");
   }
   if (nStatus == 2)
   {
    //MessageBox.Show("正在搜索!");
   }
   if (nStatus == 3)
   {
    timerVideo.Enabled = false;
    btnVideoSearck.Enabled = true;
    if (this.CmbIP.Items.Count == 0)
    {
     MessageBox.Show("沒有找到設備!請接上設備");
    }
    else
    {
     MessageBox.Show("已找到設備,請選擇IP地址");
    }
   }
  }
  else
  {
   MessageBox.Show("DVSNET_GetSearchStatus 失敗,錯誤碼為" + errnum.ToString());
  }
}

希望本文所述對大家的C#程序設計有所幫助。

相關文章

  • C#擴展方法實例分析

    C#擴展方法實例分析

    這篇文章主要介紹了C#擴展方法,結(jié)合實例形式分析了C#擴展方法的功能、使用方法及相關注意事項,需要的朋友可以參考下
    2017-06-06
  • 微信跳一跳自動腳本C#代碼實現(xiàn)

    微信跳一跳自動腳本C#代碼實現(xiàn)

    這篇文章主要為大家詳細介紹了微信跳一跳自動腳本C#代碼實現(xiàn)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 使用C#實現(xiàn)數(shù)據(jù)結(jié)構(gòu)堆的代碼

    使用C#實現(xiàn)數(shù)據(jù)結(jié)構(gòu)堆的代碼

    這篇文章主要介紹了使用C#實現(xiàn)數(shù)據(jù)結(jié)構(gòu)堆,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • C#多線程的ResetAbort()方法

    C#多線程的ResetAbort()方法

    這篇文章介紹了C#多線程的ResetAbort()方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C# RGB圖像和灰度圖像互轉(zhuǎn)的實現(xiàn)

    C# RGB圖像和灰度圖像互轉(zhuǎn)的實現(xiàn)

    在我們的圖像類型教程中定義了RGB顏色模型和灰度格式,本文主要介紹了C# RGB圖像和灰度圖像互轉(zhuǎn)的實現(xiàn),文中通過代碼介紹的非常清楚,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • 如何在C#項目中鏈接一個文件夾下的所有文件詳解

    如何在C#項目中鏈接一個文件夾下的所有文件詳解

    很多時候我們需要獲取一個結(jié)構(gòu)未知的文件夾下所有的文件或是指定類型的所有文件,下面這篇文章主要給大家介紹了關于如何在C#項目中鏈接一個文件夾下的所有文件,需要的朋友可以參考下
    2023-02-02
  • C#遍歷文件夾及其子目錄的完整實現(xiàn)方法

    C#遍歷文件夾及其子目錄的完整實現(xiàn)方法

    這篇文章主要介紹了C#遍歷文件夾及其子目錄的方法,涉及C#文件與目錄的基本操作技巧,簡單實用,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • c#獲取本機的IP地址的代碼

    c#獲取本機的IP地址的代碼

    c#獲取本機的IP地址的代碼,需要的朋友可以參考一下
    2013-03-03
  • c#詳解datetime使用示例

    c#詳解datetime使用示例

    本文主要介紹了c# datetime使用示例,大家參考使用吧
    2014-05-05
  • 使用C#開發(fā)ActiveX控件

    使用C#開發(fā)ActiveX控件

    activex控件以前也叫做ole控件,它是微軟ie支持的一種軟件組件或?qū)ο?,可以將其插入到web頁面中,實現(xiàn)在瀏覽器端執(zhí)行動態(tài)程序功能,以增強瀏覽器端的動態(tài)處理能力。通常activex控件都是用c++或vb語言開發(fā),本文介紹另一種方式,使用c#語言開發(fā)activex控件。
    2017-02-02

最新評論

滨州市| 宣汉县| 仁布县| 平和县| 泸溪县| 靖宇县| 宁津县| 丘北县| 永济市| 霍州市| 沿河| 乐山市| 织金县| 会昌县| 峡江县| 依安县| 绍兴市| 贺州市| 西畴县| 祁东县| 韩城市| 句容市| 新乡市| 云霄县| 商城县| 黎平县| 久治县| 乌苏市| 仙桃市| 远安县| 花莲市| 塔城市| 云龙县| 阿图什市| 永修县| 类乌齐县| 怀柔区| 平山县| 麟游县| 吉木乃县| 白银市|