Сравнительный анализ SRS, EasyDarwin, ZLMediaKit и Monibuca|Новогоднее бычье эссе

сервер

предисловие

В настоящее время на рынке существует множество решений для серверов потокового мультимедиа с открытым исходным кодом, таких как SRS, EasyDarwin, ZLMediaKit и Monibuca и т. д. Как нам выбрать?

текст

Сегодняшняя статья в основном знакомит с некоторыми сравнениями между SRS, EasyDarwin, ZLMediaKit и Monibuca, которые можно использовать в качестве справочных документов для будущих исследований и отбора.

SRS

SRSВ настоящее время она была обновлена ​​до версии 3.0, а ее функциональность и стабильность значительно улучшены по сравнению с предыдущей версией.Новые студенты могут сразу начать с версии 3.0. Далее мы представляем SRS с точки зрения использования, конфигурации и функций.

Шаги для использования

Мы можем легко создать набор серверов SRS самостоятельно.Конкретные шаги настройки следующие:

1. Получите исходный код

адрес:github.com/ossrs/srs

Конкретные команды следующие:

git clone git ee.com/win pro VIP/ да… srs &&
cd srs/trunk && git remote set-url origin GitHub.com/OSS RS/SRS.A… && git pull

2. Скомпилируйте

./configure && make

Среди них файл конфигурации является настраиваемым.

3. Беги

./objs/srs -c conf/srs.conf

Среди них настраиваемый файл srs.conf, а также отдельные соответствующие конфигурационные файлы для разных функциональных модулей. Например, файл конфигурации, соответствующий модулю rtmp, называется rtmp.conf.

Кроме того, мы также можем запустить существующий образ докера напрямую, командой:

docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/ossrs/srs:3

Основная функция

Как очень распространенное решение операторского уровня, SRS имеет очень комплексные функции, включая кластеризацию, протокольный шлюз, функции CDN и т. д. Основные функции следующие:

1. SRS позиционируется как кластер серверов прямых интернет-трансляций на уровне оператора, стремясь к большей концептуальной целостности и простейшему коду реализации.

2. SRS предоставляет многофункциональные решения доступа для подключения потоков RTMP к SRS, включая передачу RTMP в SRS, передачу RTSP/UDP/FLV в SRS и извлечение потоков в SRS. SRS также поддерживает различные преобразования входящих RTMP-потоков, такие как транскодирование RTMP-потоков, создание скриншотов потоков, пересылка их на другие серверы, транс-инкапсуляция их в потоки HTTP-FLV, транс-инкапсуляция их в HLS, транс-инкапсуляция их в HDS. , и инкапсулируя их в DASH , записывайте как FLV/MP4.

3. SRS включает ключевые функции для поддержки крупномасштабных кластеров, таких как службы CDN, такие как многоуровневые кластеры RTMP, кластеры исходных сайтов, виртуальные серверы VHOST, перезагрузка службы без прерывания работы и кластеры HTTP-FLV.

4. SRS также предоставляет богатые интерфейсы приложений, включая обратный вызов HTTP, безопасность политики безопасности, интерфейс HTTP API и измерение скорости RTMP.

5. SRS широко используется как на исходных сайтах, так и в кластерах CDN.

EasyDarwin

EasyDarwinЭто полный набор платформы потокового видео с открытым исходным кодом, поддерживаемой и повторяемой отечественной командой потокового мультимедиа с открытым исходным кодом, разработанной Golang, созданной и разработанной с декабря 2012 года, включая сервер потокового мультимедиа с открытым исходным кодом с единым сервисом и расширенное потоковое мультимедиа Платформа с открытым исходным кодом архитектуры облачной платформы открыла множество высококачественных проектов с открытым исходным кодом, которые могут лучше помочь большинству разработчиков потокового мультимедиа и предпринимательских предприятий быстро создать платформу службы потокового мультимедиа и реализовать новейший мобильный Интернет. (Android, iOS, H5, WeChat) потоковое мультимедиа в прямом эфире и по запросу, особенно связь между индустрией безопасности и интернет-индустрией.

Шаги для использования

Также очень удобно запускать EasyDarwin Конкретные шаги настройки следующие:

1. Получите исходный код

адрес:GitHub.com/легкий Дарвин/…

Конкретные команды следующие:

mkdir EasyDarwin && cd EasyDarwin

git clone GitHub.com/легкий Дарвин/… --depth=1 EasyDarwin

2. Запустите в режиме разработки

npm run dev

3. Запустите интерфейс в режиме разработки

npm run dev:www

Основная функция

1. На основе разработки и поддержки языка Golang.

2. Поддержка развертывания трех системных платформ Windows, Linux, macOS.

