1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hfwudao-GB28181_Node_Http

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 14:09 9900f5c

На основе NodeJS платформа управления GB 28181


Функционал

  • Устройства GB28181 регистрируются на платформе и публикуются в различных медиаформатах (flv, rtmp, hls и др.) для воспроизведения видео в браузере.
  • Интегрирован потоковый сервис ZlMediaKit (версия для Linux, автор — автор На Чу).
  • Один сигнальный сервер может поддерживать несколько серверов потокового вещания.
  • Предоставлен богатый API RESTful для интеграции с внешними программами.

Скриншоты функций

1. Главная страница

Главная страница

2. Интерфейс воспроизведения

Интерфейс воспроизведения

3. Список устройств

Список устройств

4. Список прокси-серверов потоковой передачи

Список прокси-серверов потоковой передачи

Техническая архитектура

1. Фронтенд

2. Бэкенд

  • Бэкенд разработан на NodeJS с использованием Express.
  • apidoc — инструмент документации (установлен в setup.sh).
  • test-api.http — тестовые сценарии использования клиента Rest в VsCode.

При использовании в VsCode установите переменные среды в Workspace Settings-settings.json:

{
    "rest-client.environmentVariables": {

        "$shared": {},
        "local":{
            "host":"localhost"
        },
        "test":{
            "host":"адрес сервера тестирования"
        }
    }
}

3. Настройки ZLMediaKit

В config.ini ZLMediaKit параметры должны соответствовать параметрам в db/constants.js:

[hook]
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cd
on_play=http://адрес сервиса:7000/api/v1/media/on_play
on_publish=http://адрес сервиса:7000/api/v1/media/on_publish
on_record_mp4=http://127.0.0.1:18081/api/record/on_record_mp4
on_rtp_server_timeout=http://адрес сервиса:8080/index/hook/on_rtp_server_timeout
on_send_rtp_stopped=http://адрес сервиса:8080/index/hook/on_send_rtp_stopped
on_server_keepalive=http://адрес сервиса:7000/api/v1/media/on_server_keepalive
on_server_started=http://адрес сервиса:7000/api/v1/media/on_server_started
on_stream_changed=http://адрес сервиса:7000/api/v1/media/on_stream_changed
on_stream_none_reader=http://адрес сервиса:7000/api/v1/media/on_stream_none_reader
on_stream_not_found=http://адрес сервиса:7000/api/v1/media/on_stream_not_found

[http]
port=9092
sslport=1443

[rtp_proxy]
port_range=50000-50300

4. Развёртывание сервера GB28181_Node_Http

(1) Установка

# Установка
bash ./setup.sh
# Создание документации apidoc при установке
bash ./setup.sh --apidoc

(2) Запуск программы с помощью node

# Запуск, программа автоматически запускает ZLMediaKit, не требует отдельной установки
node gb28181_app.js
# Доступ к адресу http://ваш IP:7000

(3) При использовании nvm & pm2 основные команды:

# Показать список версий nvm
nvm list
# Выбрать версию nodejs
nvm use 12.13.1
# Перейти в каталог программы
cd GB28181_Node_Http
# Просмотреть статус pm2
pm2 list
# Остановить процесс
pm2 stop gb28181_app.js
# Запустить процесс
pm2 start gb28181_app.js
# Перезапустить процесс
pm2 restart gb28181_app.js
# Просмотр журнала
pm2 logs
# Поиск в журнале
pm2 logs | grep 0000480
# Если журнал слишком большой, можно ограничить количество журналов pm2
pm2 install pm2-logrotate
pm2 set pm2-logrotate:retain 50

5. Переключение конфигурационных файлов

db/config.js, этот файл по умолчанию не требует изменений, но если вы хотите изменить параметры, вы можете изменить data/config.js. Если есть несколько конфигурационных файлов config_*.js, вы можете указать загружаемый конфигурационный файл при запуске, например:

# Загрузить config_test.js
node gb28181_app.js --profile test

6. Параметры настройки

  • data/cameras.db — база данных, использующая SQLite, автоматически создаётся при инициализации.
  • db/constants.js — некоторые постоянные настройки, обычно не требующие изменений, но внутренний IP должен быть установлен на внешний IP сервера.
  • data/registry.data — файл кэша, удаление не влияет на использование.
  • Параметры сервера (например, учётные данные сервера) устанавливаются после запуска через веб-интерфейс.

7. Примечание по настройке устройства

  • SIP-сервер ID 34020000002000002250
  • Домен SIP-сервера 3402000000
  • Адрес SIP-сервера соответствует серверу, на котором находится камера
  • Порт SIP-сервера 5060
  • Идентификатор аутентификации SIP -- Камера: 34020000001110000***, последние три цифры соответствуют каналу платформы -- NVR: 34020000001320000***, последние три цифры соответствуют каналу платформы
  • Пароль 12345678
  • Локальный порт SIP 5060
  • Срок действия регистрации по умолчанию
  • Период сердцебиения по умолчанию
  • Максимальное количество тайм-аутов сердцебиения по умолчанию
  • NVR_аудио и видео_выбор канала потока_тип основного потока_видео тип_видео поток, не может быть составным потоком
  • Кодирование видеоканала по порядку написания: -- D1 3402000000131000001 -- D2 3402000000131000002 -- ...

4. Связь с вышестоящим уровнем

1. Информация о канале потоковой передачи прокси

В настоящее время существует два способа получения информации о канале потоковой передачи: один — через интерфейс API, другой — через бэкэнд.

  • При подключении к вышестоящему уровню рекомендуется добавить 5 цифр к номеру устройства camera_id, чтобы сформировать его вместе с SIP_CLIENT_PREFIX.
  • Созданный URL воспроизведения прокси-сервера, app=proxy, пример: rtmp://адрес медиасервера/proxy/41010500002000000001_41010500002000010001

2. Информация об уровне

Настройки уровня могут быть настроены в бэкэнде.

3. Настройка записи

Запись в канале потоковой передачи указана в разделе record в config.js. - 1.1.6. Оборудование с поиском

  • 1.1.7. Некоторым устройствам присвоить значение ParentID равное значению SIP Server, унифицировать и присвоить значение равное доменному имени
  • 1.1.8. Обработка изображений с периодическими оповещениями
  • 1.1.9. Функция изменения пароля
  • 1.1.11. Оптимизация логики кода, оптимизация настройки, разделение класса команд создания SIP на части
  • 1.1.12. Соединение с вышестоящим уровнем, функция передачи потокового видео по каналу
  • 1.1.13. Для записи видео использовать функцию записи ZlMediaKit, не использовать ffmpeg для записи. Передача потока осуществляется через конфигурацию базы данных, не через конфигурационные файлы
  • 1.1.15. Использовать проигрыватель h265web.js

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hfwudao-GB28181_Node_Http.git
git@api.gitlife.ru:oschina-mirror/hfwudao-GB28181_Node_Http.git
oschina-mirror
hfwudao-GB28181_Node_Http
hfwudao-GB28181_Node_Http
master