ブラウザベースのクライアント (後で作成します) を使用して接続し、ストリーミング ビデオを視聴できる単純なサーバー アプリケーションを作成したいと考えています。そして、C#を使いたいです。
Web カメラを介してビデオまたは高速画像をキャプチャし、ネットワーク経由で送信するには何が必要ですか?
「ボックス内のキャプチャ/ストリーマー」コンポーネントが必要な場合は、他の人が言及したようにいくつかあります。
すべてを低レベルで制御したい場合は、同志のハッカーが指摘しているように、DirectShow を使用する必要があります。C# で DirectShow を使用する最良の方法は、DirectShow.Netライブラリを使用することです。このライブラリには、すべての DirectShow COM API がラップされており、多くの便利なショートカット関数が含まれています。
キャプチャとストリーミングに加えて、録音、オーディオとビデオのフォーマット変換、オーディオとビデオのライブ フィルタなど、さまざまなことができます。
Microsoft は、DirectShow がなくなると主張していますが、DirectShow が提供するすべてのことを行う新しいライブラリまたは API をまだリリースしていません。彼らがリリースした最新のものの多くは、まだ内部の DirectShow であると思われます。Microsoft でのステータスのため、MSDN やフォーラムで見つけることができるもの以外には、本や参考文献はあまりありません。昨年、それを使用したプロジェクトを開始したとき、このテーマに関する最高の本であるMicrosoft DirectShow のプログラミングは絶版で、中古で約 350 ドルでした。
このための通常の API は DirectShow です。
P/Invoke を使用して C++ API をインポートできますが、これを行っているプロジェクトがすでにいくつかあると思います。
http://channel9.msdn.com/forums/TechOff/93476-Programatically-Using-A-Webcam-In-C/
http://www.codeproject.com/KB/directx/DirXVidStrm.aspx
ストリーミング部分を取得するには、おそらく DirectShow を使用して圧縮コーデックを適用し、ラグを減らしてから、ストリームを取得して送信します。マルチキャストを使用してネットワーク負荷を軽減することを検討できます。
VideoLANを使用できます。VideoLAN はサーバーとして機能します (または、より詳細に制御するために独自の C# アプリケーションをラップすることもできます)。また、ビューアー用の .NET ラッパーを使用して C# クライアントに埋め込むこともできます。
プロジェクトにVideoCapXを使用しました。メディア プレーヤーで開くことができる MMS/ASF ストリームとしてストリーミングされます。その後、メディア プレーヤーを Web ページに埋め込むことができます。
あまり制御する必要がない場合、またはコードを記述せずに VideoCapX を試してみたい場合は、U-Broadcastを試してください。彼らは裏で VideoCapX を使用しています。
Web カメラからブラウザーに画像をストリーミングする別のオプションは、mjpeg を使用することです。これは、最近のほとんどのブラウザーがタグの一部としてサポートする一連の jpeg 画像です。C# で記述されたサンプル サーバーを次に示します。
https://www.codeproject.com/articles/371955/motion-jpeg-streaming-server
これは LAN 経由ではうまく機能しますが、mjpeg は他のビデオ コーデック (h264、VP8 など) ほど効率的ではないため、インターネット経由ではうまく機能しません。
Web ブラウザー内からビデオを録画したい場合、唯一のオプションは Flash だと思います。私たちは同じことをしようとしています。私たちも主に .NET ハウスであり、.NET を使用して Webcam _from_within_the_browser_ をキャプチャする方法がわかりません。ここで言及されている他のすべてのソリューションは、デスクトップ アプリに満足している場合、おそらくうまく機能するでしょう。