Сначала немного фона:
Я занимаюсь разработкой приложения Silverlight 3 и хочу добавить поддержку потокового вещания (веб-камера + микрофон в качестве входных данных). К сожалению, Silverlight не может получить доступ к веб-камере или самому микрофону, поэтому мне нужно создать отдельное приложение для создания медиапотока. Я предполагаю, что Silverlight лучше всего будет работать с технологией Microsoft, поэтому я хочу использовать формат ASF с кодировкой WMV / WMA.
После некоторых исследований я думаю, что смогу:
- Похоже, что с помощью DirectShow можно захватить вход веб-камеры и микрофона, а затем объединить их в один «поток».
- Для кодирования потока мне, вероятно, нужно передать его в библиотеки Windows Media Format SDK (документация MSDN описывает, как использовать DirectShow с WM ASF Writer).
- Я думаю, что тогда будет возможно использовать что-то вроде "Network Sink" для трансляции потока ASF (без записи его на HDD).
- Я полагаю, что подключение большого количества клиентов к потоку было бы довольно тяжелым по пропускной способности, поэтому я, вероятно, должен отправить поток на сервер и отослать его оттуда. Я просто не знаю, возможно ли использовать комбинацию ASF Reader / Writer, чтобы «пропустить» поток через сервер. Я также не знаю, смогу ли я использовать многоадресную рассылку для достижения аналогичного результата.
Я планирую использовать C #, хотя это, вероятно, не имеет большого значения, так как мне все равно придется использовать некоторые оболочки для библиотек C ++ (например, DirectShow.Net или SlimDX).
К сожалению, у меня практически нет опыта работы с медиапотоками. Итак, мой первый вопрос: возможно ли потоковое вещание, как я описал?
И если это возможно, это разумный способ или я должен рассмотреть вопрос об использовании некоторых других библиотек / фреймворков?