Skip to main content

Alert

Overview

Alert is a module that can detect anomalies and patterns of interest in a stream or system and send notifications to users. Anomalies and patterns of interest can be set through predefined , and when detected, the module sends an HTTP(S) request to the user's notification server.

Configuration

Alert can be set up on <Server>, as shown below.

<Server version="8">
<Alert>
<Url>http://192.168.0.161:9595/alert/notification</Url>
<SecretKey>1234</SecretKey>
<Timeout>3000</Timeout>
<Rules>
<Ingress>
<MinBitrate>2000000</MinBitrate>
<MaxBitrate>4000000</MaxBitrate>
<MinFramerate>15</MinFramerate>
<MaxFramerate>60</MaxFramerate>
<MinWidth>1280</MinWidth>
<MinHeight>720</MinHeight>
<MaxWidth>1920</MaxWidth>
<MaxHeight>1080</MaxHeight>
<MinSamplerate>16000</MinSamplerate>
<MaxSamplerate>50400</MaxSamplerate>
<LongKeyFrameInterval />
<HasBFrames />
</Ingress>
</Rules>
</Alert>
</Server>
KeyDescription
UrlThe HTTP Server to receive the notification. HTTP and HTTPS are available.
SecretkeyThe secret key used when encrypting with HMAC-SHA1
For more information, see Security.
TimeoutTime to wait for a response after request. (in milliseconds)
RulesDefines anomalies and patterns of interest to be detected.

Rules

KeyDescription
IngressMinBitrateDetects when the ingress stream's bitrate is lower than the set value.
MaxBitrateDetects when the ingress stream's bitrate is greater than the set value.
MinFramerateDetects when the ingress stream's framerate is lower than the set value.
MaxFramerateDetects when the ingress stream's framerate is greater than the set value.
MinWidthDetects when the ingress stream's width is lower than the set value.
MaxWidthDetects when the ingress stream's width is greater than the set value.
MinHeightDetects when the ingress stream's height is lower than the set value.
MaxHeightDetects when the ingress stream's height is greater than the set value.
MinSamplerateDetects when the ingress stream's samplerate is lower than the set value.
MaxSamplerateDetects when the ingress stream's samplerate is greater than the set value.
LongKeyFrameIntervalDetects when the ingress stream's keyframe interval is too long (exceeds 4 seconds).
HasBFramesDetects when there are B-frames in the ingress stream.

Notification

Request

Format

POST /configured/target/url HTTP/1.1
Content-Length: 1037
Content-Type: application/json
Accept: application/json
X-OME-Signature: f871jd991jj1929jsjd91pqa0amm1
{
"sourceUri":"#default#app/stream",
"messages":[
{
"code":"INGRESS_HAS_BFRAME",
"description":"There are B-Frames in the ingress stream."
},
{
"code":"INGRESS_BITRATE_LOW",
"description":"The ingress stream's current bitrate (316228 bps) is lower than the configured bitrate (2000000 bps)"
}
],
"sourceInfo":{
"createdTime":"2023-04-07T21:15:24.487+09:00",
"sourceType":"Rtmp",
"sourceUrl":"TCP://192.168.0.220:10639",
"tracks":[
{
"id":0,
"name":"Video",
"type":"Video",
"video":{
"bitrate":300000,
"bypass":false,
"codec":"H264",
"framerate":30.0,
"hasBframes":true,
"height":1080,
"keyFrameInterval":0,
"width":1920
}
},
{
"audio":{
"bitrate":160000,
"bypass":false,
"channel":1,
"codec":"AAC",
"samplerate":48000
},
"id":1,
"name":"Audio",
"type":"Audio"
},
{
"id":2,
"name":"Data",
"type":"Data"
}
]
},
"type":"INGRESS"
}

Here is a detailed explanation of each element of JSON payload:

ElementDescription
sourceUriURI information of the detected source.
INGRESS: #<vhost>#<application>/<input_stream>
messagesList of messages detected by the Rules.
sourceInfoDetailed information about the source at the time of detection. It is identical to the response of the REST API's source information query for the detected source.
typeIt represents the format of the JSON payload. The information of the JSON elements can vary depending on the value of the type.

Messages

TypeCodeDescription
INGRESSINGRESS_BITRATE_LOWThe ingress stream's current bitrate (%d bps) is lower than the configured bitrate (%d bps)
INGRESS_BITRATE_HIGHThe ingress stream's current bitrate (%d bps) is higher than the configured bitrate (%d bps)
INGRESS_FRAMERATE_LOWThe ingress stream's current framerate (%.2f fps) is lower than the configured framerate (%.2f fps)
INGRESS_FRAMERATE_HIGHThe ingress stream's current framerate (%f fps) is higher than the configured framerate (%f fps)
INGRESS_WIDTH_SMALLThe ingress stream's width (%d) is smaller than the configured width (%d)
INGRESS_WIDTH_LARGEThe ingress stream's width (%d) is larger than the configured width (%d)
INGRESS_HEIGHT_SMALLThe ingress stream's height (%d) is smaller than the configured height (%d)
INGRESS_HEIGHT_LARGEThe ingress stream's height (%d) is larger than the configured height (%d)
INGRESS_SAMPLERATE_LOWThe ingress stream's current samplerate (%d) is lower than the configured samplerate (%d)
INGRESS_SAMPLERATE_HIGHThe ingress stream's current samplerate (%d) is higher than the configured samplerate (%d)
INGRESS_LONG_KEY_FRAME_INTERVALThe ingress stream's current keyframe interval (%.1f seconds) is too long. Please use a keyframe interval of 4 seconds or less
INGRESS_HAS_BFRAMEThere are B-Frames in the ingress stream

Security

The control server may need to validate incoming http requests for security reasons. To do this, the Alert module puts the X-OME-Signature value in the HTTP request header. X-OME-Signature is a base64 url safe encoded value obtained by encrypting the payload of an HTTP request with the HMAC-SHA1 algorithm using the secret key set in <Alert><SecretKey> of the configuration.

Response

The engine in the closing state does not need any parameter in response. The response payload is ignored.

HTTP/1.1 200 OK
Content-Length: 0
Connection: Closed