Сервер-ретранслятор для IP H264 камер.

Камера

Приветствую!

В одном проекте возникла необходимость получать видео с IP камеры, вещающей в H264 формате и всё было хорошо, пока клиентов, подключённых к камере, было раз-два да обчёлся.

Но пользователей проекта становилось всё больше и камера просто не выдерживала по 5-6 клиентов и начинала адцки лагать т.к. сеть у неё всего 10 мб и производительность около нуля.

Было решено найти софт сервера-ретранслятора, т.к. канал от сервера до клиентов достаточно толстый, а большую часть времени он просто курит бамбук,

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

Чтож, пришлось написать свой велосипед.

Ссылочка на ГитХаб.

Написан на Qt 6.3 без использования сторонних библиотек и других зависимостей.

Возможности:

  • Поддержка h.264 и h.265 содержимого (только видео)
  • Возможность дополнительной фрагментации кадров (Что бы кадр влезал в MTU)
  • Поддержка авторизации на камерах None/Basic/Digest
  • Поддержка авторизации на сервере Basic
  • Многопоточность (по потоку на канал камеры и на клиента)
  • Независимость от сторонних библиотек

Планы

  • Сделать Digest авторизацию на сервере
  • Написат подробнее про настройки и т.д.
  • Пример плагина

Related posts

Упрощение работы с динамическими структурами в C++

Вывести время компиляции исходников __TIMESTAMP__ в виде Unix timestamp в C(C++)

QML DropArea for files

9 комментариев

Артем 31 марта 2021 - 12:06
Подскажите, пожалуйста, каким способом можно его использовать, чтобы на сайт rtsp поток передавать? И непонятна установка, как все должно проходить. Спасибо.
Pavelk 8 апреля 2021 - 22:32
Здравствуйте. Сервер просто позволяет обслуживать гораздо больше подключений, чем это могла бы сделать сама камера при прямом подключении к ней. Для установки нужно сначала скомпилировать сервер в QtCreator, потом исполняемый файл можно запустить в фоновом режиме и в файле настроек прописать подключения к камерам.
Алексей 13 марта 2019 - 10:09
Добрый день. Подскажите, а как можно передать адрес потока так же через GET параметр? Пример rtsp://127.0.0.1:2666/trackID=1?user=admin&pass=178900 &url=http://mysite.ru/videourl/548.m3u8
Pavelk 31 марта 2019 - 17:09
Добрый день. Откуда брать данные настраивается в конфигурационном файле.
Danis 24 ноября 2017 - 14:47
А не подскажите как можно управлять камерой(фокус, поворот)? имеется ip камера beward. C захватом разобрался, а про управление ничего не удалось найти...
Pavelk 22 декабря 2017 - 5:26
Гуглить на тему onvif.
Danis 24 ноября 2017 - 14:44
в каталоге с исходниками из командной строки выполнить: qmake -project В созданном файле проекта Cameron-master.pro добавить строчку: QT += widgets network
debager 15 марта 2017 - 19:48
Можно в проект добавлять .PRO файл у меня не собралось я начинающий . In file included from settings/settings.h:8:0, from appcore.h:6, from appcore.cpp:1: ./Server/server.h:5:22: fatal error: QTcpServer: Нет такого файла или каталога compilation terminated. Makefile:378: ошибка выполнения рецепта для цели «appcore.o» make: *** [appcore.o] Ошибка 1
Pavelk 22 декабря 2017 - 5:25
Обновил репозиторий, теперь есть.
Add Comment