2012-11-22 50 views

回答

5

下面是答案,在堆有一些部分答案在這裏,所以我提出完整的解決方案:

首先在viewDidLoad中,我們需要添加可觀察到的元數據對象:

[playerItem addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:NULL]; 

現在,我們需要的是的UILabel,爲了顯示元數據的功能,假設的UILabel nowPlaying被創建,我們添加以下代碼:

- (void) observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object 
        change:(NSDictionary*)change context:(void*)context { 

if ([keyPath isEqualToString:@"timedMetadata"]) 
{ 
    playerItem = object; 

    for (AVMetadataItem* metadata in playerItem.timedMetadata) 
    { 
     NSLog(@"\nkey: %@\nkeySpace: %@\ncommonKey: %@\nvalue: %@", [metadata.key description], metadata.keySpace, metadata.commonKey, metadata.stringValue); 
     NSString *edited = [metadata.stringValue stringByReplacingOccurrencesOfString:@"_" withString:@" "]; 
     self.nowPlaying.text = edited; 
    } 
    } 
} 

而且多數民衆贊成它,沒有你應該顯示你的流信息。

+0

我只是試過這種方法,但得到了以下錯誤'屬性'timedMetadata'找不到對象的類型'AVPlayer *''任何建議? – vzm