Media Services 이벤트에 대한 Azure Event Grid 스키마

Media Services 로고 v3


경고

Azure Media Services는 2024년 6월 30일에 사용 중지됩니다. 자세한 내용은 AMS 사용 중지 가이드를 참조하세요.

이 문서에서는 Media Services 이벤트에 대한 스키마와 속성을 제공합니다.

샘플 스크립트 및 자습서 목록은 Media Services 이벤트 원본을 참조하세요.

Media Services는 아래에 설명된 작업 관련 이벤트 유형을 내보냅니다. 작업 관련 이벤트는 “작업 상태 변경 모니터링” 및 “작업 출력 상태 변경 모니터링”의 두 가지 범주로 구분됩니다.

JobStateChange 이벤트를 구독하여 모든 이벤트에 등록할 수 있습니다. 또는 특정 이벤트(예: JobErrored, JobFinished 및 JobCanceled와 같은 최종 상태)만 구독할 수 있습니다.

작업 상태 변경 모니터링

이벤트 유형 Description
Microsoft.Media.JobStateChange 모든 작업 상태 변경에 대한 이벤트를 가져옵니다.
Microsoft.Media.JobScheduled 작업이 예약됨 상태로 전환되는 이벤트를 가져옵니다.
Microsoft.Media.JobProcessing 작업이 처리 중 상태로 전환되는 이벤트를 가져옵니다.
Microsoft.Media.JobCanceling 작업이 취소 중 상태로 전환되는 이벤트를 가져옵니다.
Microsoft.Media.JobFinished 작업이 완료됨 상태로 전환되는 이벤트를 가져옵니다. 작업 출력을 포함하는 최종 상태입니다.
Microsoft.Media.JobCanceled 작업이 취소됨 상태로 전환되는 이벤트를 가져옵니다. 작업 출력을 포함하는 최종 상태입니다.
Microsoft.Media.JobErrored 작업이 오류 상태로 전환되는 이벤트를 가져옵니다. 작업 출력을 포함하는 최종 상태입니다.

다음에 나오는 스키마 예제를 참조하세요.

작업 출력 상태 변경 모니터링

작업에 여러 작업 출력이 포함될 수 있습니다(여러 작업 출력이 포함되도록 변환을 구성한 경우). 개별 작업 출력의 세부 정보를 추적하려면 작업 출력 변경 이벤트를 수신 대기합니다.

작업JobOutput보다 더 높은 수준에 있으므로 작업 출력 이벤트는 해당 작업 내에서 실행됩니다.

JobFinished, JobCanceled, JobError의 오류 메시지는 모든 작업 출력이 완료되면 각 작업 출력에 대한 집계 결과를 출력합니다. 반면 작업(job) 출력 이벤트는 각 작업(task)이 완료될 때 실행됩니다. 예를 들어 인코딩 출력과 그 다음 비디오 분석 출력이 있으면 최종 JobFinished 이벤트가 집계 데이터로 실행되기 전에 작업 출력 이벤트로 발생하는 두 개의 이벤트가 실행됩니다.

이벤트 유형 Description
Microsoft.Media.JobOutputStateChange 모든 작업 출력 상태 변경에 대한 이벤트를 가져옵니다.
Microsoft.Media.JobOutputScheduled 작업 출력이 예약됨 상태로 전환되는 이벤트를 가져옵니다.
Microsoft.Media.JobOutputProcessing 작업 출력이 처리 중 상태로 전환되는 이벤트를 가져옵니다.
Microsoft.Media.JobOutputCanceling 작업 출력이 취소 중 상태로 전환되는 이벤트를 가져옵니다.
Microsoft.Media.JobOutputFinished 작업 출력이 완료됨 상태로 전환되는 이벤트를 가져옵니다.
Microsoft.Media.JobOutputCanceled 작업 출력이 취소됨 상태로 전환되는 이벤트를 가져옵니다.
Microsoft.Media.JobOutputErrored 작업 출력이 오류 상태로 전환되는 이벤트를 가져옵니다.

다음에 나오는 스키마 예제를 참조하세요.

작업 출력 진행률 모니터링

