- Udp broadcast message
- хватит уже
- Создайте свой собственный сервер потокового видео с Linux
- Думать вперед
- Настройка Linux-сервера
- Настройка потокового программного обеспечения
- Будь первым зрителем
- Дополнительные меры
- Запускаем свой RTMP сервер для стриминга
- Структура
- Установка
- Заключение
- На правах рекламы
- Сервер онлайн-вещаний на базе nginx
- Введение
- Сборка и настройка nginx-rtmp
- Публикация и проигрывание живого потока
- Видео по запросу
- Ретрансляция
- Вещание на мобильные устройства (HLS)
- Перекодирование
- Воркеры и локальная ретрансляция
- Запись
- Авторизация и бизнес-логика
- Статистика
- Простое Интернет-радио
- Совместимость
- Нагрузки
- Заключение
Udp broadcast message
Добрый день всем!
Чем отличается тип сообщения броадкаст от не броадкаста сервера от к клиентам? Пишу под линукс, т.е. использую sys/socket Для обычного сообщения, использую sendTo(), до етого заполняю структуру с айпишником клиента который будет принимать. Я так понимаю броадкаст это тип сообщения который будут приходить всем кто в сети. У меня вопрос: Что нужно еще добавить перед сендом, чтоб это сообщения приняли все кто слушают сервер(используют recvfrom) ?
Заранее спасибо, буду рад любым примерам
Из того, что у вас пока не упомянуто — включить SO_BROADCAST на сокете. Вместо IP-адреса получателя ставить broadcast address.
broadcast adress как его задать? это значение из enum-a
+ко всему,надо учитывать, что броадкаст/мультикаст может зарезаться на роутере.
Я думаю, это тоже будем учитывать,сейчас нужно базовое сетевое общение
Еще вопрос по описанию сокета, функция bind, для данного типа сообщения где должна быть на сервере перед сендто или на клиенте перед recvfrom?
Потому что сейчас приходит только на один из клиентов, до второго клиента это сообщение не доходит
насколько я помню биндить udp не обязательно.. заполняешь SOCKADDR_IN для sendto, а на клиенте ловишь recvfrom и все.
еще не забудь проставить настройки сокету, который будет вещать
хватит уже
2-я тема c «Пишу под линукс на С++, т.е. использую sys/socket» — читайте-же уже man`ы..
100500 раз пережёвано, есть man`ы по каждой отдельной функции/сущности, есть разделы info по отдельным вопросам и практике (оно всё есть непосредственно в вашей машине). есть сцуко книги «$subj для идиотов».
Ну сколько уже можно?
Не нервничайте так!
А вы не вбрасывайте-немного надоели вопросы лентяев нежелающих посмотреть, что у них под носом.
плюсую. ТС, марш читать.
MAC-адресом и IP-адресом
А если по теме и развёрнуто, то ОС при определении параметра SO_BROADCAST на сокете, определяет MAC как FF:FF:FF:FF:FF:FF сама, а IP-адрес широковещательного пакета вы уже определяете сами (да-да, тут вас ожидает нежданчик в виде неработоспособности offtopic-систем с некоторыми комбинациями этих адресов). Полный широковещательный адрес — это широковещательный MAC, приведённый выше и айпи вида 255.255.255.255, который должен (не всегда, может ограничиваться администратором системы) приниматься всеми системами независимо от IP-подсети, а есть вариант широковещательного MAC и широковещательного IP заданной подсети (например, 192.168.0.255/24 — последний IP в подсети всегда широковещательный для этой подсети и на него отвечают только системы, у которых назначен адрес этой подсети).
С мультикастами всё веселее, но в данном треде — это оффтоп.
Источник
Создайте свой собственный сервер потокового видео с Linux
Большинство инструментов и сайтов для потокового вещания бесплатны для общественности, но они часто требуют, чтобы вы создали учетную запись, предоставляя информацию, которую вы, возможно, не захотите размещать в Интернете. Они Можно держите некоторый контент за рекламными объявлениями и вводите в заблуждение Условиями обслуживания, которые они могут даже не придерживаться.
Есть те, кто любит потоковую трансляцию, но им не нужно, чтобы их видео были доступны для широких масс. Вместо этого они предпочли бы иметь больший контроль над своим потоком и контентом, который они производят. Программное обеспечение с открытым исходным кодом, такое как Linux, является лучшим ответом на это препятствие.
Думать вперед
Прежде чем приступить к настройке своего личного потокового сервера, задайте себе несколько вопросов. Во-первых, какое качество потока вы ищете? Далее, сколько зрителей вы ожидаете привлечь? Где вы будете хранить весь свой потоковый контент? Кто будет иметь доступ к этому контенту?
Системные требования также могут рассматриваться как проблема. Тем не менее, нет никаких установленных правил относительно того, что именно вам нужно в этом отношении, поэтому сделайте себе одолжение и поэкспериментируйте, чтобы увидеть, что лучше всего подходит для ваших целей.
Вам необходимо выяснить, какой протокол будет обрабатывать аудио и видео часть потоковой передачи. Протокол обмена сообщениями в реальном времени (RTMP) является отличным выбором, но есть и другие, такие как WebRTC, которые могут быть лучше в вашей ситуации. RTMP имеет широкую поддержку, поэтому мы сосредоточимся на этом для этой статьи.
Другая вещь, о которой стоит беспокоиться, — это, вероятно, задержки в вашей «прямой» трансляции. То, что вы живете, не означает, что все выстроится идеально. Видеопотоки должны кодироваться, передаваться, буферизироваться и отображаться, поэтому следует ожидать небольшой настройки атрибутов потока.
Настройка Linux-сервера
Ubuntu Linux — мой личный фаворит, так что это будет вариант выбора здесь. Для тех, кто предпочитает графический интерфейс, Ubuntu Desktop доступен.
- Запустите установщик Ubuntu и выберите настройки, которые лучше всего соответствуют вашим потребностям. Возможно, вы захотите установить некоторые статические сетевые настройки, поскольку они будут использоваться в качестве сервера.
- Перезагрузите систему после установки, если она не делает это автоматически. После загрузки системы Ubuntu установите все доступные обновления:
обновление sudo apt
Мы будем использовать веб-сервер Nginx для этого потокового сервера. Установите это:
sudo apt установить nginx
Приобретите модуль RTMP, чтобы Nginx мог обрабатывать ваш медиапоток:
sudo add-apt-репозиторий юниверс
sudo apt установить libnginx-mod-rtmp
Настройте конфигурацию Nginx так, чтобы он мог принимать и доставлять ваш медиапоток.
sudo nano /etc/nginx/nginx.conf
Добавьте следующий код в конец файла конфигурации:
rtmp <
сервер <
слушать 1935;
chunk_size 4096;
Сохраните файл конфигурации, так как мы будем использовать его позже для создания работающего потокового сервера.
Перезапустите Nginx с его новой конфигурацией:
sudo systemctl перезапустить nginx
Настройка потокового программного обеспечения
Сервер готов, поэтому пришло время настроить программное обеспечение для потоковой передачи. Давайте использовать Программное обеспечение Open Broadcaster (OBS) в этом прогоне.
- Перейдите на сайт и выберите сборку для Linux. После запуска программного обеспечения настройте в OBS те параметры, которые лучше всего соответствуют вашему оборудованию.
- Добавьте источник потоковой передачи, нажав на значок «+» в разделе «Источник».
- Для тестирования выберите «Захват экрана» и введите имя источника.
- Нажмите кнопку ОК, и OBS отразит ваш рабочий стол.
- Далее перейдите на вкладку «Файл» и выберите «Настройки».
В разделе «Поток» выберите для параметра «Тип потока» значение «Пользовательский» и введите следующий URL-адрес в поле «Сервер»:
RTMP: // IPaddress / живая
Вместо IP-адреса введите IP-адрес вашего потокового сервера.
Теперь создайте свой собственный ключ потока и введите его в поле ключа потока. Сделайте то, что вы помните, и запишите это. Для обеспечения дополнительной безопасности установите флажок «Использовать аутентификацию» и добавьте предпочитаемые учетные данные.
Завершите, нажав Применить, затем кнопку ОК.
Теперь все должно быть настроено для потоковой передачи. Чтобы начать свой первый поток, нажмите кнопку «Поток сейчас». Кнопка изменится на «Остановить поток», если все было сделано правильно. Показатели пропускной способности вашего потока появятся в нижней части окна OBS.
Будь первым зрителем
Существует множество медиаплееров с открытым исходным кодом, которые поддерживают RTMP, наиболее известным из которых является VLC медиаплеер, Установите и запустите это программное обеспечение, перейдите на вкладку «Медиа» и выберите в меню «Открыть сетевой поток».
У вас есть удобный ключ потока? Введите путь к вашему потоку и включите ключ потока, который вы установили ранее, до конца. Должно выглядеть так:
RTMP: // IPaddress / живой / SecretKey
Нажмите «Play», и вы получите прямую трансляцию своего собственного потока.
Дополнительные меры
Теперь, когда основы достигнуты, ограничение доступа к вашему потоковому серверу и возможность записи и сохранения видео — это еще два фактора, которые могут вас заинтересовать.
По умолчанию любой может просматривать ваш поток. Это может идти вразрез с целью создания сервера в первую очередь. Вы хотите настроить ограниченный доступ с помощью брандмауэра Linux, файл .htaccess, или встроенные средства контроля доступа в модуле RTMP, Этот выбор остается за вами.
Предоставленная здесь конфигурация Nginx позволит вам только передавать потоковое видео, но не сохранять его. Чтобы добавить опцию хранения, в конфигурации Nginx, чуть ниже раздела RTMP, вы можете настроить параметры записи потока и указать место, где вы хотите сохранить и сохранить ваш контент.
Установите существующий путь, чтобы позволить Nginx писать в него. Введите следующее:
Приложение Live <
жить дальше;
записать все;
record_path / var / www / html / records;
record_unique on;
>
Это все, что вам нужно при настройке сервера прямой трансляции с помощью ОС Ubuntu Linux. Если вас больше интересует сервер потоковой передачи мультимедийных данных, я бы предложил использовать Plex вместо OBS.
Источник
Запускаем свой RTMP сервер для стриминга
Иногда YouTube или Twitch не подходят как стриминговая платформа — скажем, если вы пилите портал с вебинарами или контентом 18+, нарушаете авторские права или хотите максимально отгородить свою трансляцию от остального интернета. У них есть много альтернатив как в виде сервисов (те же минусы, недостаток контроля и непредсказуемая политика), так и в виде self-hosted решений. Проблема опенсорсных стриминговых проектов в том, что все они начинаются с крохотной связки из пары технологий, а затем отчаянно пытаются вырасти в сервис, добавляя сложные веб-интерфейсы, чаты, библиотеки стримов и в конечном счёте отдаляясь от исходной цели: дать миру инструмент, который по понятному мануалу позволит запустить свой сервер трансляций. Что с ним будет дальше, в какие системы будет встроена эта картинка — это только ваше личное дело, а самописный аналог твича с лагающими и отваливающимися сервисами и периодически валящимся билдом не нужен никому, кроме его разработчиков. Поэтому в этой статье мы разберём минимальную цепочку действий для запуска своего RTMP-сервера с плеером.
Структура
Здесь всё просто: за приём и кодировку потока из OBS отвечает RTMP модуль Nginx’a. Сконвертированный поток он выставляет наружу, где его подбирает HLS (HTTP Live Streaming) клиент в браузере и выдаёт уже готовую картинку в плеере.
Установка
При выборе сервера упор стоит обратить внимание на процессор. Я взял эпичный сервер с двумя ядрами и пробовал наращивать битрейт, чтобы определить граничные условия — на 11-12k нагрузка стала болтаться в районе 96-100%, так что для обработки действительно тяжёлого потока лучше взять мощности с запасом:
Нам понадобится Docker для установки контейнеризованного nginx-rtmp с FFmpeg и любой веб-сервер (включая тот же Nginx) для раздачи страницы с плеером. Я ставил на Ubuntu 20.04:
Запускаем контейнер c проброшенными портами:
Затем в OBS на клиенте указываем наш сервер с произвольным ключом потока (ключ = индентификатор стрима):
Теперь можно запустить трансляцию и удостовериться что поток пошёл, например, в демке hls.js или в любом другом плеере HLS.
Осталось настроить сервер. В nginx.conf укажите путь до вашей страницы:
В index.html просто скопипастим код из примера hls.js:
Теперь на 8080 порту нашего сервера раздаётся жутковатый мультик про зайца:
Остаётся только изменить путь на http://server_ip:8080/live/stream-key.m3u8 и идти смотреть трансляцию!
Нагрузку в реальном времени можно проверять командой docker stats:
Заключение
Размещая стриминговый клиент на своём сервере важно помнить, что весь трафик со всех зрителей будет проходить прямо через него — значит, если одновременный онлайн у вас будет больше 1-2 человек, стоит изучать способы распределения нагрузки (ведь транскодирвоание ощутимо давит и на CPU). Для запуска полноценного кластера есть энтерпрайзное (но опенсорсное) решение — SRS aka Simple Realtime Server (GitHub, 10k звёзд, огромная вики, сложная архитектура). В него стоит вникать, если вам стримы нужны для решения настоящих задач, а не чтобы поиграться с приватным видеопотоком.
На правах рекламы
Серверы в аренду для любых задач — это про наши эпичные! Все серверы защищены от DDoS-атак, автоматическая установка множества ОС или использование своего образа ISO. Лучше один раз попробовать!
Источник
Сервер онлайн-вещаний на базе nginx
Введение
Привет всем! Несколько месяцев назад на Хабре была опубликована статья «Вещание онлайн-видео с помощью nginx» , в которой Aecktann рассказал о своем опыте внедрения разрабатываемого мной модуля к nginx для вещания видео — nginx-rtmp-module. С тех пор продукт активно развивался и в этой статье я более подробно расскажу о нем.
Вещатель нужен для передачи видео-потока клиенту. Речь идет либо о живом потоке, либо о вещании записанного видео (VOD, Video-on-demand). Существует большое количество технологий вещания видео. Среди них можно выделить традиционные протоколы, такие как RTMP или MPEG-TS, а также появившиеся в последнее время технологии адаптивного вещания поверх HTTP. К последним относятся HLS (Apple), HDS (Adobe), Smooth Streaming (Microsoft), MPEG-DASH. При выборе технологии основным фактором является ее поддержка на клиентской стороне. Именно поэтому вещание в формате RTMP на текущий момент является одним из самых распространенных. Протокол HLS поддерживается устройствами компании Apple, а также некоторыми версиями Android.
Сборка и настройка nginx-rtmp
Для добавления модуля nginx-rtmp к nginx нужно указать его в опции —add-module при конфигурации nginx, как и любой другой модуль.
После сборки и инсталляции нужно добавить секцию rtmp<> в файл конфигурации nginx.conf. Добавлять ее надо в корень конфига. Например:
Для многих случаев этой простой конфигурации будет достаточно. В ней задается RTMP-приложение с именем myapp. В это приложение мы позже будем публиковать потоки и проигрывать их из него. У каждого потока также будет свое уникальное имя. Стоит отметить один важный нюанс, касающийся приведенной выше конфигурации. Она верна для того случая, когда число воркеров nginx равно единице (как правило, задается в начале nginx.conf).
Чтобы иметь возможность использовать live вещания с бОльшим числом воркеров, нужно указать директиву rtmp_auto_push on (см. раздел «Воркеры и локальная ретрансляция»).
Публикация и проигрывание живого потока
Для публикации и проигрывания видео можно использовать Flash-проигрыватели (JWPlayer, FlowPlayer, Strobe и т.д.). Однако, для вещания серверных потоков и для тестирования часто используют ffmpeg (и ffplay). Начнем вещание тестового файла test.mp4 следующей командой:
Тут надо учесть, что RTMP поддерживает ограниченый набор кодеков, впрочем, такие популярные кодеки, как H264 и AAC, входят в их число. Если кодеки в тестовом файле не совместимы с RTMP, потребуется перекодировка:
Вещать можно как поток из файла, так и из другого источника. Например, если предположить, что по адресу video.example.com/livechannel.ts вещается некий live MPEG-TS поток, то его также можно завернуть в rtmp:
Пример вещания с локальной веб-камеры:
Проиграть поток можно при помощи ffplay следующей командой:
И, наконец, простой пример использования JWPlayer для проигрывания потока из браузера (полностью приведен в директории /test/www модуля):
Видео по запросу
Модуль поддерживает вещание видео-файлов в форматах mp4 и flv. Пример настройки:
При проигрывании, соответственно, надо указывать имена файлов, в остальном все аналогично живому вещанию.
Ретрансляция
При построении распределенных систем важно иметь возможность ретрансляции потоков для балансировки нагрузки
по большому числу серверов. Модуль реализует два типа ретрансляции: push и pull. Первый тип ретрансляции
состоит в передаче на удаленный сервер локально публикуемого потока, а второй — в передаче удаленного
потока на локальный сервер. Пример push ретрансляции:
В момент, когда начинается публикация по адресу rtmp://localhost/myapp/mystream, создается соединение с удаленным сервером и поток mystream публикуется далее на rtmp://cdn.example.com/myapp/mystream. При прекращении локальной публикации, соединение с cdn.example.com автоматически завершается.
Pull-ретрансляции выполняют обратную операцию:
В этом примере при появлении клиента, желающего локально проиграть поток rtmp://localhost/myapp/mystream, будет создано соединение с rtmp://cdn.example.com/myapp/mytstream и удаленный поток будет ретранслирован на локальный сервер, после чего станет доступным всем локальным клиентам. В тот момент, когда не останется ни одного клиента, соединение будет завершено.
Вещание на мобильные устройства (HLS)
Для вещания на устройста iPhone/iPad, а также на новые версии Android, используется протокол HLS (HTTP Live Streaming).
Протокол был разработан компанией Apple и представляет из себя «нарезанный» на куски MPEG-TS/H264/AAC поток, отдаваемый по HTTP. К потоку прилагается плейлист в формате m3u8. Отдавать HTTP nginx умеет отлично. Значит, надо лишь создать и обновлять плейлист и фрагменты HLS-потока, а также следить за удалением старых фрагментов. Для этого существует модуль nginx-rtmp-hls. Он находится в директории hls, однако не собирается по умолчанию т.к. требует библиотеки libavformat, входящей в пакет ffmpeg. Для сборки nginx с поддержкой HLS, надо добавить этот модуль явно при конфигурации:
Так вышло, что некоторое время назад проект ffmpeg был форкнут. И теперь у нас есть два проекта — ffmpeg и avconv, а следовательно, тут же начали возникать проблемы совместимости (вернее, несовместимости) библиотек. Для сборки nginx-rtmp нужен оригинальный ffmpeg. В то же время, некоторые дистрибутивы Linux перешли на использование avconv, который для сборки не подойдет. На этот случай я написал подробную инструкцию.
Для генерации HLS достаточно указать следующие директивы:
Ну и, наконец, в секции http<>, настроить отдачу всего, что связано с HLS:
Теперь публикуем поток mystream в приложение myapp, а в браузере iPhone набираем в строке адреса example.com/hls/mystream.m3u8. Кроме того, поток можно встроить в html тег video:
Отмечу, что для проигрывания на iPhone поток должен быть закодирован в H264 и AAC. Если исходный поток не соответствует этим условиям, необходимо настроить перекодирование.
Перекодирование
При вещании видео часто возникает необходимость перекодирования входящего потока в другое качество, либо другие кодеки. Эта задача по своей сути кардинально отличается от раздачи RTMP и, в отличие от последней, связана с высокими нагрузками на CPU, большим и активным потреблением памяти, часто опирается на использование многопоточности и является потенциально нестабильной. По этой причине она не должна включаться в основной процесс сервера, и в идеале должна выполняться отдельным процессом. Стоит отметить, что прекрасный инструмент для решения этой задачи уже существует — это все тот же ffmpeg. Он поддерживает огромное число кодеков, форматов и фильтров, позволяет использовать множество сторонних библиотек. Вместе с тем, он достаточно прост и активно поддерживается сообществом. Модуль nginx-rtmp предоставляет простой интерфейс для использования ffmpeg. Директива exec позволяет запустить внешнее приложение в момент публикации входящего потока. При завершении публикации приложение также принудительно завершается. Кроме того, поддерживается перезапуск запущенного приложения, если оно внезапно завершилось само.
В этом примере ffmpeg используется для перекодирования входящего видео в Sorenson-H263, изменении его размера до 32х32 и публикации результата в приложение myapp32x32. Можно одновременно задать несколько директив exec, которые будут производить с потоком любые преобразования и публиковать результат в другие приложения как на локальный, так и на удаленный сервер. Директива поддерживает несколько переменных, среди которых $app (имя приложения) и $name (имя потока).
Воркеры и локальная ретрансляция
Как известно, nginx является однопоточным сервером. Для того, чтобы эффективно использовать все ядра современных процессоров, обычно он запускается в несколько воркеров. Обработка HTTP запросов как правило, происходит независимо друг от друга, и лишь в отдельных случаях (как, например, в случае с кешом), требуется осуществлять доступ к общим данным. Такие данные хранятся в разделяемой памяти.
При живом вещании ситуация иная. Все клиентские соединения, проигрывающие поток, очевидным образом зависят от соединения, публикующего этот поток. Использование разделяемой памяти в данном случае неэффективно, излишне трудоемко, привело бы к синхронизации и большой потере производительности. Поэтому для использования нескольких воркеров был реализован механизм внутренних ретрансляций через UNIX-сокеты. Собственно, такие ретрансляции практически ничем не отличаются от обычных внешних push-ретрансляций. Локальные ретрансляции включаются следующей директивой
Указывать ее надо в корневой секции конфигурационного файла. Отмечу, что локальные ретрансляции нужны только для живых вещаний.
Запись
Часто возникает необходимость записи на диск публикуемых потоков. Модуль позволяет записывать как отдельные данные из потока (аудио, видео, ключевые фреймы) так и поток целиком. Можно установить ограничение на размер файла, а также на число записываемых фреймов. Следующий пример включает запись первых 128К каждого потока.
Запись происходит в формате flv в директорию /tmp/rec.
Управлять записью можно в ручном режиме, включая и отключая ее при помощи http-запроса. Для этого используется control-модуль. Информацию о нем можно найти на сайте проекта.
Авторизация и бизнес-логика
Во многих случаях требуется ввести ограничения или учет операций публикации и проигрывания видео. Это бывает связано с логикой проекта, в котором он используется. Самый частый подобный случай — необходимость авторизации пользователя перед тем, как дать ему доступ к просмотру видео. Чтобы интегрировать бизнес-логику проекта в вещатель, в модуле реализованы HTTP-колбэки, такие как on_publish и on_play. Серверный код получает всю имеющуюся информацию о клиенте, включая его адрес, имя потока, адрес страницы и т.д. Если возвращается HTTP статус 2xx, то колбек считается завершенным успешно и работа клиента продолжается. В противном случае соединение разрывается.
Статистика
В каждый момент времени к вашему серверу могут быть подсоединены тысячи клиентов. Естественно, нужен интерфейс, позвляющий увидеть их список, а также все основные характеристики публикуемых или проигрываемых ими потоков. Причем, важно, чтобы эту информацию можно быть как анализировать визуально, так и обрабатывать программно. Такой интерфейс у модуля nginx-rtmp существует. Чтобы его использовать, необходимо в http-секции nginx.conf прописать следующие директивы.
Директива rtmp_stat включает отдачу XML-документа с полным описанием live-клиентов, публикующих или проигрывающих потоки, списком приложений и серверов. Этот документ удобен для программной обработки, но для визуального анализа совершенно не годится. Чтобы иметь возможность просматривать список клиентов в браузере, директивой rtmp_stat_stylesheet задается относительный путь к таблице стилей XML (stat.xsl). Этот файл лежит в корне проекта. Надо настроить nginx на его раздачу по указанному урлу. Результат можно просматривать в браузере.
Существует возможность явно разрывать клиентские соединения. Для этого используется control-модуль, не описанный в статье.
Простое Интернет-радио
С самого начала статьи я постоянно употреблял слово «видео». Конечно, модуль может вещать не только видео, а также и аудио-потоки. Вот простой пример интернет-радиостанции на bash, вещающей mp3-файлы из /var/music. Этот поток может воспроизводить простой JWPlayer, встроенный в веб-страницу.
Совместимость
Модуль совместим со всем основным софтом, работающим с протоколом RTMP, включая FMS/FMLE, Wowza, Wirecast, протестирован с самыми распространенными флеш-проигрывателями JWPlayer, FlowPlayer, StrobeMediaPlayback, а также отлично работает с ffmpeg/avconv и rtmpdump.
Нагрузки
Модуль использует асинхронную однопоточную модель сервера nginx. Это позволяет добиться высокой производительности. Мы используем модуль на машинах Intel Xeon E5320/E5645 в режиме одного воркера. В этом режиме удается достигнуть максимальной пропускной способности имеющихся сетевых карт — 2Gbps. Пользователи модуля подтверждают сохранение этого же соотношения (2Gbps на ядро) в режиме локальной ретрансляции с несколькими воркерами. Практика показывает, что производительность вещателя обычно упирается в сеть, а не в CPU.
Прямых сравнений с другими продуктами я не проводил, однако, «тяжелые» многопоточные FMS, Wowza и Red5, будучи более функциональными, должны, в силу особенностей реализации, существенно проигрывать моему решению по числу одновременно подсоединенных клиентов и нагрузке на CPU. Это подтверждается многими пользователями, проводившими такие сравнения, в т.ч. в уже упомянутой мной статье.
Заключение
В заключение скажу, что модуль распространяется по лицензии BSD. Он собирается и работает под Linux, FreeBSD и MacOS. В статье описана лишь малая часть функционала nginx-rtmp-module. Желающие могут ознакомиться с проектом по ссылкам, приведенным ниже.
Источник