3. Поддержка push-распределения RTSP (переадресация в режиме push).

4. Поддержка RTSP pull-распределения (переадресация в режиме pull).

5. Запись, поиск и воспроизведение на стороне сервера.

6. Поддержка буферизации ключевых кадров и открытие экрана за считанные секунды.

7. Управление веб-фоном.

8. Распределенная балансировка нагрузки.

ZLMediaKit

ZLMediaKitЭто набор высокопроизводительных служб потокового мультимедиа, в настоящее время поддерживает rtmp, rtsp, hls, http-flv и другие протоколы потокового мультимедиа, поддерживает linux, macos, windows, три основные платформы ПК и ios, android, две платформы мобильных терминалов.

Шаги для использования

1. Получите исходный код.

адрес:GitHub.com/Down-Out/ZL M…

Конкретные команды следующие:

#Отечественные пользователи рекомендуют скачивать с сайта зеркала синхронизации gitee

git clone --depth 1 git ee.com/down-out/ZL M…

cd ZLMediaKit

#Не забудьте выполнить эту команду

git submodule update --init

2. Скомпилируйте (здесь в качестве примера взяты системы Linux и Mac OS)

cd ZLMediaKit

mkdir build

cd build

#macOS может потребоваться указать путь openss следующим образом: cmake .. -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2j/

cmake ..

make -j4

3. Беги

cd ZLMediaKit/release/linux/Debug

#Вы можете узнать о параметрах запуска через -h

./MediaServer -h

#Запуск в режиме демона

./MediaServer -d &

Основная функция

1. На основе разработки C++11 избегайте использования голых указателей, код стабилен и надежен, а производительность выше.

2. Поддерживает несколько протоколов (RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4) и поддерживает обмен протоколами.

3. Разработан с использованием режима мультиплексирования/многопоточности/асинхронного сетевого ввода-вывода с превосходной производительностью при параллельной работе и поддержкой массовых клиентских подключений.

4. Код прошел большое количество долгосрочных тестов на стабильность и производительность и долгое время коммерциализировался в Интернете.

5. Поддержка linux, macos, ios, android, windows на всех платформах.

6. Поддержка открытия экрана в секундах и чрезвычайно низкая задержка (в пределах 500 миллисекунд, минимум может достигать 100 миллисекунд).

7. Обеспечить полный стандартный C API, который можно использовать как SDK или вызывать на других языках.

8. Обеспечить полноценный сервер MediaServer, который можно напрямую развернуть как коммерческий сервер без разработки.

9. Обеспечьте полный restful API и веб-хук для поддержки богатой бизнес-логики.

10. Стек протоколов видеомониторинга и стек протоколов прямой трансляции открыты, а поддержка RTSP/RTMP идеальна.

11. Полная поддержка H265/H264/AAC/G711/OPUS.

Monibuca

MonibucaЭто среда разработки сервера потокового мультимедиа с открытым исходным кодом, реализованная на языке Go.Он использует метод движка + плагин(ы) для реализации функции настраиваемого сервера потокового мультимедиа.

Схема архитектуры:

Шаги для использования

1. Адрес источника

адрес:github.com/Monibuca

2. Возьмем monica в качестве примера. Monica — это диспетчер экземпляров, который используется для создания файла каталога проекта экземпляра Monibuca, а также для управления обновлением и перезапуском экземпляра.

2.1 Устанавливаем монику

go get github.com/Monibuca/monica

2.2 Укажите порт для запуска, по умолчанию 8000

monica -port 8001

Основная функция

1. Оптимизирован для уникальной природы сервера потокового мультимедиа, в полной мере используя горутинную природу Golang для разумного распределения вычислительных ресурсов для чтения и записи большого количества подключений и максимально возможного сокращения операций копирования памяти. Используйте пул объектов, чтобы сократить время сборки мусора в Golang.

2. Разработанный для вторичной разработки, основанный на языке Golang, эффективность разработки выше; оригинальный механизм подключаемого модуля может помочь пользователям настраивать персонализированные комбинации функций и более эффективно использовать ресурсы сервера.

3. Мощная информационная панель может визуально отображать состояние работы сервера, потребляемые ресурсы и другую статистическую информацию. Пользователи могут использовать консоль для настройки и управления сервером. Нажмите «Демо» в верхней правой строке меню, чтобы увидеть интерфейс демо-консоли.

4. Написан на чистом Go, не зависит от cgo, не зависит от FFMpeg или других рантаймов, развертывание крайне удобно, а требования к серверу предельно расслаблены.

конец

Наконец, прилагается сравнительная таблица четырех из них, чтобы изображение было более интуитивно понятным. После всестороннего сравнения я лично считаю, что Монибука является наиболее рентабельным.

Сравнительная таблица