Потоковое видео на сервер мультимедиа на основе RTMP (Red5) с использованием С#
Я пишу приложение на базе С#.Net, которое требует публикации видео и аудиопотоков на Red 5 Media Server и получения того же опубликованного потока в другом приложении в локальной сети, а затем в Интернете.
Короче говоря, я намерен использовать Red5 в качестве промежуточного или прокси для передачи видео и аудио данных между двумя клиентами.
[клиент 1] < -Video and Audio → < - Video and Audio → [Client 2]
Я ищу .NET-реализацию (библиотеку) протокола RTMP, которая может помочь мне опубликовать поток на Media Server и отредактировать опубликованный поток и воспроизвести его в моем приложении.
Я искал SOF и пришел к следующим опциям:
- Клиентская библиотека Borrocoli RTMP
- FlourineFx.NET
- WebORb.Net
У каждого есть некоторые ограничения.
-
Библиотека Borrocoli RTMP поддерживает только поддержку аудио/видео потоков, но нет возможности публиковать видео/аудиопоток на медиа-сервере. Я играл с библиотекой и видел ее примеры, но безуспешно. Если я ошибаюсь, исправьте меня.
-
FlourinFx.Net говорит, что поддерживает методы NetStream.Publish(), NetStream.AttachAudio() и NetStream.AttachVideo(). Но в последнем снимке кода нет ничего подобного. То же самое верно для их выпуска продукции. Класс NetStream не имеет указанных методов и/или не имеет методов, которые могут помочь опубликовать потоковый контент на медиасервер.
-
WebOrb.Net: я не изучал его, но, как видно из их страницы лицензирования, бесплатная версия работает только с IIS. По всей видимости, корпоративная версия поддерживает публикацию потокового видео...
Вопросы:
- Возможно ли, что я могу использовать библиотеку WebOrb.Net совместно с Red5 Media Server?
- Будет ли бесплатная версия позволять мне публиковать аудио и видео на медиа-сервере Red5?
- Есть ли другая свободная альтернатива, которую я могу использовать, если указанные выше вопросы недействительны?
Ответы
Ответ 1
Вы можете использовать ffmpeg для отправки потока на Red 5 MediaServer..
Установите исходное видео в ffmpeg и вывод в rtmp из red5, примерно так:
ffmpeg -re -i file.mp4 -c copy -f flv rtmp://server/live/streamName
См. этот ответ для примеров интеграции ffmpeg в С#.
Ответ 2
вы можете использовать weborb.lib для одноранговой потоковой передачи видео с помощью flex и .net через протокол RTMP. Вы можете использовать для одноранговой потоковой передачи. Ваш процесс может быть выполнен следующим образом...
1. создать клиентский код Flex, подключающийся к серверу, и подписку на получение обновлений на стороне сервера с показаниями CPU.
Код также включает диаграмму для визуализации полученных данных.
2. "Обработчик приложений на стороне сервера", который подключается к WebORB, проверяет процессор и передает данные клиенту. Он будет работать, попробуйте.
Ответ 3
Используйте RTMPdump librtmp. Это написано на C, но вы должны иметь возможность легко писать С# обертки.