Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
本文提供媒体服务事件的架构和属性。
与作业相关的事件类型
媒体服务发出下面所述的 与作业相关的 事件类型。 与作业相关的事件有两个类别:“监视作业状态更改”和“监视作业输出状态更改”。
可以通过订阅 JobStateChange 事件来注册所有事件。 或者,只能订阅特定事件(例如,JobErrored、JobFinished 和 JobCanceled 等最终状态)。
监视作业状态更改
| 事件类型 | 说明 |
|---|---|
| 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 每个作业输出的聚合结果 - 完成所有这些结果时。 而当每个任务完成时,作业输出事件会触发。 例如,如果有编码输出,后跟视频分析输出,则会在最终 JobFinished 事件触发与聚合数据一起触发作业输出事件之前,获取两个事件触发。
| 事件类型 | 说明 |
|---|---|
| Microsoft。Media.JobOutputStateChange | 获取所有作业输出状态更改的事件。 |
| Microsoft。Media.JobOutputScheduled | 当作业输出转换为计划状态时获取事件。 |
| Microsoft。Media.JobOutputProcessing | 当作业输出转换为处理状态时获取事件。 |
| Microsoft。Media.JobOutputCanceling | 当作业输出转换为取消状态时获取事件。 |
| Microsoft。Media.JobOutputFinished | 当作业输出转换为完成状态时获取事件。 |
| Microsoft。Media.JobOutputCanceled | 当作业输出转换为已取消状态时获取事件。 |
| Microsoft。Media.JobOutputErrored | 当作业输出转换为错误状态时,获取事件。 |
请参阅以下 架构示例 。
监视作业输出进度
| 事件类型 | 说明 |
|---|---|
| Microsoft。Media.JobOutputProgress | 此事件反映作业处理进度,从 0% 到 100%。 如果进度值增加 5% 或更大,或者自上次事件(检测信号)以来已超过 30 秒,服务将尝试发送事件。 进度值不保证从 0%开始,或达到 100%,也不保证在一段时间内以固定速率增加。 不应使用此事件来确定处理已完成 - 应改用状态更改事件。 |
请参阅以下 架构示例 。
实时事件类型
媒体服务还会发出下面所述的 实时 事件类型。 实时事件有两个类别:流级事件和跟踪级别事件。
流级事件
每个流或连接都引发流级事件。 每个事件都有一个 StreamId 用于标识连接或流的参数。 每个流或连接都有一个或多个不同类型的轨迹。 例如,来自编码器的一个连接可能有一个音频轨道和四个视频轨道。 流事件类型包括:
| 事件类型 | 说明 |
|---|---|
| Microsoft。Media.LiveEventConnectionRejected | 编码器的连接尝试被拒绝。 |
| Microsoft。Media.LiveEventEncoderConnected | 编码器与实时事件建立连接。 |
| Microsoft。Media.LiveEventEncoderDisconnected | 编码器断开连接。 |
请参阅以下 架构示例 。
跟踪级别事件
跟踪级别事件按跟踪引发。
注释
连接实时编码器后,将引发所有曲目级别事件。
跟踪级别事件类型包括:
| 事件类型 | 说明 |
|---|---|
| Microsoft。Media.LiveEventIncomingDataChunkDropped | 媒体服务器会删除数据区块,因为它太晚或时间戳重叠(新数据区块的时间戳小于上一数据区块的结束时间)。 |
| Microsoft。Media.LiveEventIncomingStreamReceived | 媒体服务器接收流或连接中每个轨迹的第一个数据区块。 |
| Microsoft。Media.LiveEventIncomingStreamsOutOfSync | 媒体服务器检测到音频和视频流不同步。用作警告,因为用户体验可能不会受到影响。 |
| Microsoft。Media.LiveEventIncomingVideoStreamsOutOfSync | 媒体服务器检测到来自外部编码器的两个视频流中的任何一个都不同步。用作警告,因为用户体验可能不会受到影响。 |
| Microsoft。Media.LiveEventIngestHeartbeat | 运行实时事件时,每个曲目每 20 秒发布一次。 提供引入运行状况摘要。 最初连接编码器后,检测信号事件会继续每 20 秒发出一次,无论编码器是否仍在连接。 |
| Microsoft。Media.LiveEventTrackDiscontinuityDetected | 媒体服务器检测传入轨道中的不连续性。 |
请参阅以下 架构示例 。
事件架构示例
JobStateChange
以下示例显示了 JobStateChange 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
previousState |
字符串 | 事件之前作业的状态。 |
state |
字符串 | 在此事件中通知作业的新状态。 例如,“Scheduled: The job is ready to start”或“Finished: The job is finished”。 |
作业状态可以是以下值之一: 已排队、 计划、 处理、 已完成、 错误、 已取消、 取消
注释
排队 只会出现在 previousState 属性中,但不出现在 状态 属性中。
JobScheduled、JobProcessing、JobCanceling
对于每个非最终的作业状态更改(例如 JobScheduled、JobProcessing、JobCanceling),示例架构如下所示:
[{
"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
对于每个最终的作业状态更改(例如 JobFinished、JobCanceled、JobErrored),示例架构如下所示:
[{
"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"
}]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
streamId |
字符串 | 流或连接的标识符。 编码器或客户负责在引入 URL 中添加此 ID。 |
ingestUrl |
字符串 | 引入直播活动提供的 URL。 |
encoderIp |
字符串 | 编码器的 IP。 |
encoderPort |
字符串 | 从此流传入的编码器的端口。 |
resultCode |
字符串 | 连接被拒绝的原因。 下表中列出了结果代码。 |
可以在 实时事件错误代码中找到错误代码。
LiveEventEncoderConnected
以下示例演示 LiveEventEncoderConnected 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
streamId |
字符串 | 流或连接的标识符。 编码器或客户负责在引入 URL 中提供此 ID。 |
ingestUrl |
字符串 | 引入直播活动提供的 URL。 |
encoderIp |
字符串 | 编码器的 IP。 |
encoderPort |
字符串 | 从此流传入的编码器的端口。 |
LiveEventEncoderDisconnected
以下示例演示 LiveEventEncoderDisconnected 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
streamId |
字符串 | 流或连接的标识符。 编码器或客户负责在引入 URL 中添加此 ID。 |
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 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
trackType |
字符串 | 轨道的类型(音频/视频)。 |
trackName |
字符串 | 曲目的名称。 |
bitrate |
整数 | 轨道的比特率。 |
timestamp |
字符串 | 删除的数据区块的时间戳。 |
timescale |
字符串 | 时间戳的时间刻度。 |
resultCode |
字符串 | 数据区块删除的原因。 FragmentDrop_OverlapTimestamp 或 FragmentDrop_NonIncreasingTimestamp。 |
LiveEventIncomingStreamReceived
以下示例演示 LiveEventIncomingStreamReceived 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
trackType |
字符串 | 轨道的类型(音频/视频)。 |
trackName |
字符串 | 轨道的名称(由编码器提供,或者,如果 RTMP,服务器以 TrackType_Bitrate 格式生成)。 |
bitrate |
整数 | 轨道的比特率。 |
ingestUrl |
字符串 | 引入直播活动提供的 URL。 |
encoderIp |
字符串 | 编码器的 IP。 |
encoderPort |
字符串 | 从此流传入的编码器的端口。 |
timestamp |
字符串 | 收到的数据区块的第一个时间戳。 |
timescale |
字符串 | 表示时间戳的时间刻度。 |
LiveEventIncomingStreamsOutOfSync
以下示例演示 LiveEventIncomingStreamsOutOfSync 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
minLastTimestamp |
字符串 | 所有曲目(音频或视频)中最后一个时间戳的最小值。 |
typeOfTrackWithMinLastTimestamp |
字符串 | 具有最后一个时间戳的曲目(音频或视频)的类型。 |
maxLastTimestamp |
字符串 | 所有曲目(音频或视频)中所有时间戳的最大值。 |
typeOfTrackWithMaxLastTimestamp |
字符串 | 具有最后一个时间戳的曲目(音频或视频)的类型。 |
timescaleOfMinLastTimestamp |
字符串 | 获取表示“MinLastTimestamp”的时间刻度。 |
timescaleOfMaxLastTimestamp |
字符串 | 获取表示“MaxLastTimestamp”的时间刻度。 |
LiveEventIncomingVideoStreamsOutOfSync
以下示例演示 LiveEventIncomingVideoStreamsOutOfSync 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
firstTimestamp |
字符串 | 为视频类型的一个曲目/质量级别收到的时间戳。 |
firstDuration |
字符串 | 具有第一个时间戳的数据区块的持续时间。 |
secondTimestamp |
字符串 | 为类型视频的一些其他曲目/质量级别收到的时间戳。 |
secondDuration |
字符串 | 具有第二个时间戳的数据区块的持续时间。 |
timescale |
字符串 | 时间戳和持续时间的时间刻度。 |
LiveEventIngestHeartbeat
以下示例演示 LiveEventIngestHeartbeat 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
trackType |
字符串 | 轨道的类型(音频/视频)。 |
trackName |
字符串 | 轨道的名称(由编码器提供,或者,如果 RTMP,服务器以 TrackType_Bitrate 格式生成)。 |
bitrate |
整数 | 轨道的比特率。 |
incomingBitrate |
整数 | 基于来自编码器的数据区块计算比特率。 |
lastTimestamp |
字符串 | 在过去 20 秒内收到跟踪的最新时间戳。 |
timescale |
字符串 | 表示时间戳的时间刻度。 |
overlapCount |
整数 | 过去 20 秒内数据区块的时间戳重叠。 |
discontinuityCount |
整数 | 过去 20 秒观察到的不连续次数。 |
nonIncreasingCount |
整数 | 过去 20 秒收到时间戳的数据区块数。 |
unexpectedBitrate |
布尔 | 如果预期比特率和实际比特率在过去 20 秒内超出允许的限制, 如果仅当 incomingBitrate = 2* 比特率或 incomingBitrate ><= 比特率 /2 OR IncomingBitrate = 0 时,则为 true。 |
state |
字符串 | 直播活动的状态。 |
healthy |
布尔 | 根据计数和标志指示引入是否正常。 如果 overlapCount = 0 && discontinuityCount = 0 && nonIncreasingCount = 0 && unexpectedBitrate = false,则正常为 true。 |
lastFragmentArrivalTime |
字符串 | 片段到达引入终结点的最后一个 UTC 时间戳。 示例日期格式为“2020-11-11 12:12:12:888999” |
ingestDriftValue |
字符串 | 指示最后一分钟传入音频或视频数据的延迟速度(以秒为单位)。 如果数据到达实时事件的速度低于预期,则该值大于零;如果数据到达时没有延迟,则为零;如果未收到任何音频或视频数据,则为“n/a”。 例如,如果你有一个参与编码器在实时内容中发送,并且由于处理问题或网络延迟而变慢,则可能只能在一分钟内提供总共 58 秒的音频或视频。 这将被报告为每分钟偏移 2 秒。 如果编码器每分钟能够赶上并发送所有 60 秒或更多数据,则会看到此值报告为 0。 如果编码器断开连接或中断,此值可能仍显示为 0,因为它不考虑数据中断 - 仅延迟时间戳的数据。 |
transcriptionState |
字符串 | 如果启用了实时听录,则此值为“打开”,否则会看到空字符串。 此状态仅适用于tracktypeaudio实时听录。 所有其他曲目将具有空值。 |
transcriptionLanguage |
字符串 | 听录语言的语言代码(采用 BCP-47 格式)。 例如,“de-de”表示德语(德国)。 视频轨道检测信号或关闭实时听录时,该值为空。 |
LiveEventTrackDiscontinuityDetected
以下示例显示了 LiveEventTrackDiscontinuityDetected 事件的架构:
[
{
"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"
}
]
数据对象具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
trackType |
字符串 | 轨道的类型(音频/视频)。 |
trackName |
字符串 | 轨道的名称(由编码器提供,或者,如果 RTMP,服务器以 TrackType_Bitrate 格式生成)。 |
bitrate |
整数 | 轨道的比特率。 |
previousTimestamp |
字符串 | 上一片段的时间戳。 |
newTimestamp |
字符串 | 当前片段的时间戳。 |
discontinuityGap |
字符串 | 上述两个时间戳之间的差距。 |
timescale |
字符串 | 时间戳和不连续差距都表示的时间刻度。 |
自定义事件属性
事件具有以下顶层数据:
| 财产 | 类型 | 说明 |
|---|---|---|
source |
字符串 | 事件网格主题。 此属性具有媒体服务帐户的资源 ID。 |
subject |
字符串 | 媒体服务帐户下的媒体服务通道的资源路径。 连接主题和主题可提供作业的资源 ID。 |
type |
字符串 | 该事件源的其中一种注册事件类型。 例如,“Microsoft。Media.JobStateChange”。 |
time |
字符串 | 事件生成的时间是基于提供者的 UTC 时间。 |
id |
字符串 | 事件的唯一标识符。 |
data |
对象 | 媒体服务事件数据。 |
specversion |
字符串 | CloudEvents 架构规范版本。 |
后续步骤
请参阅 注册作业状态更改事件
另见
- 包含媒体服务事件的 Event Grid .NET SDK
- 媒体服务事件的定义
- 实时事件错误代码