2011-09-29 12 views
5

私はこの小さなプログラムを作るためにAForgeライブラリを使用しました。この小さなプログラムは、WebカメラからPictureBoxへのライブフィードを表示します。IPカメラのストリームをC#に取得する方法は?

private FilterInfoCollection VideoCaptureDevices; 
private VideoCaptureDevice FinalVideoDevice; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); 
    try 
    { 
     foreach (FilterInfo VidCapDev in VideoCaptureDevices) 
     { 
     comboBox1.Items.Add(VidCapDev.Name); 
     comboBox1.SelectedIndex = 0; 
     } 
     FinalVideoDevice = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString); 
     FinalVideoDevice.NewFrame += new NewFrameEventHandler(FinalVideoDevice_NewFrame); 
     FinalVideoDevice.Start(); 
    } 
    catch 
    { 
     MessageBox.Show("No camera found. Please connect your camera and click RESET."); 
    } 
} 

     ////////////////////////////////////////////////////////////////////////////////////////// 

void FinalVideoDevice_NewFrame(object sender, NewFrameEventArgs e) 
{ 
    try 
    { 
     pictureBox1.Image = (Bitmap)e.Frame.Clone(); 
    } 
    catch { } 
} 

でも、IPカメラからストリームを取得する必要があります。どのようなアイデアを得るための最良の方法は何ですか?

答えて

2

IPカメラにはWindowsに特定のメディアインターフェイス/ APIはありません.LAN上のデバイスだけです。また、数百、数千のモデルがあり、共通のアクセスインタフェースを共有していません(近い場合もあります)。

まず、興味のあるモデルについて具体的に説明する必要があります。

また、IPカメラを「IPカメラ用DirectShowドライバ」などのマルチメディアデバイスとして公開する追加の「ドライバ」も提供しています。ほとんどの場合、これらはベンダー固有のもので、他のカメラでは動作しません。

次のチャンスは、カメラがよく知られているストリーミングプロトコルを実装していることです。この場合、一般的なドライバがうまくいくかもしれません。

あなたがC#の人である限り、IPカメラのHTTP/CGI APIをチェックし、コードでストリーミングを実装し、デバイスとのHTTP/TCP/UDP接続を介してデータを送受信できます。

2

私はかつてdirectShow.net libraryで作業しました。 DirectShowのほとんどの機能にアクセスすることができ、そのうちの1つはキャプチャです。 DirectShowでip webcamを使用することができれば、あなたのプログラムでそれを使うこともできます。

+0

+1のベストウィッシュ - それらの間であることウェブカメラを。 –

12

が同じAForge.netからMJPEGStreamでそれを解決:)

MJPEGStream stream = new MJPEGStream("http://192.168.2.5:8080/videofeed"); 
      stream.NewFrame += new NewFrameEventHandler(video_NewFrame); 
      stream.Start(); 
+4

StreamをPictureBoxコントロールに表示しますか? –

2

同じ問題を、あなたのように私とあった、そしてそれは、C#を使用してIPカメラソリューションを開発したりカスタマイズする私の最終年度のプロジェクトでした。しかし、私は簡単にipカメラのストリームにアクセスできるC#で書かれたコードを閲覧するためにブラウジングを行うことで多くの時間を無駄にしてしまい、すぐに第三者Ozeeki sdkを見つけました。しかし、これは試用であり、1週間近く失効しています。また、Ozeekiは自分のサイトのBacklinksだけを望んでいるかもしれません。 まず、カメラのいずれかを選択するために自分自身を制限する必要があります。私の場合、私はHIkvisionネットワークカメラを持っています。 ただ、ここからのHikvisionカメラ用デバイスネットワークSDKをダウンロードしてください: http://www.hikvision.com/en/us/download_more.asp?id=1482

は、それを解凍して、あなたは、SDKフォルダに格納されていて、4つのサブフォルダ。 "doc"フォルダの中に "Device Network SDK Programming Manual"があります。 これを開き、 "Programming Guideline"ツリーを展開します。 メインプロシージャAPIリファレンスまたはモジュールのプレビューをクリックします。ここでは、すべての道路を見つけることができます地図カメラからのライブストリームを取得するために関数を呼び出すためにどのような手順を取る必要があります。 すべての関数の宣言は、 "Basic Interface Definition"ツリーの中にあり、それを展開して1つずつ読むことができます。 ゲームはここにあるわけではなく、ちょうどスタートです。 すべての機能を持つSDkは、C/C++の非管理コードベースで記述されています.Manged C#プロジェクトソリューションでは追加できません。したがって、カメラからストリームを取得する際に使用されるすべてのラッパーを作成し、C#から呼び出す必要があります。 はTwitterで私に従ってください:私はキャプチャデバイスのすべての種類のハンドルを商用ソフトウェアでそれを使用するようhttps://twitter.com/CodingVampire はあなたに幸運

+0

どのようにして読み込み可能なSDKドキュメントを取得できましたか? – sivabudh