Потоковая передача видео на медиа-сервер на основе RTMP (Red5) с использованием C #

Я пишу приложение на основе C # .Net, которое требует публикации видео- и аудиопотоков на Red 5 Media Server и извлечения того же опубликованного потока в другом приложении в локальной сети, а затем в Интернете.

Короче говоря, я намерен использовать Red5 в качестве промежуточного звена или прокси для передачи видео- и аудиоданных между двумя клиентами.

[клиент 1] ‹-Видео и аудио ->‹ - Видео и аудио -> [Клиент 2]

Я ищу .NET-реализацию (библиотеку) протокола RTMP, которая может помочь мне опубликовать поток на медиа-сервере и удалить опубликованный поток и воспроизвести его в моем приложении.

Я поискал SOF и пришел к следующим вариантам:

  • Клиентская библиотека Borrocoli RTMP
  • FlourineFx.NET
  • WebORb.Net

У каждого есть свои ограничения.

  1. Библиотека Borrocoli RTMP имеет только поддержку plyback для аудио / видеопотоков, но нет возможности публиковать видео / аудиопоток на медиа-сервере. Я играл с библиотекой и видел ее примеры, но безрезультатно. Если я ошибаюсь, поправьте меня.

  2. FlourinFx.Net сообщает, что поддерживает методы NetStream.Publish (), NetStream.AttachAudio () и NetStream.AttachVideo (). Но в последнем снимке кода ничего подобного нет. То же самое и с их производственным выпуском. Класс NetStream не имеет указанных методов и / или не имеет методов, которые могут помочь публиковать потоковый контент НА медиа-сервере.

  3. WebOrb.Net: Я не исследовал его, но, как видно из их страницы лицензирования, бесплатная версия работает только с IIS. В корпоративной версии, похоже, есть вся поддержка публикации потокового видео ...

Вопросы:

  1. Могу ли я использовать библиотеку WebOrb.Net вместе с Red5 Media Server?
  2. Позволит ли мне бесплатная версия публиковать аудио и видео на медиа-сервере Red5?
  3. Могу ли я воспользоваться какой-либо другой бесплатной альтернативой, если вышеперечисленные вопросы недействительны?

person Steve Johnson    schedule 09.04.2012    source источник
comment
Нет, :\. Как я уже сказал, ни одна из доступных библиотек не обеспечивает возможности сервера или потоковой передачи на сервер, насколько мне известно, за исключением Webordb.Net. В последней версии SVN FlourineFX есть некоторый код, который, похоже, может выполнить эту работу ... но, возможно, потребуется много рефакторинга, чтобы сделать это, у него действительно есть что-то из коробки, чтобы сделать это. И играть с AMF0, чтобы сделать это, кажется большим трудом ... Если вы встретите какой-либо бесплатный api, который предоставляет поток на сервер из функции клиентского приложения, пожалуйста, дайте мне знать. Спасибо   -  person Steve Johnson    schedule 19.05.2012
comment
Однажды я просмотрел все это. Брокколи и фтор были в моем списке потенциальных продуктов. Ничего не оказалось очень полезным. В итоге я сменил технологию и вообще отказался от этого пути. Я знаю, что это не лучший совет мира, но это долгий и трудный путь.   -  person Gandalf458    schedule 07.01.2014
comment
Вам нужно, чтобы потоковое видео было доступно для потоковой передачи на клиент 2, прежде чем полностью передавать его на сервер?   -  person Rip-Off    schedule 26.03.2014
comment
да. на самом деле мне это нужно в функции однорангового видео. Однако, если требуется потоковый сервер, такой как RED5 или FMS, я тоже могу его использовать!   -  person Steve Johnson    schedule 27.03.2014


Ответы (3)


Вы можете использовать ffmpeg для отправки потока на Red 5 MediaServer. Установите исходное видео на ffmpeg, а вывод - на rtmp red5, примерно так:

ffmpeg -re -i file.mp4 -c copy -f flv rtmp://server/live/streamName

См. Этот ответ, где приведены примеры интеграции ffmpeg в C #.

person tmac12    schedule 05.11.2014
comment
Этот ответ недостаточно подробный. Обновите его, включив в него соответствующую информацию. - person Chris; 05.11.2014

вы можете использовать weborb.lib для одноранговой потоковой передачи видео, используя flex и .net по протоколу RTMP. вы можете использовать для одноранговой потоковой передачи. ваш процесс может быть выполнен следующим образом ... 1. разработать код клиента Flex подключение к серверу и подписка на получение серверных обновлений с показаниями ЦП. Код также включает диаграмму для визуализации полученных данных. 2. "Обработчик приложений" на стороне сервера, который подключается к WebORB, опрашивает ЦП и доставляет данные клиенту. Он будет работать, попробуйте.

person user3611298    schedule 28.05.2014

Используйте RTMPdump librtmp. Он написан на C, но вы сможете достаточно легко написать для него оболочки C #.

person hyc    schedule 06.12.2014