【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.264やMPEGには対応できません。このへんはVLCを使う方法もあるので、また紹介します。