繁体   English   中英

从流中获取元数据有问题吗?

[英]Issue getting metadata from stream?

我正在尝试获取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>

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

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

radiosound.currentItem.asset

您可以在分配/初始化您的无线电声音实例后立即使用。

此类的可用属性在这里

要获取给定类的文档:

  • Google的班级名称-它几乎总是会返回结果。
  • 按住Option键单击Xco​​de中的类
  • 使用文档浏览器(如Dash)

键值观察(KVO)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM