

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Kinesis 视频流中嵌入的元数据
<a name="how-meta-consume"></a>

要使用 Kinesis 视频流中的元数据，请使用以下实现：`MkvTagProcessor`

```
public interface MkvTagProcessor {
        default void process(MkvTag mkvTag, Optional<FragmentMetadata> currentFragmentMetadata) {
            throw new NotImplementedException("Default FragmentMetadataVisitor.MkvTagProcessor");
        }
        default void clear() {
            throw new NotImplementedException("Default FragmentMetadataVisitor.MkvTagProcessor");
	    }
    }
}
```

在 [使用解析器库观看摄像机的输出](parser-library.md)的 [FragmentMetadataVisitor](parser-library-write.md#parser-library-write-FMV) 类中可找到此接口。

`FragmentMetadataVisitor` 类包含 `MkvTagProcessor` 的实现：

```
public static final class BasicMkvTagProcessor implements FragmentMetadataVisitor.MkvTagProcessor {
    @Getter
    private List<MkvTag> tags = new ArrayList<>();

    @Override
    public void process(MkvTag mkvTag, Optional<FragmentMetadata> currentFragmentMetadata) {
        tags.add(mkvTag);
    }
    
    @Override
    public void clear() {
        tags.clear();
	}
}
```

`KinesisVideoRendererExample` 类包含演示如何使用 `BasicMkvTagProcessor` 的示例。以下示例将 `BasicMkvTagProcessor` 添加到应用程序的 `MediaProcessingArguments` 中：

```
if (renderFragmentMetadata) {
    getMediaProcessingArguments = KinesisVideoRendererExample.GetMediaProcessingArguments.create(
        Optional.of(new FragmentMetadataVisitor.BasicMkvTagProcessor()));
```

在片段元数据送达时调用 `BasicMkvTagProcessor.process` 方法。您可以使用 `GetTags` 检索累积的元数据。要检索单个元数据项，请先调用`clear`以清除收集的元数据，然后再次检索元数据项目。