Прямая трансляция с помощью DirectShow и Windows Media Format SDK - PullRequest
1 голос
/ 24 апреля 2009

Сначала немного фона:
Я занимаюсь разработкой приложения 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).

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

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

1 Ответ

1 голос
/ 29 августа 2009

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

...