ストリームから送信されているメタデータの種類がわかっている場合(VLCなどのメディアプレーヤーを使用していない場合)、まずメタデータを取得するための通知を時間間隔で登録する必要があります。それらを処理する方法。
だけ
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(MetadataUpdate:)
name:MPMoviePlayerTimedMetadataUpdatedNotification
object:nil];
MPMoviePlayerController割り当てた後、通知から開始。 streamAudioplayerは、値を格納するためにあなたのMPMoviePlayerControllerとmetadataInfo NSStringのであるMetadataUpdate方法
- (void)MetadataUpdate:(NSNotification*)notification
{
if ([streamAudioPlayer timedMetadata]!=nil && [[streamAudioPlayer timedMetadata] count] > 0) {
MPTimedMetadata *firstMeta = [[streamAudioPlayer timedMetadata] objectAtIndex:0];
metadataInfo = firstMeta.value;
}
}
に続いて
。上記は、現在再生中の曲のアーティスト情報とトラック情報を取得します。
これは、shoutcastストリームまたはicecastストリームによって送信される標準メタデータの場合です。 (私はそれらを試していないので他人のために言うことはできません)
各ストリームは異なるメタデータを処理し、送信することがあります。 [streamAudioPlayer timedMetadata]以来 あなたは
NSArray *metaArray = [streamAudioPlayer timedMetadata];
NSLog (@"%i", [metaArray count]); //to see how many elements in the array
MPTimedMetadata *firstMeta = [[streamAudioPlayer timedMetadata] objectAtIndex:0];
キー、キースペース、タイムスタンプ、値プロパティを使用してメタデータの内容を表示するには、その後、デバッグコンソールを使用することができNSArrayのです。
上記はすべて単なる例です。メタデータを扱う方法は1つではありません。 詳細な情報は、上のコード... MPTimedMetadataクラス参照のために、そこから
https://developer.apple.com/library/ios/#DOCUMENTATION/MediaPlayer/Reference/MPTimedMetadata_Class/Reference/Reference.html
で見つけることができます!
素晴らしい!ありがとう! – Genevios
こんにちは... 4年後、まだ、私は尋ねるかもしれません... 'timedMetadata'メソッドが複数の' MPTimedMetadata'インスタンスを持つ配列を返す場合はありますか?今私はそれらのすべてを取得するために 'for-in'ループを使用していますが、本当に配列の最初の要素を使うのではなく、本当に必要かどうかは疑問です。ありがとう! –
技術的に言えば...可能です。これには、カスタムコンパイルされたIcecastバージョンまたはこれを変更する新しいShoucast/Icecastリリースが必要です。特殊な場合には、ステーションのウェブアドレスを*おそらく*持つ2番目のオブジェクトを返すかもしれません。私の経験では、標準のShoutcast/Icecastサーバーが最初の(インデックス0)オブジェクトにメタデータを持つことを100%確信しています。 – Pericles