ブラウザベースのクライアント(後で作成します)を使用して接続し、ストリーミングビデオを視聴できる単純なサーバーアプリケーションを作成します。そして、私はC#を使いたいです。
Webカメラでビデオまたは高速画像をキャプチャし、ネットワーク経由で送信するには何が必要ですか?
「ボックス内のキャプチャ/ストリーマー」コンポーネントが必要な場合は、他の人が述べたようにいくつかあります。
すべてを低レベルで制御したい場合は、alliedhackerが指摘するようにDirectShowを使用する必要があります。 C#でDirectShowを使用する最良の方法は、 DirectShow.Net ライブラリを使用することです。これは、DirectShow COM APIをすべてラップし、多くの便利なショートカット機能を備えています。
キャプチャとストリーミングに加えて、録音、オーディオとビデオのフォーマット変換、オーディオとビデオのライブフィルター、その他多くの機能を実行できます。
Microsoftは、DirectShowはなくなると主張しているが、DirectShowが提供するすべてを実行する新しいライブラリまたはAPIをまだリリースしていない。彼らがリリースした最新のものの多くは、まだ内部のDirectShowだと思う。マイクロソフトでのステータスのため、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を試してみたい場合は、 -Broadcast を試してください。彼らはVideoCapXを舞台裏で使用します。
Webブラウザー内からビデオを録画する場合、唯一の選択肢はFlashであると思います。同じことをしようとしています。私たちも主に.NETの家であり、.NETを使用してWebカメラ_from_within_the_browser_をキャプチャする方法がありません。ここに記載されている他のすべてのソリューションは、デスクトップアプリに満足していれば、おそらくうまく機能します。
ウェブカメラからブラウザに画像をストリーミングする別のオプションは、mjpeg経由です。これは、最新のブラウザのほとんどがタグの一部としてサポートしている一連のjpegイメージです。 C#で記述されたサンプルサーバーを次に示します。
https://www.codeproject.com/articles/371955/motion-jpeg-streaming-server
これはLAN上ではうまく機能しますが、mjpegは他のビデオコーデック(h264、VP8など)ほど効率的ではないため、インターネット上ではあまり機能しません。