【C#】IPカメラからストリームを取得してみる

最近の防犯カメラなどは従来の同軸ケーブルを使った、アナログタイプからIPパケットを使ったIPカメラに少しずつ変わってきています。

で、そのIPカメラから送信されている動画をストリームと言います。

そのストリームから静止画を取得するコードを書いてみます。

ライブラリはAForge.NET*1を使用します。NuGetで取得してもいいですし、公式サイトからZIPを引っ張ってきてもOKです*2

private static void Main()
{
VideoStream.Source = "URL_HERE";
VideoStream.Login = "USERNAME_HERE";
VideoStream.Password = "PASSWORD_HERE";

VideoStream.NewFrame += (sender,e) =>{
Bitmap frameData = new Bitmap(e.Frame);
};

VideoStream.VideoSourceError += (sender,e) =>{
Console.WriteLine("Err");
};

VideoStream.Start();
}

イベントハンドララムダ式で直接書いていますが、普通にメソッドにしても大丈夫です。

この方法だと、Motion JPEGのストリームしか取得できないので、最近主流のH.264MPEGには対応できません。このへんはVLCを使う方法もあるので、また紹介します。