第 12章メタデータ

GStreamer では、2 種類のメタデータが明確に区別されており、どちらの種類もサポートされています。1 つはストリームタグで、技術とは無関係の方法でストリームの内容について記述したものです。たとえば、曲の作者、曲のタイトル、曲が含まれているアルバムなどがこれにあたります。もう 1 つのメタデータはストリーム情報で、ストリームのさまざまなプロパティに関する技術的記述です。たとえば、動画のサイズ、音声のサンプルレート、使用しているコーデックなどがこれにあたります。タグは、GStreamer タグ付け (tagging) システムを使って処理されます。ストリーム情報は GstPad から取得できます。

12.1. メタデータの読み取り

ストリーム情報は、GstPad から読み取るのが最も簡単な方法です。この方法については、すでに項8.3.1 で取り上げたので、ここでは繰り返しません。なお、この操作には、ストリーム情報を取得するすべてのパッドにアクセスする必要があることに注意してください。

タグの読み取りは、GStreamer のバスを介して行われます。バスについては、第7章ですでに説明しました。具体的には、GST_MESSAGE_TAG メッセージをリスンし、これを適切な方法で処理します。

ただし、GST_MESSAGE_TAG メッセージはパイプライン内で複数回発信される場合があることに注意してください。これらのタグをすべてまとめて、ユーザーに対して一貫性のある適切な形で表示する処理は、アプリケーションの側で行う必要があります。一般には、gst_tag_list_merge () を使えば、こうした処理を実現するには十分です。新しい曲をロードした場合、またはインターネットラジオを聴いているときは数分が経過するごとに、キャッシュは必ず空にしてください。また、マージモードとして GST_TAG_MERGE_PREPEND を使用し、新しいタイトル (あとから到着したタイトル) が古いものより優先して表示されるようにします。