이벤트 유형 Description
Microsoft.Media.JobOutputProgress 이 이벤트는 작업 처리 진행 상태를 0%에서 100%까지 반영합니다. 진행 상태 값이 5% 이상 증가했거나 마지막 이벤트(하트비트) 이후 30초가 넘은 경우 서비스에서 이벤트 전송을 시도합니다. 진행 상태 값이 0%에서 시작하거나 100%에 도달한다고 보장되지 않는 경우 시간에 따라 일정한 비율로 증가한다고 보장되지도 않습니다. 이 이벤트를 사용하여 처리가 완료되었는지 확인하지 마세요. 대신, 상태 변경 이벤트를 사용해야 합니다.

다음에 나오는 스키마 예제를 참조하세요.

라이브 이벤트 유형

Media Services는 아래에 설명된 라이브 이벤트 유형도 내보냅니다. 라이브 이벤트에는 스트림 수준 이벤트와 트랙 수준 이벤트의 두 가지 범주가 있습니다.

스트림 수준 이벤트

스트림 수준 이벤트는 스트림 또는 연결마다 발생합니다. 각 이벤트에는 연결 또는 스트림을 식별하는 StreamId 매개 변수가 있습니다. 각 스트림 또는 연결에는 서로 다른 유형의 트랙이 하나 이상 있습니다. 예를 들어, 인코더의 연결 하나에는 하나의 오디오 트랙과 4개의 비디오 트랙이 있을 수 있습니다. 스트림 이벤트 유형은 다음과 같습니다.

이벤트 유형 Description
Microsoft.Media.LiveEventConnectionRejected 인코더의 연결 시도가 거부됩니다.
Microsoft.Media.LiveEventEncoderConnected 인코더에서 라이브 이벤트와의 연결을 설정합니다.
Microsoft.Media.LiveEventEncoderDisconnected 인코더에서 연결을 끊습니다.

다음에 나오는 스키마 예제를 참조하세요.

트랙 수준 이벤트

트랙 수준 이벤트는 트랙마다 발생합니다.

참고

모든 트랙 수준 이벤트는 라이브 인코더가 연결된 후에 발생합니다.

트랙 수준 이벤트 유형은 다음과 같습니다.

이벤트 유형 Description
Microsoft.Media.LiveEventIncomingDataChunkDropped 미디어 서버가 너무 늦거나 타임스탬프가 겹치기 때문에 데이터 청크가 삭제됩니다(새 데이터 청크의 타임스탬프가 이전 데이터 청크의 종료 시간보다 이전임).
Microsoft.Media.LiveEventIncomingStreamReceived 미디어 서버에서 스트림 또는 연결의 각 트랙에 대한 첫 번째 데이터 청크를 받습니다.
Microsoft.Media.LiveEventIncomingStreamsOutOfSync 미디어 서버는 오디오 및 비디오 스트림이 동기화되지 않은 경우를 탐지합니다. 사용자 환경이 영향을 받지 않을 수 있으므로 이 이벤트를 경고로 사용합니다.
Microsoft.Media.LiveEventIncomingVideoStreamsOutOfSync 미디어 서버는 외부 인코더에서 들어오는 두 비디오 스트림이 하나라도 동기화되지 않은 경우를 탐지합니다. 사용자 환경이 영향을 받지 않을 수 있으므로 이 이벤트를 경고로 사용합니다.
Microsoft.Media.LiveEventIngestHeartbeat 라이브 이벤트가 실행될 때 각 트랙에 대해 20초마다 게시됩니다. 수집 상태 요약을 제공합니다.

인코더가 처음 연결된 후에는 인코더가 계속 연결되어 있는지에 관계없이 하트비트 이벤트가 20초마다 계속 발생합니다.
Microsoft.Media.LiveEventTrackDiscontinuityDetected 미디어 서버에서 들어오는 트랙의 불연속성을 감지합니다.

다음에 나오는 스키마 예제를 참조하세요.

이벤트 스키마 예제

JobStateChange

