从流中获取元数据的问题?

时间:2013-11-03 03:52:20

标签: ios objective-c metadata avfoundation avplayer

我正在尝试获取我的网址的艺术家名称/曲目名称之类的元数据,但是我没有看到,要获得它,我不太确定我缺少什么,音频加载和打得很好:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.mainTitle.text = _stationName;

    NSString *u = @"http://pub1.sky.fm:80/sky_solopiano";

    NSURL *url = [NSURL URLWithString:u];

    radiosound = [[AVPlayer alloc] initWithURL:url];

    [radiosound play];

}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    AVPlayerItem * item = (AVPlayerItem*)object;
    NSLog(@"%@", item.timedMetadata);


}

更新 根据此问题中某位成员的建议,我尝试实施

AVAsset *info = radiosound.currentItem.asset;

    NSLog(@"%@",info);

而不是

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
        AVPlayerItem * item = (AVPlayerItem*)object;
        NSLog(@"%@", item.timedMetadata);


    }

但是这只返回我已经知道并且不刷新的数据,它当前返回:

<AVURLAsset: 0x109c7ccf0, URL = http://pub1.sky.fm:80/sky_solopiano>

1 个答案:

答案 0 :(得分:0)

你已经覆盖/实现了NSObject上的观察者钩子,但是你没有在任何地方设置AVPlayer的属性观察,所以这个方法永远不会触发。

我认为你真正感兴趣的是:

radiosound.currentItem.asset

。 。 。您可以在分配/初始化radiosound实例后立即使用它。

此课程的可用属性为here

获取给定班级的文档:

  • Google的类名 - 它几乎总会返回结果。
  • 按住Option键并单击Xco​​de中的类
  • 使用文档浏览器,例如Dash

键值观察(KVO)

在这种情况下你可能不需要KVO,但是你应该检查它。有关更多信息,请参阅Apple文档以及大量教程。也许是this one