Во-первых, немного предыстории:
Я разрабатываю приложение Silverlight 3 и хочу добавить поддержку потоковой передачи в реальном времени (веб-камера + микрофон в качестве входа). К сожалению, Silverlight не может получить доступ к веб-камере или микрофону, поэтому мне нужно создать автономное приложение для создания медиапотока. Я полагаю, что Silverlight лучше всего работает с технологией Microsoft, поэтому я хочу использовать формат ASF с кодировкой WMV / WMA.
After doing some research, here is what I think I could do:
- Кажется, что с помощью DirectShow можно захватить и веб-камеру, и микрофон, а затем объединить их в один «поток».
- Чтобы закодировать поток, мне, вероятно, нужно передать его в библиотеки SDK формата Windows Media (документация MSDN описывает, как использовать DirectShow с WM ASF Writer).
- Я думаю, тогда появится возможность использовать что-то вроде "Network Sink" для широковещательной передачи потока ASF (без записи его на жесткий диск).
- Я предполагаю, что подключение большого количества клиентов к потоку будет довольно тяжелым для полосы пропускания, поэтому мне, вероятно, следует отправить поток на сервер и транслировать его оттуда. Я просто не знаю, можно ли использовать комбинацию ASF Reader / Writer для «передачи» потока через сервер. Я также не знаю, смогу ли я использовать многоадресную рассылку для достижения аналогичного результата.
Я планирую использовать C #, хотя это, вероятно, не имеет большого значения, поскольку мне все равно придется использовать некоторые оболочки для библиотек C ++ (например, DirectShow.Net или SlimDX).
К сожалению, у меня практически нет опыта работы с медиапотоками. Итак, мой первый вопрос: можно ли вообще вести потоковую передачу так, как я описал?
И если это возможно, разумно ли это или мне следует рассмотреть возможность использования других библиотек / фреймворков?