JobStateChange 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
    "subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
    "eventType": "Microsoft.Media.JobStateChange",
    "eventTime": "2018-04-20T21:26:13.8978772",
    "id": "b9d38923-9210-4c2b-958f-0054467d4dd7",
    "data": {
      "previousState": "Processing",
      "state": "Finished"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
previousState 문자열 이벤트 전의 작업 상태입니다.
state 문자열 이 이벤트에서 알리는 직업의 새로운 상태입니다. 예를 들어 “예약됨: 작업을 시작할 준비가 되었습니다.” 또는 “완료됨: 작업이 완료되었습니다.” 등이 있습니다.

작업 상태는 다음 중 하나일 수 있습니다. 큐에 대기됨, 예약됨, 처리 중, 완료됨, 오류, 취소됨, 취소 중

참고

큐에 대기됨previousState 속성에만 표시되고 state 속성에는 표시되지 않습니다.

JobScheduled, JobProcessing, JobCanceling

각 비최종 작업 상태 변경(JobScheduled, JobProcessing, JobCanceling 등)에 대한 예제 스키마는 다음과 유사합니다.

[{
  "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
  "subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
  "eventType": "Microsoft.Media.JobProcessing",
  "eventTime": "2018-10-12T16:12:18.0839935",
  "id": "a0a6efc8-f647-4fc2-be73-861fa25ba2db",
  "data": {
    "previousState": "Scheduled",
    "state": "Processing",
    "correlationData": {
      "testKey1": "testValue1",
      "testKey2": "testValue2"
    }
  },
  "dataVersion": "1.0",
  "metadataVersion": "1"
}]

JobFinished, JobCanceled, JobErrored

각 최종 작업 상태 변경(JobFinished, JobCanceled, JobErrored 등)에 대한 예제 스키마는 다음과 유사합니다.

[{
  "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
  "subject": "transforms/VideoAnalyzerTransform/jobs/<job-id>",
  "eventType": "Microsoft.Media.JobFinished",
  "eventTime": "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"
    }
  },
  "dataVersion": "1.0",
  "metadataVersion": "1"
}]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
outputs Array 작업 출력을 가져옵니다.

JobOutputStateChange

