

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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` を使って取得できます。1 つのメタデータ項目を取得するには、まず `clear`を呼び出して収集されたメタデータをクリアしてから、メタデータ項目を再度取得します。