Azure Media Services als Event Grid-Quelle
Dieser Artikel beschreibt die Schemas und Eigenschaften für Media Services-Ereignisse.
Auftragsbezogene Ereignistypen
Media Services gibt die nachfolgend beschriebenen auftragsbezogenen Ereignistypen aus. Es gibt zwei Kategorien für die auftragsbezogenen Ereignisse: „Überwachen von Auftragszustandsänderungen“ und „Überwachen von Auftragsausgabezustandsänderungen“.
Sie können sich für alle Ereignisse registrieren, indem Sie das JobStateChange-Ereignis abonnieren. Sie können auch nur bestimmte Ereignisse abonnieren (z. B. Endzustände wie JobErrored, JobFinished und JobCanceled).
Überwachen von Auftragszustandsänderungen
Ereignistyp | BESCHREIBUNG |
---|---|
Microsoft.Media.JobStateChange | Rufen Sie ein Ereignis für alle Auftragszustandsänderungen ab. |
Microsoft.Media.JobScheduled | Rufen Sie ein Ereignis ab, wenn der Auftrag in den geplanten Zustand übergeht. |
Microsoft.Media.JobProcessing | Rufen Sie ein Ereignis ab, wenn der Auftrag in den Verarbeitungszustand übergeht. |
Microsoft.Media.JobCanceling | Rufen Sie ein Ereignis ab, wenn der Auftrag in den Zustand „Abbrechen“ übergeht. |
Microsoft.Media.JobFinished | Rufen Sie ein Ereignis ab, wenn der Auftrag in den abgeschlossenen Zustand übergeht. Dies ist ein Endzustand, der Auftragsausgaben umfasst. |
Microsoft.Media.JobCanceled | Rufen Sie ein Ereignis ab, wenn der Auftrag in den Zustand „Abgebrochen“ übergeht. Dies ist ein Endzustand, der Auftragsausgaben umfasst. |
Microsoft.Media.JobErrored | Rufen Sie ein Ereignis ab, wenn der Auftrag in den Zustand „Fehler“ übergeht. Dies ist ein Endzustand, der Auftragsausgaben umfasst. |
Weitere Informationen enthalten die folgenden Schemabeispiele.
Überwachen von Auftragsausgabezustandsänderungen
Ein Auftrag kann mehrere Auftragsausgaben enthalten (wenn Sie die Transformation für mehrere Auftragsausgaben konfiguriert haben). Wenn Sie die Details der einzelnen Auftragsausgabe nachverfolgen wollen, lauschen Sie auf ein Änderungsereignis der Auftragsausgabe.
Jeder Auftrag befindet sich auf einer höheren Ebene als JobOutput, daher werden Auftragsausgabeereignisse innerhalb eines entsprechenden Auftrags ausgelöst.
Die Fehlermeldungen in JobFinished
, JobCanceled
, JobError
geben die aggregierten Ergebnisse für jede Auftragsausgabe aus – wenn alle abgeschlossen sind. Die Auftragsausgabeereignisse hingegen werden nach Abschluss jeder Aufgabe ausgelöst. Wenn Sie z. B. über eine Codierungsausgabe und eine anschließende Videoanalyseausgabe verfügen, erhalten Sie zwei Ereignisse, die als Auftragsausgabeereignisse ausgelöst werden, bevor das letzte JobFinished-Ereignis mit den aggregierten Daten ausgelöst wird.
Ereignistyp | BESCHREIBUNG |
---|---|
Microsoft.Media.JobOutputStateChange | Rufen Sie ein Ereignis für alle Auftragsausgabezustandsänderungen ab. |
Microsoft.Media.JobOutputScheduled | Rufen Sie ein Ereignis ab, wenn die Auftragsausgabe in den geplanten Zustand übergeht. |
Microsoft.Media.JobOutputProcessing | Rufen Sie ein Ereignis ab, wenn die Auftragsausgabe in den Verarbeitungszustand übergeht. |
Microsoft.Media.JobOutputCanceling | Rufen Sie ein Ereignis ab, wenn die Auftragsausgabe in den Zustand „Abbrechen“ übergeht. |
Microsoft.Media.JobOutputFinished | Rufen Sie ein Ereignis ab, wenn die Auftragsausgabe in den abgeschlossenen Zustand übergeht. |
Microsoft.Media.JobOutputCanceled | Rufen Sie ein Ereignis ab, wenn die Auftragsausgabe in den Zustand „Abgebrochen“ übergeht. |
Microsoft.Media.JobOutputErrored | Rufen Sie ein Ereignis ab, wenn die Auftragsausgabe in den Zustand „Fehler“ übergeht. |
Weitere Informationen enthalten die folgenden Schemabeispiele.
Überwachen des Fortschritts der Auftragsausgabe
Ereignistyp | BESCHREIBUNG |
---|---|
Microsoft.Media.JobOutputProgress | Dieses Ereignis gibt den Fortschritt der Auftragsverarbeitung von 0 bis 100 % wieder. Der Dienst versucht, ein Ereignis zu senden, wenn der Fortschrittswert um 5 % oder mehr angestiegen ist oder mehr als 30 Sekunden seit dem letzten Ereignis (Heartbeat) vergangen sind. Es ist weder garantiert, dass der Fortschrittswert bei 0 % beginnt oder 100 % erreicht, noch ist gewährleistet, dass er mit der Zeit konstant ansteigt. Mit diesem Ereignis sollte nicht ermittelt werden, ob die Verarbeitung abgeschlossen ist, sondern stattdessen die Statusänderungsereignisse verwendet werden. |
Weitere Informationen enthalten die folgenden Schemabeispiele.
Liveereignistypen
Media Services gibt auch die nachfolgend beschriebenen Live-Ereignistypen aus. Es gibt zwei Kategorien für die Liveereignisse: Ereignisse auf Streamebene und Ereignisse auf Spurebene.
Ereignisse auf Streamebene
Ereignisse auf Streamebene werden pro Stream oder Verbindung ausgelöst. Jedes Ereignis verfügt über einen Parameter StreamId
, der die Verbindung oder den Stream identifiziert. Jeder Stream und jede Verbindung verfügt über mindestens eine Spur verschiedener Typen. Beispielsweise kann eine Verbindung von einem Encoder eine Audiospur und vier Videospuren umfassen. Die Streamereignistypen sind:
Ereignistyp | BESCHREIBUNG |
---|---|
Microsoft.Media.LiveEventConnectionRejected | Verbindungsversuch des Encoders wurde verweigert. |
Microsoft.Media.LiveEventEncoderConnected | Encoder stellt die Verbindung mit dem Liveereignis her. |
Microsoft.Media.LiveEventEncoderDisconnected | Verbindung des Encoders wird getrennt. |
Weitere Informationen enthalten die folgenden Schemabeispiele.
Ereignisse auf Spurebene
Ereignisse auf Spurebene werden pro Spur ausgelöst.
Hinweis
Alle Ereignisse auf Spurebene werden ausgelöst, nachdem ein Liveencoder angeschlossen wurde.
Die Ereignistypen auf der Spurebene sind:
Ereignistyp | BESCHREIBUNG |
---|---|
Microsoft.Media.LiveEventIncomingDataChunkDropped | Media-Server verwirft Datenblöcke, da es zu spät ist oder es einen überlappenden Zeitstempel gibt (Zeitstempel des neuen Datenblocks liegt vor der Endzeit des vorherigen Datenblocks). |
Microsoft.Media.LiveEventIncomingStreamReceived | Media-Server empfängt den ersten Datenblock für jede Spur im Stream oder über die Verbindung. |
Microsoft.Media.LiveEventIncomingStreamsOutOfSync | Media-Server hat erkannt, dass Audio- und Videostreams nicht synchron sind. Verwenden Sie dies als Warnung, da die Darstellung für den Benutzer möglicherweise nicht beeinträchtigt ist. |
Microsoft.Media.LiveEventIncomingVideoStreamsOutOfSync | Media-Server hat erkannt, dass die beiden Videostreams von einem externen Encoder nicht mehr synchron sind. Verwenden Sie dies als Warnung, da die Darstellung für den Benutzer möglicherweise nicht beeinträchtigt ist. |
Microsoft.Media.LiveEventIngestHeartbeat | Wird alle 20 Sekunden für jede Spur veröffentlicht, wenn ein Liveereignis ausgeführt wird. Bietet eine Zusammenfassung der Erfassungsintegrität. Nachdem der Encoder anfänglich angeschlossen war, sendet das Heartbeatereignis weiterhin alle 20 Sekunden, unabhängig davon, ob der Encoder noch angeschlossen ist. |
Microsoft.Media.LiveEventTrackDiscontinuityDetected | Media-Server hat eine Diskontinuität in der eingehenden Spur erkannt. |
Weitere Informationen enthalten die folgenden Schemabeispiele.
Beispiele für Ereignisschemas
JobStateChange
Das folgende Beispiel zeigt das Schema des JobStateChange-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"type": "Microsoft.Media.JobStateChange",
"time": "2018-04-20T21:26:13.8978772",
"id": "b9d38923-9210-4c2b-958f-0054467d4dd7",
"data": {
"previousState": "Processing",
"state": "Finished"
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
previousState |
Zeichenfolge | Der Status des Auftrags vor dem Ereignis. |
state |
Zeichenfolge | Der neue Status des Auftrags, über den in diesem Ereignis eine Benachrichtigung erfolgt. Beispiel: „Geplant: Der Auftrag ist startbereit“ oder „Abgeschlossen: Der Auftrag wurde abgeschlossen“. |
Der Auftragsstatus kann einen der folgenden Werte aufweisen: Queued (In Warteschlange), Scheduled (Geplant), Processing (Wird verarbeitet), Finished (Abgeschlossen), Error (Fehler), Canceled (Abgebrochen), Canceling (Wird abgebrochen).
Hinweis
Queued (In Warteschlange) liegt nur in der Eigenschaft previousState, aber nicht in der Eigenschaft state vor.
JobScheduled, JobProcessing, JobCanceling
Für jede nicht abschließende Auftragszustandsänderung (z. B. JobScheduled, JobProcessing, JobCanceling) sieht das Beispielschema etwa wie folgt aus:
[{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"type": "Microsoft.Media.JobProcessing",
"time": "2018-10-12T16:12:18.0839935",
"id": "a0a6efc8-f647-4fc2-be73-861fa25ba2db",
"data": {
"previousState": "Scheduled",
"state": "Processing",
"correlationData": {
"testKey1": "testValue1",
"testKey2": "testValue2"
}
},
"specversion": "1.0"
}]
JobFinished, JobCanceled, JobErrored
Für jede abschließende Auftragszustandsänderung (z. B. JobFinished, JobCanceled, JobErrored) sieht das Beispielschema etwa wie folgt aus:
[{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"type": "Microsoft.Media.JobFinished",
"time": "2018-10-12T16:25:56.4115495",
"id": "9e07e83a-dd6e-466b-a62f-27521b216f2a",
"data": {
"outputs": [
{
"@odata.type": "#Microsoft.Media.JobOutputAsset",
"assetName": "output-7640689F",
"error": null,
"label": "VideoAnalyzerPreset_0",
"progress": 100,
"state": "Finished"
}
],
"previousState": "Processing",
"state": "Finished",
"correlationData": {
"testKey1": "testValue1",
"testKey2": "testValue2"
}
},
"specversion": "1.0"
}]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | BESCHREIBUNG |
---|---|---|
outputs |
Array | Ruft die Auftragsausgaben ab. |
JobOutputStateChange
Das folgende Beispiel zeigt das Schema des JobOutputStateChange-Ereignisses:
[{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"eventType": "Microsoft.Media.JobOutputStateChange",
"eventTime": "2018-10-12T16:25:56.0242854",
"id": "dde85f46-b459-4775-b5c7-befe8e32cf90",
"data": {
"previousState": "Processing",
"output": {
"@odata.type": "#Microsoft.Media.JobOutputAsset",
"assetName": "output-7640689F",
"error": null,
"label": "VideoAnalyzerPreset_0",
"progress": 100,
"state": "Finished"
},
"jobCorrelationData": {
"testKey1": "testValue1",
"testKey2": "testValue2"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]
JobOutputScheduled, JobOutputProcessing, JobOutputFinished, JobOutputCanceling, JobOutputCanceled, JobOutputErrored
Für jede Zustandsänderung von „JobOutput“ sieht das Beispielschema etwa wie folgt aus:
[{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
"eventType": "Microsoft.Media.JobOutputProcessing",
"eventTime": "2018-10-12T16:12:18.0061141",
"id": "f1fd5338-1b6c-4e31-83c9-cd7c88d2aedb",
"data": {
"previousState": "Scheduled",
"output": {
"@odata.type": "#Microsoft.Media.JobOutputAsset",
"assetName": "output-7640689F",
"error": null,
"label": "VideoAnalyzerPreset_0",
"progress": 0,
"state": "Processing"
},
"jobCorrelationData": {
"testKey1": "testValue1",
"testKey2": "testValue2"
}
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]
JobOutputProgress
Das Beispielschema ähnelt Folgendem:
[{
"topic": "/subscriptions/<subscription-id>/resourceGroups/belohGroup/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "transforms/VideoAnalyzerTransform/jobs/job-5AB6DE32",
"eventType": "Microsoft.Media.JobOutputProgress",
"eventTime": "2018-12-10T18:20:12.1514867",
"id": "00000000-0000-0000-0000-000000000000",
"data": {
"jobCorrelationData": {
"TestKey1": "TestValue1",
"testKey2": "testValue2"
},
"label": "VideoAnalyzerPreset_0",
"progress": 86
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]
LiveEventConnectionRejected
Das folgende Beispiel zeigt das Schema des LiveEventConnectionRejected-Ereignisses:
[
{
"topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaServices/<account-name>",
"subject": "/LiveEvents/MyLiveEvent1",
"eventType": "Microsoft.Media.LiveEventConnectionRejected",
"eventTime": "2018-01-16T01:57:26.005121Z",
"id": "b303db59-d5c1-47eb-927a-3650875fded1",
"data": {
"streamId":"Mystream1",
"ingestUrl": "http://abc.ingest.isml",
"encoderIp": "118.238.251.xxx",
"encoderPort": 52859,
"resultCode": "MPE_INGEST_CODEC_NOT_SUPPORTED"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
streamId |
Zeichenfolge | Bezeichner des Streams oder der Verbindung. Der Encoder bzw. der Kunde ist dafür verantwortlich, diese ID in die Erfassungs-URL einzufügen. |
ingestUrl |
Zeichenfolge | Erfassungs-URL, die vom Liveereignis bereitgestellt wird. |
encoderIp |
Zeichenfolge | IP-Adresse des Encoders. |
encoderPort |
Zeichenfolge | Port des Encoders, von dem dieser Stream stammt. |
resultCode |
Zeichenfolge | Der Grund, aus dem die Verbindung abgelehnt wurde. Diese Ergebniscodes werden in der folgenden Tabelle aufgeführt. |
Die Fehlerergebniscodes finden Sie unter Fehlercodes für Liveereignisse.
LiveEventEncoderConnected
Das folgende Beispiel zeigt das Schema des LiveEventEncoderConnected-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"type": "Microsoft.Media.LiveEventEncoderConnected",
"time": "2018-08-07T23:08:09.1710643",
"id": "<id>",
"data": {
"ingestUrl": "http://mle1-amsts03mediaacctgndos-ts031.channel.media.azure-test.net:80/ingest.isml",
"streamId": "15864-stream0",
"encoderIp": "131.107.147.xxx",
"encoderPort": "27485"
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
streamId |
Zeichenfolge | Bezeichner des Streams oder der Verbindung. Der Encoder bzw. der Kunde ist dafür verantwortlich, diese ID in die Erfassungs-URL bereitzustellen. |
ingestUrl |
Zeichenfolge | Erfassungs-URL, die vom Liveereignis bereitgestellt wird. |
encoderIp |
Zeichenfolge | IP-Adresse des Encoders. |
encoderPort |
Zeichenfolge | Port des Encoders, von dem dieser Stream stammt. |
LiveEventEncoderDisconnected
Das folgende Beispiel zeigt das Schema des LiveEventEncoderDisconnected-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"type": "Microsoft.Media.LiveEventEncoderDisconnected",
"time": "2018-08-07T23:08:09.1710872",
"id": "<id>",
"data": {
"ingestUrl": "http://mle1-amsts03mediaacctgndos-ts031.channel.media.azure-test.net:80/ingest.isml",
"streamId": "15864-stream0",
"encoderIp": "131.107.147.xxx",
"encoderPort": "27485",
"resultCode": "S_OK"
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
streamId |
Zeichenfolge | Bezeichner des Streams oder der Verbindung. Der Encoder bzw. der Kunde ist dafür verantwortlich, diese ID in die Erfassungs-URL einzufügen. |
ingestUrl |
Zeichenfolge | Erfassungs-URL, die vom Liveereignis bereitgestellt wird. |
encoderIp |
Zeichenfolge | IP-Adresse des Encoders. |
encoderPort |
Zeichenfolge | Port des Encoders, von dem dieser Stream stammt. |
resultCode |
Zeichenfolge | Der Grund für die Trennung der Verbindung mit dem Encoder. Die Trennung kann ordnungsgemäß oder verursacht durch einen Fehler erfolgen. Diese Ergebniscodes werden in der folgenden Tabelle aufgeführt. |
Die Fehlerergebniscodes finden Sie unter Fehlercodes für Liveereignisse.
Ergebniscodes für ordnungsgemäße Trennungen sind:
Ergebniscode | BESCHREIBUNG |
---|---|
S_OK | Der Encoder hat die Verbindung erfolgreich getrennt. |
MPE_CLIENT_TERMINATED_SESSION | Encoder getrennt (RTMP). |
MPE_CLIENT_DISCONNECTED | Encoder getrennt (FMP4). |
MPI_REST_API_CHANNEL_RESET | Befehl zum Zurücksetzen des Kanals wurde empfangen. |
MPI_REST_API_CHANNEL_STOP | Befehl zum Beenden des Kanals wurde empfangen. |
MPI_REST_API_CHANNEL_STOP | Kanal wird gerade gewartet. |
MPI_STREAM_HIT_EOF | EOF-Stream wird vom Encoder gesendet. |
LiveEventIncomingDataChunkDropped
Das folgende Beispiel zeigt das Schema des LiveEventIncomingDataChunkDropped-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaServices/<account-name>",
"subject": "/LiveEvents/MyLiveEvent1",
"type": "Microsoft.Media.LiveEventIncomingDataChunkDropped",
"time": "2018-01-16T01:57:26.005121Z",
"id": "03da9c10-fde7-48e1-80d8-49936f2c3e7d",
"data": {
"trackType": "Video",
"trackName": "Video",
"bitrate": 300000,
"timestamp": 36656620000,
"timescale": 10000000,
"resultCode": "FragmentDrop_OverlapTimestamp"
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
trackType |
Zeichenfolge | Spurtyp (Audio/Video) |
trackName |
Zeichenfolge | Name der Spur |
bitrate |
integer | Bitrate der Spur |
timestamp |
Zeichenfolge | Zeitstempel des gelöschten Datenblocks |
timescale |
Zeichenfolge | Zeitskala des Zeitstempels |
resultCode |
Zeichenfolge | Grund für das Löschen des Datenblocks. FragmentDrop_OverlapTimestamp oder FragmentDrop_NonIncreasingTimestamp. |
LiveEventIncomingStreamReceived
Das folgende Beispiel zeigt das Schema des LiveEventIncomingStreamReceived-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"type": "Microsoft.Media.LiveEventIncomingStreamReceived",
"time": "2018-08-07T23:08:10.5069288Z",
"id": "7f939a08-320c-47e7-8250-43dcfc04ab4d",
"data": {
"ingestUrl": "http://mle1-amsts03mediaacctgndos-ts031.channel.media.azure-test.net:80/ingest.isml/Streams(15864-stream0)15864-stream0",
"trackType": "video",
"trackName": "video",
"bitrate": 2962000,
"encoderIp": "131.107.147.xxx",
"encoderPort": "27485",
"timestamp": "15336831655032322",
"duration": "20000000",
"timescale": "10000000"
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
trackType |
Zeichenfolge | Spurtyp (Audio/Video) |
trackName |
Zeichenfolge | Name der Spur (entweder vom Encoder oder (bei RTMP) vom Server im Format SpurTyp_Bitrate generiert). |
bitrate |
integer | Bitrate der Spur |
ingestUrl |
Zeichenfolge | Erfassungs-URL, die vom Liveereignis bereitgestellt wird. |
encoderIp |
Zeichenfolge | IP-Adresse des Encoders. |
encoderPort |
Zeichenfolge | Port des Encoders, von dem dieser Stream stammt. |
timestamp |
Zeichenfolge | Erster Zeitstempel des empfangenen Datenblocks |
timescale |
Zeichenfolge | Zeitskala für die Darstellung des Zeitstempels |
LiveEventIncomingStreamsOutOfSync
Das folgende Beispiel zeigt das Schema des LiveEventIncomingStreamsOutOfSync-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"type": "Microsoft.Media.LiveEventIncomingStreamsOutOfSync",
"time": "2018-08-10T02:26:20.6269183Z",
"id": "b9d38923-9210-4c2b-958f-0054467d4dd7",
"data": {
"minLastTimestamp": "319996",
"typeOfStreamWithMinLastTimestamp": "Audio",
"maxLastTimestamp": "366000",
"typeOfStreamWithMaxLastTimestamp": "Video",
"timescaleOfMinLastTimestamp": "10000000",
"timescaleOfMaxLastTimestamp": "10000000"
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
minLastTimestamp |
Zeichenfolge | Minimum der letzten Zeitstempel für alle Spuren (Audio oder Video). |
typeOfTrackWithMinLastTimestamp |
Zeichenfolge | Der Typ der Spur (Audio oder Video) mit dem niedrigsten letzten Zeitstempel. |
maxLastTimestamp |
Zeichenfolge | Maximum aller Zeitstempel in allen Spuren (Audio oder Video). |
typeOfTrackWithMaxLastTimestamp |
Zeichenfolge | Der Typ der Spur (Audio oder Video) mit dem höchsten letzten Zeitstempel. |
timescaleOfMinLastTimestamp |
Zeichenfolge | Ruft die Zeitskala ab, in der „MinLastTimestamp“ dargestellt wird. |
timescaleOfMaxLastTimestamp |
Zeichenfolge | Ruft die Zeitskala ab, in der „MaxLastTimestamp“ dargestellt wird. |
LiveEventIncomingVideoStreamsOutOfSync
Das folgende Beispiel zeigt das Schema des LiveEventIncomingVideoStreamsOutOfSync-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaServices/<account-name>",
"subject": "/LiveEvents/LiveEvent1",
"type": "Microsoft.Media.LiveEventIncomingVideoStreamsOutOfSync",
"time": "2018-01-16T01:57:26.005121Z",
"id": "6dd4d862-d442-40a0-b9f3-fc14bcf6d750",
"data": {
"firstTimestamp": "2162058216",
"firstDuration": "2000",
"secondTimestamp": "2162057216",
"secondDuration": "2000",
"timescale": "10000000"
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
firstTimestamp |
Zeichenfolge | Zeitstempel, der für eine der Spuren/Qualitätsstufen vom Typ Video empfangen wurde. |
firstDuration |
Zeichenfolge | Dauer des Datenblocks mit dem ersten Zeitstempel. |
secondTimestamp |
Zeichenfolge | Zeitstempel, der für einige andere Spuren/Qualitätsstufen vom Typ Video empfangen wurde. |
secondDuration |
Zeichenfolge | Dauer des Datenblocks mit dem zweiten Zeitstempel. |
timescale |
Zeichenfolge | Die Zeitskala für Zeitstempel und Dauer. |
LiveEventIngestHeartbeat
Das folgende Beispiel zeigt das Schema des LiveEventIngestHeartbeat-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"type": "Microsoft.Media.LiveEventIngestHeartbeat",
"time": "2018-08-07T23:17:57.4610506",
"id": "7f450938-491f-41e1-b06f-c6cd3965d786",
"data": {
"trackType": "audio",
"trackName": "audio",
"bitrate": 160000,
"incomingBitrate": 155903,
"lastTimestamp": "15336837535253637",
"timescale": "10000000",
"overlapCount": 0,
"discontinuityCount": 0,
"nonincreasingCount": 0,
"unexpectedBitrate": false,
"state": "Running",
"healthy": true
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
trackType |
Zeichenfolge | Spurtyp (Audio/Video) |
trackName |
Zeichenfolge | Name der Spur (entweder vom Encoder oder (bei RTMP) vom Server im Format SpurTyp_Bitrate generiert). |
bitrate |
integer | Bitrate der Spur |
incomingBitrate |
integer | Berechnete Bitrate basierend auf den Datenblöcken vom Encoder. |
lastTimestamp |
Zeichenfolge | Neuester Zeitstempel, der für eine Spur in den letzten 20 Sekunden empfangen wurde. |
timescale |
Zeichenfolge | Zeitskala für die Darstellung der Zeitstempel. |
overlapCount |
integer | Anzahl der Datenblöcke mit überlappenden Zeitstempeln in den letzten 20 Sekunden. |
discontinuityCount |
integer | Anzahl von Diskontinuitäten in den letzten 20 Sekunden. |
nonIncreasingCount |
integer | Anzahl der Datenblöcke mit Zeitstempeln in der Vergangenheit, die in den letzten 20 Sekunden empfangen wurden. |
unexpectedBitrate |
bool | Die erwarteten und tatsächlichen Bitraten in den letzten 20 Sekunden unterscheiden sich um mehr als das maximal zulässige Limit. TRUE, wenn (und nur wenn) incomingBitrate >= 2 * Bitrate OR incomingBitrate <= Bitrate / 2 OR IncomingBitrate = 0 gilt. |
state |
Zeichenfolge | Zustand des Liveereignisses. |
healthy |
bool | Gibt an, ob die Erfassung hinsichtlich Anzahl und Flags fehlerfrei ist. Healthy ist TRUE, wenn overlapCount = 0 && discontinuityCount = 0 && nonIncreasingCount = 0 && unexpectedBitrate = false gilt. |
lastFragmentArrivalTime |
Zeichenfolge | Der letzte Zeitstempel in UTC, zu dem ein Fragment am Erfassungsendpunkt eingetroffen ist. Beispiel für das Datumsformat: „2020-11-11 12:12:12:888999“ |
ingestDriftValue |
Zeichenfolge | Gibt die Geschwindigkeit der Verzögerung der eingehenden Audio- oder Videodaten während der letzten Minute in Sekunden pro Minute an. Der Wert ist größer als null, wenn Daten in der letzten Minute langsamer als erwartet beim Liveereignis eintreffen. null, wenn Daten ohne Verzögerung eingetroffen sind; und „n/a“ (n/v), wenn keine Audio- oder Videodaten empfangen wurden. Wenn Sie beispielsweise über einen Beitragsencoder verfügen, der Liveinhalte sendet und aufgrund von Verarbeitungsproblemen oder Netzwerklatenz verlangsamt wird, kann er möglicherweise nur insgesamt 58 Sekunden Audio oder Video in einem Zeitraum von einer Minute liefern. Dies wird als Abweichung von 2 Sekunden pro Minute gemeldet. Wenn der Encoder aufholen und alle 60 Sekunden oder mehr Daten pro Minute und senden kann, wird dieser Wert als 0 gemeldet. Wenn eine Trennung oder Diskontinuität vom Encoder vorgelegen hat, wird dieser Wert möglicherweise trotzdem als 0 angezeigt, da er keine Unterbrechungen der Daten berücksichtigt, sondern nur Daten, die in Zeitstempeln verzögert sind. |
transcriptionState |
Zeichenfolge | Dieser Wert ist für Audiospurheartbeats aktiviert, wenn Livetranskription aktiviert ist. Andernfalls wird eine leere Zeichenfolge verwendet. Dieser Status gilt nur für den tracktype „audio “ für Livetranskription. Alle anderen Spuren haben einen leeren Wert. |
transcriptionLanguage |
Zeichenfolge | Der Sprachcode (im BCP-47-Format) der Transkriptionssprache. „de-de“ gibt beispielsweise Deutsch (Deutschland) an. Der Wert ist für die Videospurheartbeats oder bei deaktivierter Livetranskription leer. |
LiveEventTrackDiscontinuityDetected
Das folgende Beispiel zeigt das Schema des LiveEventTrackDiscontinuityDetected-Ereignisses:
[
{
"source": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
"subject": "liveEvent/mle1",
"type": "Microsoft.Media.LiveEventTrackDiscontinuityDetected",
"time": "2018-08-07T23:18:06.1270405Z",
"id": "5f4c510d-5be7-4bef-baf0-64b828be9c9b",
"data": {
"trackName": "video",
"previousTimestamp": "15336837615032322",
"trackType": "video",
"bitrate": 2962000,
"newTimestamp": "15336837619774273",
"discontinuityGap": "575284",
"timescale": "10000000"
},
"specversion": "1.0"
}
]
Das Datenobjekt weist die folgenden Eigenschaften auf:
Eigenschaft | Typ | Beschreibung |
---|---|---|
trackType |
Zeichenfolge | Spurtyp (Audio/Video) |
trackName |
Zeichenfolge | Name der Spur (entweder vom Encoder oder (bei RTMP) vom Server im Format SpurTyp_Bitrate generiert). |
bitrate |
integer | Bitrate der Spur |
previousTimestamp |
Zeichenfolge | Zeitstempel des vorherigen Fragments. |
newTimestamp |
Zeichenfolge | Zeitstempel des aktuellen Fragments. |
discontinuityGap |
Zeichenfolge | Lücke zwischen den beiden obigen Zeitstempeln. |
timescale |
Zeichenfolge | Zeitskala für die Darstellung von Zeitstempel und Diskontinuitätslücke. |
Allgemeine Ereigniseigenschaften
Ein Ereignis weist die folgenden Daten auf oberster Ebene aus:
Eigenschaft | Typ | Beschreibung |
---|---|---|
source |
Zeichenfolge | Das Event Grid-Thema. Diese Eigenschaft enthält die Ressourcen-ID für das Media Services-Konto. |
subject |
Zeichenfolge | Ressourcenpfad für den Media Services-Kanal unter dem Media Services-Konto. Durch Verketten von topic und subject erhalten Sie die Ressourcen-ID für den Auftrag. |
type |
Zeichenfolge | Einer der registrierten Ereignistypen für die Ereignisquelle. Beispiel: “Microsoft.Media.JobStateChange“. |
time |
Zeichenfolge | Die Zeit, in der das Ereignis generiert wird, basierend auf der UTC-Zeit des Anbieters. |
id |
Zeichenfolge | Eindeutiger Bezeichner für das Ereignis. |
data |
Objekt (object) | Media Services-Ereignisdaten. |
specversion |
Zeichenfolge | Version der CloudEvents-Schemaspezifikation. |
Nächste Schritte
Weitere Informationen finden Sie unter Registrieren für Statusänderungsereignisse von Aufträgen.