我似乎无法识别任何模式,但AVPlayer无法获取某些(但不是所有)mp3文件的曲目标题元数据,通常是超过一小时的文件长。在所有这些实例中,可以准确地检索其他元数据,如艺术品,艺术家或专辑标题。
当通过iTunes同步时,股票音乐应用程序没有任何问题 - 然后尝试通过 MPMediaItem.title 获取标题正确返回每种情况下的标题。
下面的代码段。我观察了带有断点的代码,并且问题项不会在AVMetadataCommonKeyTitle的第二个else-if语句中执行任何操作,但所有其他语句都按预期工作。同样,此代码适用于99.9%的项目。
链接到一些非工作文件: https://soundcloud.com/humboldthain/blind-observatory-3-years-of-humboldthain-closing-set-4h
https://soundcloud.com/bananamilk/mary-yuzovskaya-femalepressure-tresor-berlin-january-2017
//Declare blank/default vars
var artist: String = ""
var album: String = ""
var track: String = ""
var artwork: UIImage! = UIImage(named: "defaultArtwork")
//Metadata loop
for i in asset!.commonMetadata {
if i.commonKey == AVMetadataCommonKeyArtist {
artist = i.value as! String
}
else if i.commonKey == AVMetadataCommonKeyTitle {
track = i.value as! String
}
else if i.commonKey == AVMetadataCommonKeyAlbumName {
album = i.value as! String
}
else if i.commonKey == AVMetadataCommonKeyArtwork {
artwork = UIImage(data: i.value as! Data)
}
}