Прямая трансляция с DirectShow и Windows Media Format SDK

Во-первых, немного предыстории:
Я разрабатываю приложение 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).

К сожалению, у меня практически нет опыта работы с медиапотоками. Итак, мой первый вопрос: можно ли вообще вести потоковую передачу так, как я описал?

И если это возможно, разумно ли это или мне следует рассмотреть возможность использования других библиотек / фреймворков?


person Community    schedule 24.04.2009    source источник


Ответы (1)


При использовании DShow и / или WMF SDK вы получите максимальную гибкость, если ваша единственная цель - передавать видео / аудио в Silverlight, вы можете использовать что-то вроде Windows Media Encoder 9 или вы можете использовать новый Expression Encoder. Оба поддерживают потоковую передачу с веб-камеры и микрофона в точку публикации Windows Media Server или могут размещать поток на локальном порту. У обоих есть SDK, доступный через .NET (WME использует взаимодействие COM, а Encoder имеет собственный .NET API). Этот поток совместим с Silverlight и Windows Media Player.

person Jeremiah Morrill    schedule 29.08.2009