2

我正在尝试为我的 URL 获取元数据,例如艺术家姓名/曲目名称,但是我没有看到,要得到它,我不太确定我错过了什么,音频加载并播放得很好:

- (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>
4

1 回答 1

0

您已经覆盖/实现了 NSObject 上的观察者挂钩,但是您没有在任何地方为 AVPlayer 设置属性观察,因此此方法永远不会触发。

我想你真正感兴趣的是:

radiosound.currentItem.asset

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

这个类的可用属性在这里

要获取给定类的文档:

键值观察 (KVO)

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

于 2013-11-03T04:53:15.343 回答