シャウトキャストのメタデータをお探しの場合...
FFmpeg 2.0 以降、これらのサポートが組み込まれています。関連する AVOptions を公開するhttpプロトコルを次に示します。
実装
icy AVOption
を呼び出すときは、 を 1 に設定しavformat_open_input
ます。これによりIcy-MetaData
、ストリームを開くときに HTTP ヘッダーが設定されます。
AVDictionary *options = NULL;
av_dict_set(&options, "icy", "1", 0);
AVFormatContext* container = avformat_alloc_context();
int err = avformat_open_input(&container, url, NULL, &options);
icy_metadata_packet
次に、コンテキストでまたはをポーリングしてicy_metadata_headers AVOption
、現在のメタデータを取得します。
char* metadata = NULL;
av_opt_get(container, "icy_metadata_packet", AV_OPT_SEARCH_CHILDREN, (uint8_t**) &metadata);
printf("icy_metadata_packet: %s\n", metadata);
av_free(metadata);
metadata = NULL;
av_opt_get(container, "icy_metadata_headers", AV_OPT_SEARCH_CHILDREN, (uint8_t**) &metadata);
printf("\nicy_metadata_headers:\n%s\n", metadata);
av_free(metadata);
次に、おそらく Android アプリの Java レイヤーまでのメタデータ情報を取得する必要があります。私は NDK に詳しくないので、自分でこれを理解する必要があります ;)
出力例
icy_metadata_packet: StreamTitle='Zelda Reorchestrated - Twilight Symphony - Gerudo Desert';
icy_metadata_headers:
icy-br: 192
icy-description: Radio Hyrule
icy-genre: Remix
icy-name: Radio Hyrule
icy-pub: 1
icy-url: http://radiohyrule.com/
詳しくは
パッチが提案されたメーリング リストで詳細を確認してください。
オプションはAVClass
、HTTP および HTTPS コンテキスト ( code ) に対して定義されます。