まず、いくつかの背景:
Silverlight 3アプリケーションを開発していて、ライブストリーミング(入力としてWebカメラ+マイク)のサポートを追加したいと考えています。残念ながら、SilverlightはWebカメラやマイク自体にアクセスできないため、メディアストリームを確立するためのスタンドアロンアプリケーションを作成する必要があります。SilverlightはMicrosoftテクノロジで最適に機能すると思うので、WMV/WMAエンコーディングでASF形式を使用したいと思います。
いくつかの調査を行った後、私ができると思うことは次のとおりです。
- DirectShowを使用してWebカメラとマイクの両方の入力をキャプチャし、それを1つの「ストリーム」に結合することは可能のようです。
- ストリームをエンコードするには、おそらくWindows Media Format SDKライブラリに渡す必要があります(MSDNドキュメントには、WM ASF WriterでDirectShowを使用する方法が記載されています)。
- そうすれば、「ネットワークシンク」のようなものを使用してASFストリームを(HDDに書き込まずに)ブロードキャストできるようになるはずです。
- 多くのクライアントをストリームに接続すると帯域幅がかなり重くなると思うので、おそらくストリームをサーバーに送信してそこからブロードキャストする必要があります。ASFリーダー/ライターの組み合わせを使用してサーバーを介してストリームを「渡す」ことが可能かどうかはわかりません。また、マルチキャストを使用して同様の結果を達成できるかどうかもわかりません。
私はC#を使用することを計画していますが、とにかくC ++ライブラリ(DirectShow.NetやSlimDXなど)のラッパーを使用する必要があるため、これはおそらく大きな違いにはなりません。
残念ながら、私はメディアストリームを処理した経験がほとんどありません。だから私の最初の質問は、私が説明した方法でストリーミングを行うことさえ可能ですか?
そして、それが可能であれば、それは賢明な方法ですか、それともいくつかの異なるライブラリ/フレームワークの使用を検討する必要がありますか?