предисловие
В настоящее время на рынке существует множество решений для серверов потокового мультимедиа с открытым исходным кодом, таких как 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 или других рантаймов, развертывание крайне удобно, а требования к серверу предельно расслаблены.
конец
Наконец, прилагается сравнительная таблица четырех из них, чтобы изображение было более интуитивно понятным. После всестороннего сравнения я лично считаю, что Монибука является наиболее рентабельным.