Skip to main content
Skip table of contents

Кoнфигурация Webhook и событий оповещения

Конфигурирование Webhook и событий оповещения

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

Webhook позволяет оповещать сторонний сервис о наступлении события в работе Mediaserver или об изменениях состояния потока. События отправляются пакетами, не более 50 событий в одном запросе. Существует ограничение в 5000 событий на очередь событий, готовых к отправке. При переполнении очереди самые старые события будут отброшены.

Общий формат событий application/json выглядит следующим образом:

JSON
{
    "event": "Тип события. см. ниже",
    "device": "mediaserver",
    "server": "Имя хоста медиасервера",
    "pid": 1234,
    "timestamp": 12345,
    "seq": 1,
    "data": "Содержит дополнительную информацию о событии"
}

Секция конфигурации Webhook в server.json

dsn cluster.webhook "http://localhost:8080/event/"

URL сервера, куда будут отправляться события. Если не указан или неверен, то функциональность webhook не будет доступна.


array cluster.events – массив идентификаторов событий, которые могут быть отправлены. Если не указан или пуст, то отправляются все события.

Типы событий смотрите в таблице ниже.

JSON
{
    "cluster": {
        "webhook": "http://localhost:8080/event/",
        "events": []
    }
}

Типы событий

service:up – конфигурация сервиса принята и все службы запустились корректно.

service:up
JSON
{
    "data": {
        "at": 1706626775,
        "pid": 533277
    },
    "device": "mediaserver",
    "event": "service:up",
    "pid": 533277,
    "seq": 1324967661364755,
    "server": "ms-test-dev1",
    "timestamp": 1706626775
}

service:down – сервис получил сигнал на остановку и пытается корректно завершить работу (данное событие может не всегда приходить).

service:down
JSON
{
    "data": {
        "at": 1706624875,
        "pid": 533277
    },
    "device": "mediaserver",
    "event": "service:down",
    "pid": 533277,
    "seq": 1324967661364755,
    "server": "ms-test-dev1",
    "timestamp": 1706624875
}

service:pulse – сервис функционирует, событие отправляется с периодичностью 60 секунд.

service:puls
JSON
{
    "data": {
        "at": 1706627715,
        "pid": 533643
    },
    "device": "mediaserver",
    "event": "service:pulse",
    "pid": 533643,
    "seq": 1325847587881315,
    "server": "ms-test-dev1",
    "timestamp": 1706627715
}

service:emergency – произошло критическое событие, связанное с отказом работы одной из служб или средой выполнения.

stream:create – Mediaserver создал поток. Событие наступает при добавлении потока.

stream:create
JSON
{
    "data": {
        "access": "public",
        "address": "192.168.204.10",
        "camera": "camera-uid5065687",
        "dvr": false,
        "enable": true,
        "kind": "primary",
        "reconnects": {
            "attempt": 0,
            "limit": 10,
            "total": 0
        },
        "source": "rtsp://192.168.204.10/Streaming/Channels/101/",
        "state": "active",
        "stime": 1706627843,
        "subscribers": 1,
        "type": "capture",
        "uid": "camera-uid5065687-primary",
        "video": {
            "bitrate": 0,
            "codec": "H265",
            "fps": 0
        }
    },
    "device": "mediaserver",
    "event": "stream:create",
    "pid": 533735,
    "seq": 1326036436599590,
    "server": "ms-test-dev1",
    "timestamp": 1706627843
}

stream:pulse – поток успешно захватывается, событие отправляется с периодичностью отправки на камеру команды PING.

stream:pulse
JSON
{
    "data": {
        "access": "public",
        "address": "192.168.204.10",
        "camera": "camera-uid5065687",
        "dvr": false,
        "enable": true,
        "kind": "primary",
        "reconnects": {
            "attempt": 0,
            "limit": 10,
            "total": 0
        },
        "source": "rtsp://192.168.204.10/Streaming/Channels/101/",
        "state": "active",
        "stime": 1706627843,
        "subscribers": 1,
        "type": "capture",
        "uid": "camera-uid5065687-primary",
        "video": {
            "bitrate": 3383431,
            "codec": "H265",
            "fps": 75
        }
    },
    "device": "mediaserver",
    "event": "stream:pulse",
    "pid": 533735,
    "seq": 1326036436599594,
    "server": "ms-test-dev1",
    "timestamp": 1706627933
}