JobOutputStateChange 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[{
  "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

각 JobOutput 상태 변경에 대한 예제 스키마는 다음과 유사합니다.

[{
  "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

예제 스키마는 다음과 유사합니다.

[{
 "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

LiveEventConnectionRejected 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "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"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
streamId 문자열 스트림 또는 연결에 대한 식별자입니다. 인코더 또는 고객이 이 ID를 수집 URL에 추가해야 합니다.
ingestUrl 문자열 라이브 이벤트에서 제공하는 수집 URL입니다.
encoderIp 문자열 인코더의 IP입니다.
encoderPort 문자열 이 스트림이 발생한 인코더의 포트입니다.
resultCode 문자열 연결이 거부된 이유입니다. 결과 코드는 다음 표에 나와 있습니다.

라이브 이벤트 오류 코드에서 오류 결과 코드를 찾을 수 있습니다.

LiveEventEncoderConnected

LiveEventEncoderConnected 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
    "subject": "liveEvent/mle1",
    "eventType": "Microsoft.Media.LiveEventEncoderConnected",
    "eventTime": "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"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
streamId 문자열 스트림 또는 연결에 대한 식별자입니다. 인코더 또는 고객이 이 ID를 수집 URL에 제공해야 합니다.
ingestUrl 문자열 라이브 이벤트에서 제공하는 수집 URL입니다.
encoderIp 문자열 인코더의 IP입니다.
encoderPort 문자열 이 스트림이 발생한 인코더의 포트입니다.

LiveEventEncoderDisconnected

LiveEventEncoderDisconnected 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
    "subject": "liveEvent/mle1",
    "eventType": "Microsoft.Media.LiveEventEncoderDisconnected",
    "eventTime": "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"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
streamId 문자열 스트림 또는 연결에 대한 식별자입니다. 인코더 또는 고객이 이 ID를 수집 URL에 추가해야 합니다.
ingestUrl 문자열 라이브 이벤트에서 제공하는 수집 URL입니다.
encoderIp 문자열 인코더의 IP입니다.
encoderPort 문자열 이 스트림이 발생한 인코더의 포트입니다.
resultCode 문자열 인코더 연결이 끊어진 이유입니다. 정상적인 연결 끊기이거나 오류일 수 있습니다. 결과 코드는 다음 표에 나와 있습니다.

라이브 이벤트 오류 코드에서 오류 결과 코드를 찾을 수 있습니다.

정상적인 연결 끊기 결과 코드는 다음과 같습니다.

결과 코드 설명
S_OK 인코더의 연결이 성공적으로 끊어졌습니다.
MPE_CLIENT_TERMINATED_SESSION 인코더(RTMP)의 연결이 끊어졌습니다.
MPE_CLIENT_DISCONNECTED 인코더(FMP4)의 연결이 끊어졌습니다.
MPI_REST_API_CHANNEL_RESET 채널 다시 설정 명령을 받았습니다.
MPI_REST_API_CHANNEL_STOP 채널 중지 명령을 받았습니다.
MPI_REST_API_CHANNEL_STOP 유지 관리 중인 채널입니다.
MPI_STREAM_HIT_EOF 인코더에서 EOF 스트림을 보냈습니다.

LiveEventIncomingDataChunkDropped

LiveEventIncomingDataChunkDropped 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaServices/<account-name>",
    "subject": "/LiveEvents/MyLiveEvent1",
    "eventType": "Microsoft.Media.LiveEventIncomingDataChunkDropped",
    "eventTime": "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"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
trackType 문자열 트랙 유형입니다(예: Audio/Video).
trackName 문자열 트랙의 이름입니다.
bitrate 정수 트랙의 비트 전송률입니다.
timestamp 문자열 데이터 청크의 타임스탬프가 삭제되었습니다.
timescale 문자열 타임스탬프의 시간 간격입니다.
resultCode 문자열 데이터 청크가 삭제된 이유입니다. FragmentDrop_OverlapTimestamp 또는 FragmentDrop_NonIncreasingTimestamp입니다.

LiveEventIncomingStreamReceived

LiveEventIncomingStreamReceived 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
    "subject": "liveEvent/mle1",
    "eventType": "Microsoft.Media.LiveEventIncomingStreamReceived",
    "eventTime": "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"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
trackType 문자열 트랙 유형입니다(예: Audio/Video).
trackName 문자열 트랙의 이름입니다(인코더에서 제공하거나, RTMP의 경우 서버에서 TrackType_Bitrate 형식으로 생성함).
bitrate 정수 트랙의 비트 전송률입니다.
ingestUrl 문자열 라이브 이벤트에서 제공하는 수집 URL입니다.
encoderIp 문자열 인코더의 IP입니다.
encoderPort 문자열 이 스트림이 발생한 인코더의 포트입니다.
timestamp 문자열 받은 데이터 청크의 첫 번째 타임스탬프입니다.
timescale 문자열 타임스탬프가 표시되는 시간 간격입니다.

LiveEventIncomingStreamsOutOfSync

LiveEventIncomingStreamsOutOfSync 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
    "subject": "liveEvent/mle1",
    "eventType": "Microsoft.Media.LiveEventIncomingStreamsOutOfSync",
    "eventTime": "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"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
minLastTimestamp 문자열 모든 트랙(오디오 또는 비디오) 중에서 마지막 타임스탬프의 최솟값입니다.
typeOfTrackWithMinLastTimestamp 문자열 마지막 타임스탬프가 최소인 트랙 유형(오디오 또는 비디오)입니다.
maxLastTimestamp 문자열 모든 트랙(오디오 또는 비디오) 중에서 모든 타임스탬프의 최댓값입니다.
typeOfTrackWithMaxLastTimestamp 문자열 마지막 타임스탬프가 최대인 트랙 유형(오디오 또는 비디오)입니다.
timescaleOfMinLastTimestamp 문자열 “MinLastTimestamp”가 표시되는 시간 간격을 가져옵니다.
timescaleOfMaxLastTimestamp 문자열 “MaxLastTimestamp”가 표시되는 시간 간격을 가져옵니다.

LiveEventIncomingVideoStreamsOutOfSync

LiveEventIncomingVideoStreamsOutOfSync 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaServices/<account-name>",
    "subject": "/LiveEvents/LiveEvent1",
    "eventType": "Microsoft.Media.LiveEventIncomingVideoStreamsOutOfSync",
    "eventTime": "2018-01-16T01:57:26.005121Z",
    "id": "6dd4d862-d442-40a0-b9f3-fc14bcf6d750",
    "data": {
      "firstTimestamp": "2162058216",
      "firstDuration": "2000",
      "secondTimestamp": "2162057216",
      "secondDuration": "2000",
      "timescale": "10000000"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
firstTimestamp 문자열 비디오 유형의 트랙/품질 수준 중 하나에 대해 받은 타임스탬프입니다.
firstDuration 문자열 첫 번째 타임스탬프가 있는 데이터 청크의 기간입니다.
secondTimestamp 문자열 비디오 유형의 다른 트랙/품질 수준 일부에 대해 받은 타임스탬프입니다.
secondDuration 문자열 두 번째 타임스탬프가 있는 데이터 청크의 기간입니다.
timescale 문자열 타임스탬프 및 지속 기간의 시간 간격입니다.

LiveEventIngestHeartbeat

LiveEventIngestHeartbeat 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
    "subject": "liveEvent/mle1",
    "eventType": "Microsoft.Media.LiveEventIngestHeartbeat",
    "eventTime": "2021-05-14T23:50:00.324",
    "id": "7f450938-491f-41e1-b06f-c6cd3965d786",
    "data": {
      "trackType":"video",
      "trackName":"video",
      "bitrate":2500000,
      "incomingBitrate":2462597,
      "lastTimestamp":"106999",
      "timescale":"1000",
      "overlapCount":0,
      "discontinuityCount":0,
      "nonincreasingCount":0,
      "unexpectedBitrate":false,
      "state":"Running",
      "healthy":true,
      "lastFragmentArrivalTime":"2021-05-14T23:50:00.324",
      "ingestDriftValue":"0",
      "transcriptionState":"",
      "transcriptionLanguage":""
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
trackType 문자열 트랙 유형입니다(예: Audio/Video).
trackName 문자열 트랙의 이름입니다(인코더에서 제공하거나, RTMP의 경우 서버에서 TrackType_Bitrate 형식으로 생성함).
bitrate 정수 트랙의 비트 전송률입니다.
incomingBitrate 정수 인코더에서 들어오는 데이터 청크에 기반하여 계산된 비트 전송률입니다.
lastTimestamp 문자열 마지막 20초 동안 한 트랙에 대해 받은 최신 타임스탬프입니다.
timescale 문자열 타임스탬프가 표시되는 시간 간격입니다.
overlapCount 정수 마지막 20초 동안 타임스탬프가 겹쳐진 데이터 청크의 수입니다.
discontinuityCount 정수 마지막 20초 동안 관찰된 불연속성의 수입니다.
nonIncreasingCount 정수 마지막 20초 동안 받은 과거의 타임스탬프가 있는 데이터 청크의 수입니다.
unexpectedBitrate bool 마지막 20초 동안 허용 한도를 초과하여 예상 및 실제 비트 전송률이 다릅니다. incomingBitrate >= 2* bitrate OR incomingBitrate <= bitrate/2 OR IncomingBitrate = 0인 경우에만 true입니다.
state 문자열 라이브 이벤트의 상태입니다.
healthy bool 횟수 및 플래그에 기반하여 수집이 정상인지 여부를 나타냅니다. overlapCount = 0 && discontinuityCount = 0 && nonIncreasingCount = 0 && unexpectedBitrate = false이면 healthy가 true입니다.
lastFragmentArrivalTime 문자열 조각이 수집 엔드포인트에 도착한 UTC의 마지막 타임스탬프입니다. 예제 날짜 형식은 “2020-11-11 12:12:12:888999”입니다.
ingestDriftValue 문자열 지난 1분 동안 들어오는 오디오 또는 비디오 데이터의 지연 속도(분당 초)를 나타냅니다. 데이터가 지난 1분 동안 예상보다 느리게 라이브 이벤트에 도착하면 값은 0보다 큽니다. 데이터가 지연 없이 도착하면 0이고, 오디오 또는 비디오 데이터를 받지 못하면 “n/a”입니다. 예를 들어 기여 인코더가 라이브 콘텐츠를 전송하는 경우 처리 이슈 또는 네트워크 대기 시간으로 인해 속도가 느려지면 1분 동안 총 58초의 오디오 또는 비디오만 전달할 수 있습니다. 이 문제는 분당 2초 드리프트로 보고됩니다. 인코더가 따라잡아 분당 60초 이상의 데이터를 모두 전송할 수 있게 되면 이 값은 0으로 보고됩니다. 인코더와의 연결이 끊겼거나 불연속성이 있는 경우에도 데이터 중단은 고려되지 않고 타임스탬프가 지연된 데이터만 고려되므로 이 값은 0으로 표시될 수 있습니다.
transcriptionState 문자열 이 값은 라이브 대화 내용 기록을 켠 경우 오디오 트랙 하트비트에 대해 “On”입니다. 그러지 않으면 빈 문자열이 표시됩니다. 이 상태는 라이브 대화 내용 기록의 “오디오” 트랙 형식에만 적용됩니다. 다른 모든 트랙에는 빈 값이 있습니다.
transcriptionLanguage 문자열 대화 내용 기록 언어의 언어 코드(BCP-47 형식)입니다. 예를 들어 “de-de”는 독일어(독일)를 나타냅니다. 비디오 트랙 하트비트이거나 라이브 대화 내용 기록이 꺼져 있는 경우 이 값은 비어 있습니다.

LiveEventChannelArchiveHeartbeat

다음 예제에서는 LiveEventChannelArchiveHeartbeatEvent 이벤트의 스키마를 보여 줍니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
    "subject": "liveEvent/mle1",
    "eventType": "Microsoft.Media.LiveEventChannelArchiveHeartbeat",
    "eventTime": "2021-05-14T23:50:00.324",
    "id": "7f450938-491f-41e1-b06f-c6cd3965d786",
    "data": {
      "channelLatencyMs": "10",
      "latencyResultCode": "S_OK"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
channelLatencyMs 문자열 플레이어가 다운로드할 수 있도록 수집된 비디오가 HLS/DASH 매니페스트에 게시되기 전에 라이브 이벤트 파이프라인에서 소요하는 시간(밀리초)입니다.
latencyResultCode 문자열 channelLatencyMs 계산의 결과 코드입니다. S_OK는 라이브 이벤트 수집이 아무 문제 없이 수신되었음을 나타냅니다. 다른 결과 코드는 channelLatencyMs에 빈 값이 있는 상황을 나타냅니다. MPE_KEY_FRAME_INTERVAL_TOO_LARGE 오류 코드는 수집된 비디오 원본의 GOP(키 프레임 거리)가 커서 채널 대기 시간에 부정적인 영향을 줄 수 있음을 나타냅니다. MPE_INGEST_DISCONTINUITY 오류 코드는 원본 스트림에서 불연속성이 감지되었으며 채널에 긴 대기 시간이 추가될 수 있음을 나타냅니다.

LiveEventTrackDiscontinuityDetected

LiveEventTrackDiscontinuityDetected 이벤트의 스키마를 보여 주는 예제는 다음과 같습니다.

[
  {
    "topic": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Media/mediaservices/<account-name>",
    "subject": "liveEvent/mle1",
    "eventType": "Microsoft.Media.LiveEventTrackDiscontinuityDetected",
    "eventTime": "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"
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

데이터 개체의 속성은 다음과 같습니다.

속성 형식 Description
trackType 문자열 트랙 유형입니다(예: Audio/Video).
trackName 문자열 트랙의 이름입니다(인코더에서 제공하거나, RTMP의 경우 서버에서 TrackType_Bitrate 형식으로 생성함).
bitrate 정수 트랙의 비트 전송률입니다.
previousTimestamp 문자열 이전 조각의 타임스탬프입니다.
newTimestamp 문자열 현재 조각의 타임스탬프입니다.
discontinuityGap 문자열 위의 두 타임스탬프 사이의 간격입니다.
timescale 문자열 타임스탬프와 불연속성 간격이 모두 표시되는 시간 간격입니다.

일반 이벤트 속성

이벤트에는 다음과 같은 최상위 데이터가 있습니다.

속성 형식 Description
topic 문자열 이벤트 그리드 토픽입니다. 이 속성에는 Media Services 계정에 대한 리소스 ID가 있습니다.
subject 문자열 Media Services 계정에 속한 Media Services 채널에 대한 리소스 경로입니다. topic과 subject를 연결하면 작업에 대한 리소스 ID가 제공됩니다.
eventType 문자열 이 이벤트 원본에 대해 등록된 이벤트 유형 중 하나입니다. 예: "Microsoft.Media.JobStateChange".
eventTime 문자열 공급자의 UTC 시간을 기준으로 이벤트가 생성되는 시간입니다.
id 문자열 이벤트에 대한 고유 식별자입니다.
data object Media Services 이벤트 데이터입니다.
dataVersion 문자열 데이터 개체의 스키마 버전입니다. 게시자가 스키마 버전을 정의합니다.
metadataVersion 문자열 이벤트 메타데이터의 스키마 버전입니다. Event Grid는 최상위 속성의 스키마를 정의합니다. Event Grid는 이 값을 제공합니다.

참고 항목