Как сделать прямую трансляцию видео через VPS?

Я просмотрел миллион ресурсов, и я не могу найти окончательного ответа на этот вопрос.

Я хочу сделать небольшой масштаб (возможно, максимум 50 зрителей), потоковое видео в реальном времени низкого качества, ничего, кроме моего существующего оборудования (камера Mac и FireWire), недорогую Ubuntu vps и бесплатное программное обеспечение. Поток с Mac и размещение потока на веб-сайте на vps.

Я не хочу пользоваться такими сервисами, как justin.tv или ustream, потому что реклама очень навязчивая, а еще хотелось бы научиться это делать самому. У меня есть некоторые навыки администратора сервера, но это новый мир для меня, и я не могу понять, как все части сочетаются друг с другом. Всю ночь читал про rtmp, rec5, wowza, ffmpeg и теперь вообще ничего не понимаю.

Может ли кто-нибудь дать мне возможные рабочие процессы, чтобы собрать 3 части вместе? То есть, потоковая передача с локального компьютера, получение в vps, трансляция на веб-сайте.

Если вы можете использовать .net и не возражаете против rtsp, зайдите на net7mma.codeplex.com.

Ответы (2)

Это немного отличается от одного сервера к другому, но основными компонентами являются кодировщик/клиент потоковой передачи на локальном клиенте, который принимает входные данные с камеры и превращает их в поток, который может быть отправлен на потоковый сервер на VPS.

Задача потокового сервера (например, Red5) состоит в том, чтобы предоставить точку публикации, которая ретранслирует поток зрителям. Сервер потоковой передачи может либо получать данные от клиента, либо клиент может передавать их в целевое расположение на сервере потоковой передачи, чтобы предоставить контент точке публикации.

Затем каждый зритель подключается к опубликованному RTMP-потоку на потоковом сервере и получает копию загружаемого потока. Обратите внимание, что каждая копия должна быть отправлена ​​отдельно, если только вы не находитесь в частной сети, где вы можете использовать многоадресную рассылку, поэтому пропускная способность должна быстро увеличиваться, хотя должна быть возможность выполнять 50 потоков SD или более низкого качества с одного VPS при условии, что он имеет надежное соединение со скоростью 100 Мбит/с.

Веб-сайт просто содержит средство просмотра, которое подключается к потоку RTMP (или аналогичному) и фактически работает на стороне клиента, а не на стороне сервера.

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

Чтобы кратко рассказать о каждом из компонентов, которые вы упомянули.

  • RTMP — это медиа-протокол в реальном времени, который является распространенным протоколом потоковой передачи, используемым для фактической передачи содержимого видеопотока.
  • Red5 — довольно популярное бесплатное программное обеспечение сервера потокового мультимедиа, используемое для репликации RTMP и аналогичных медиапотоков клиентам.
  • Wowza — это еще одно программное обеспечение для потокового мультимедиа, однако это коммерческий платный программный продукт. Если вы ограничены бесплатным программным обеспечением, Wowza не вариант.
  • FFMpeg — популярный видеокодер с открытым исходным кодом. Он работает на клиенте и может быть настроен для публикации потока, который может быть отправлен на Red5 или аналогичный сервер потокового мультимедиа.

Кроме того, вам понадобится конечное средство просмотра, способное потреблять поток. Программное обеспечение, такое как Windows Media Player или Quicktime, должно иметь возможность просматривать поток, но часто лучше включить встроенный кроссплатформенный проигрыватель на веб-сайт, на который люди собираются для просмотра потока. Есть много вариантов этого компонента с разными сильными и слабыми сторонами, но для ваших целей подойдет любой.

Есть еще одна бесплатная и более легкая альтернатива wowza и red5 — nginx-rtmp-module, который освобождает вас от возни с java.

https://github.com/arut/nginx-rtmp-модуль/

и вот руководство по настройке с помощью бесплатного программного обеспечения Open Broadcaster (которое, к сожалению, только для Windows) https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server -использование-nginx.50/

Для пользователя потоковой передачи единственным достойным бесплатным решением, которое я нашел для OSX, является Adobe Flash Media Live Encoder.

Таким образом, бесплатный и относительно легкий конвейер для потоковой передачи из osx будет

Camtwist и Soundflower для захвата

Adobe Flash Media Live Encoder для потоковой передачи RTMP на vps (или программное обеспечение Open Broadcaster для Windows)

Ubuntu vps под управлением nginx с модулем nginx-rtmp (необходимо собрать из исходников)

Вставьте поток на веб-сайт с помощью JWPlayer.