Я ищу решение для сервера потокового видео, что-то вроде сервера онлайн-телевидения, с возможностью вести прямые трансляции в Интернете.
Какое программное обеспечение вы могли бы порекомендовать для этого?
На каком оборудовании он должен работать, должно ли быть что-то особенное?
Я ищу решение, которое можно масштабировать как минимум до 1000 одновременных пользователей в сети с хорошим разрешением видео.
Думаю, хорошо иметь общий ответ, какое направление выбрать. Но вот подробности о моем конкретном случае:
Если у вас уже есть какой-то сервер потоковой передачи мультимедиа, просто опишите здесь его конфигурацию (оборудование, ОС, программное обеспечение), а также максимальное количество одновременно обслуживаемых пользователей. Думаю, это может помочь людям в решении этой задачи.
Похоже, у chopper3 эта область довольно хорошо покрыта за мои 0,02 доллара:
Мы транслируем лекции по запросу, которые продолжаются около 12 часов каждая (разбиты на часовые блоки). Мы используем Flash Media Server (но с лицензией только для потоковой передачи) от Adobe и специально разработанное приложение для отображения его в презентации в браузере пользователя (и связывания слайдов / видео / аудио вместе).
Мы запускаем сервер на двухъядерном процессоре Xeon 2.4Ghz с 4 Гб оперативной памяти, и мы никогда не сталкивались с какими-либо проблемами масштабирования, за исключением случаев нехватки оперативной памяти (FMS очень голодна). Мы запускаем ссылку с восходящим каналом 2 МБ, но наши медиа очень низкого качества (320x240, высокое сжатие, моно-звук). У нас никогда не было жалоб. Мы также используем протокол RMTPE, который зашифрован и требует дополнительных затрат на ЦП.
Мы можем масштабировать нашу ссылку с помощью звонка нашему интернет-провайдеру, и это делается в течение нескольких минут, поэтому, если он когда-либо будет пользоваться большим спросом, мы можем ускорить его на несколько часов, а затем снова сбросить его, чтобы сэкономить деньги.
FMS имеет возможность вести трансляцию с карт видеозахвата. Он поставляется с образцом приложения, которое передает поток с вашей веб-камеры, но нетрудно получить его из альтернативного источника в реальном времени (карты захвата и т. Д.).
Надеюсь, это проливает свет!
Для потоковой передачи видео у Microsoft есть отличное решение с Silverlight для клиентской стороны (или простой H.264) и IIS Smooth Streaming для серверной стороны, что позволяет автоматически и прозрачно настраивать качество (и многое другое). Это стандартный HTTP, поэтому его можно кэшировать с любым HTTP-прокси.
Вот витрина: http://www.microsoft.com/silverlight/iis-smooth-streaming/demo/
Пакет мультимедиа IIS: http://www.iis.net/media
Насколько я знаю, это действительно одно из лучших решений для потокового видео ...
Ах, наконец, вопрос, на который я должен ответить :)
Итак, 1000 пользователей, какой кодек / плеер / битрейт? сколько содержания? какая средняя длина контента? предположительно нет вариантов QoS / многоадресной рассылки? что обслуживает ваш интерфейс? какова ваша ожидаемая скорость усечения воспроизведения? Какая у вас ссылка на Интернет (как можно подробнее)?
Вы связаны с какими-либо конкретными поставщиками?
Ответьте на некоторые из этих вопросов, и я буду рад помочь.
Вы должны попробовать Wirecast из Telestream, это обязательно
Например, это установка, которую мы используем для потоковой передачи (и записи) лекций. У нас нет 1000 пользователей, но наше решение должно масштабироваться до этого числа.
Приобретение видео (~ 6000 $):
Сервер потоковой передачи:
CRTMP Server обеспечивает отличную производительность (особенно в системах с ограниченными ресурсами) по сравнению с некоторыми пользовательскими серверами на базе Java. Существует также платное коммерческое предложение того же продукта с поддержкой.
Я пронумерую ваши пункты списка и рассмотрю их:
Решение с нуля с использованием существующего видео. То, что я описал выше, является практически полным решением (дайте мне знать, если я что-то упустил). Wirecast может обрабатывать как видео в реальном времени, так и видеофайлы (а также легко комбинировать и переключаться между ними. Я согласен с @don - Wirecast - отличный продукт. Wirecast имеет встроенный потоковый сервер, но с 1000 пользователей вам понадобится внешний, например CRTMP-сервер.
Не привязаны к конкретному поставщику: сочетание Linux, CRTMP Server и Wirecast - это подход, основанный на нескольких поставщиках. Вы можете заменить любую из этих частей предложениями других поставщиков.
24 часа потоковой передачи: я не тестировал Wirecast на утечки памяти, но его можно запрограммировать для переключения между любым количеством живых и записанных входов. Также CRTMP Server может принимать входные данные из Wirecast (или других потоков) или статических файлов.
Регулярные прямые трансляции: Wirecast делает очень профессиональные прямые трансляции (с 3D-эффектами, похожими на те, что вы видите в основных презентациях Apple).
Несколько качеств потока: Wirecast может предоставлять несколько одновременных потоков (с разным качеством). Однако, чтобы снизить нагрузку на вашу рабочую станцию захвата, вы, вероятно, захотите, чтобы сервер CRTMP перекодировал один поток из Wirecast в несколько потоков.
Термины иностранные и запутанные: Ага. Потоковое видео требует сложного обучения и знаний во многих дисциплинах. Извините, я не могу ответить на этот вопрос. :)
Восходящий канал в Интернет: сервер CRTMP может принимать соединения из Интернета. Просто убедитесь, что вы надежно настроили свой сервер - это выше моих возможностей.
Вы можете вести прямые трансляции с Amazon EC2 с медиа-сервером wowza: http://www.wowzamedia.com/ec2.html
Это не такое удобное решение, которое может предоставить CDN (один URL-адрес для отправки потока, а другой - для извлечения потоков) и требует более глубокого понимания технологии, но является экономически эффективным для потоковой передачи периодических событий в реальном времени.
Еще один вариант - http://erlyvideo.org/ Сервер надежный и реальная альтернатива серверам Adobe и Wowza. У Erlyvideo есть как бесплатная версия с открытым исходным кодом (что достаточно хорошо), так и продвинутая коммерческая.
Еще один вариант сервера программного обеспечения с открытым исходным кодом - это модуль nginx rtmp. https://github.com/arut/nginx-rtmp-module Сервер требует гораздо меньше аппаратных ресурсов для потоковой передачи и поддерживает потоковую передачу iOS из коробки.
Я сделал это для одного из Telecom, используя Cent OS с проигрывателем VLC и TV Setup. Вам необходимо установить VLMa
http://studyhat.blogspot.com/2010/02/darwin-streaming-server-on-rhelfedora.html
http://www.videolan.org/vlc/streaming.html