私はCGIコマンドを使用して長い間ビデオを表示するために、IPカメラを使用してc#2013、Windowsフォームを使用してプロジェクトを作成しています。 私が知った記事から、IPカメラのストリーミングビデオの復帰は連続した複数の部分からなるストリームであることがわかります。私はこのようなビデオを表示するサンプルをいくつか見つけましたWriting an IP Camera Viewer in C# 5.0 IPカメラ連続スナップショット対ビデオ
単一の画像を表す単一の部分を抽出して表示するコードがたくさんあります。 また、次のコードを使用してカメラからスナップショットを連続して撮ろうとしました。
HttpWebRequest req=(HttpWebRequest)WebRequest.Create("http://192.168.1.200/snap1080");
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Stream strm = res.GetResponseStream();
image.Image = Image.FromStream(strm);
とこのコードを1秒間ループして繰り返し、このコードを繰り返します。 1秒間に撮影されたスナップショット数は88〜114枚/秒です
IMHOビデオを表示する最初の例は、マルチパートレスポンスの単一部分を抽出するための多くの処理を行い、それは連続スナップショットを撮る他の方法ほど遅いかもしれません。 ビデオを表示する2つの方法に違いがある場合は、この問題で他の開発者の経験を求めます。また、メモリ上で連続した複数の部分からなるストリームを受信することの効果を知りたい場合は、それが安全か、メモリ不足エラーが発生します。 ありがとうございます。
スナップショットを実行してビデオとして再生する場合のメモリの問題は心配していません。あなたが言ったように、イメージを破棄することができます。ストリームを処理しなかった場合、ストリームはイメージバイト。私は2番目のケースではメモリが心配です。私はこの場合メモリストリームを処理できないと思います。 – Ahmed
Image.FromStream()を呼び出すと、ストリームが再び使用されないようにデータをコピーしています。ビデオを一定の返送データで使用している場合は、HttpResponseストリームを閉じずに、送信されたバイトを使用して画像を作成します。これは、MemoryStreamを使用して行うことができ、メモリストリームはImageが作成された後に破棄することができます。 – netniV
netniV、ご協力いただきありがとうございます。あなたは別のストリームに1つの画像を作成するバイトを取り、これを処分することができますが、HttpResponseストリーム自体についてはどうなりますか(それは私が心配していることです) – Ahmed