10

私はAForgeライブラリを使用して、WebカメラからPictureBoxへのライブフィードを表示するこの小さなプログラムを作成しました。

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カメラからストリームを取得する必要もあります。それを取得するための最良の方法は何ですか?

4

5 に答える 5

17

同じAForge.netのMJPEGStreamで解決しました:)

MJPEGStream stream = new MJPEGStream("http://192.168.2.5:8080/videofeed");
            stream.NewFrame += new NewFrameEventHandler(video_NewFrame);
            stream.Start();
于 2011-09-29T10:32:19.913 に答える
2

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

したがって、まず最初に、関心のあるモデルについて具体的にする必要があります。

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

次のチャンスは、カメラがよく知られたストリーミングプロトコルを実装していることです。この場合、一部の汎用ドライバーも正常に機能する可能性があります。

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

于 2011-09-29T09:31:05.560 に答える
2

私はかつてdirectShow.netライブラリを使用していました。DirectShowのほとんどの機能にアクセスでき、そのうちの1つがキャプチャです。DirectShowでipWebカメラを使用できる場合は、プログラムでも使用できます。

于 2011-09-29T09:32:39.653 に答える
2

あなたと同じ問題が私にもありました。それは、C# を使用して IP カメラ ソリューションを開発またはカスタマイズする私の最後の年のプロジェクトでした。しかし、IP カメラ ストリームに簡単にアクセスできる C# で記述されたコードをブラウジングして取得することに多くの時間を費やし、すぐにサード パーティの Ozeeki sdk を見つけました。しかし、これは試用版であり、有効期限が 1 週間近くあり、機能しません。まず、カメラの 1 つを選択するために自分自身を制限する必要があります。私の場合、HIkvision ネットワーク カメラを使用しています。 ここから Hikvision Camera 用の Device Network SDK をダウンロードするだけです: http://www.hikvision.com/en/us/download_more.asp?id=1482

それを解凍すると、SDK フォルダーの 4 つのサブフォルダーにある可能性があります。「doc」フォルダ内に「Device Network SDK Programming Manual」があります。これを開き、「Programming Guideline」ツリーを展開します。Main Procedure API Reference または Preview Module Procedure をクリックします。ここでは、関数を呼び出してカメラからライブ ストリームを取得するために必要なすべてのロード マップを示します。すべての関数の宣言は、「Basic Interface Definition」ツリー内にあり、それを展開して、すべてを 1 つずつ読み取ります。 ゲームはここで終わりではなく、始まったばかりです。 すべての機能を備えた SDk は、C/C++ アンマネージ コード ベースで記述されています。また、マネージ C# プロジェクト ソリューションに追加することはできません。したがって、カメラからストリームを取得するために使用されるすべてのラッパーを作成し、c# から呼び出す必要があります。ドキュメント マニュアルを参照して、それらがどのような関数であるかを確認してください。Twitter でフォローして ください: https://twitter.com/CodingVampire

于 2015-05-07T20:12:50.137 に答える