stream:reconnect – Mediaserver пытается переподключиться к потоку.

stream:reconnect
JSON
{
    "data": {
        "access": "public",
        "address": "192.168.204.10",
        "camera": "camera-uid5065687",
        "dvr": false,
        "enable": true,
        "kind": "primary",
        "reconnects": {
            "attempt": 0,
            "limit": 10,
            "total": 0
        },
        "source": "rtsp://192.168.204.10/Streaming/Channels/101/",
        "state": "active",
        "stime": 1706627843,
        "subscribers": 1,
        "type": "capture",
        "uid": "camera-uid5065687-primary",
        "video": {
            "bitrate": 3383431,
            "codec": "H265",
            "fps": 75
        }
    },
    "device": "mediaserver",
    "event": "stream:reconnect",
    "pid": 533735,
    "seq": 1326036436599594,
    "server": "ms-test-dev1",
    "timestamp": 1706627933
}

stream:state – событие наступает при обновлении статуса потока.

stream:state
JSON
{
    "data": {
        "access": "public",
        "address": "192.168.204.10",
        "camera": "camera-uid5065687",
        "dvr": false,
        "enable": true,
        "kind": "primary",
        "reconnects": {
            "attempt": 0,
            "limit": 10,
            "total": 0
        },
        "source": "rtsp://192.168.204.10/Streaming/Channels/101/",
        "state": "active",
        "stime": 1706627843,
        "subscribers": 1,
        "type": "capture",
        "uid": "camera-uid5065687-primary",
        "video": {
            "bitrate": 3383431,
            "codec": "H265",
            "fps": 75
        }
    },
    "device": "mediaserver",
    "event": "stream:state",
    "pid": 533735,
    "seq": 1326036436599594,
    "server": "ms-test-dev1",
    "timestamp": 1706627933
}

stream:delete – событие наступает при удалении потока.

stream:delete
JSON
{
    "data": {
        "access": "public",
        "address": "192.168.204.10",
        "camera": "camera-uid5065687",
        "dvr": false,
        "enable": true,
        "kind": "primary",
        "reconnects": {
            "attempt": 0,
            "limit": 10,
            "total": 0
        },
        "source": "rtsp://192.168.204.10/Streaming/Channels/101/",
        "state": "active",
        "stime": 1706627843,
        "subscribers": 1,
        "type": "capture",
        "uid": "camera-uid5065687-primary",
        "video": {
            "bitrate": 3383431,
            "codec": "H265",
            "fps": 75
        }
    },
    "device": "mediaserver",
    "event": "stream:state",
    "pid": 533735,
    "seq": 1326036436599594,
    "server": "ms-test-dev1",
    "timestamp": 1706627933
}

stream:dvr – событие о диапазонах DVR потока. События наступает при появлении нового range.

stream:dvr
JSON
{
    "access": "public",
    "address": "192.168.204.10",
    "atime": 1709713661,
    "camera": "camera-uid5065687",
    "ctime": 1709713539,
    "dvr": {
        "range": {
            "from": 1709713539,
            "size": 36967784,
            "to": 1709713659,
            "type": "regular"
        }
    },
    "error": {
        "msg": "",
        "no": 0
    },
    "source": "rtsp://192.168.204.10/Streaming/Channels/101/",
    "state": "active",
    "stime": 1709713539,
    "type": "capture",
    "uid": "camera-uid5065687-primary"
}

server:capture – событие о захвате потоков серверов.

server:capture
JSON
{
    "data": {
        "ms-test-dev1.navek.dev": [
            "camera-uid8672832-primary",
            "camera-uid8672833-primary"
        ]
    },
    "device": "mediaserver",
    "event": "server:capture",
    "pid": 534459,
    "seq": 1326626505543974,
    "server": "ms-test-dev1",
    "timestamp": 1706628543
}

server:release – событие об окончании захвата вторичных потоков.

server:release
JSON
{
    "data": {
        "ms-test-dev1.navek.dev": [
            "camera-uid8672832-primary",
            "camera-uid8672833-primary"
        ]
    },
    "device": "mediaserver",
    "event": "server:release",
    "pid": 534459,
    "seq": 1326626505543974,
    "server": "ms-test-dev1",
    "timestamp": 1706628543
}

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.