我似乎无法在这里识别任何模式,但 AVPlayer 无法获取某些(但不是全部)mp3 文件的曲目标题元数据,通常是超过一个小时的文件。在所有这些情况下,其他元数据(如艺术品、艺术家或专辑名称)都会被准确检索。
当通过 iTunes 同步时,库存音乐应用程序没有任何问题 - 然后尝试通过MPMediaItem.title正确获取标题在每种情况下都会返回标题。
下面的代码片段。我观察了带有断点的代码,并且问题项在 AVMetadataCommonKeyTitle 的第二个 else-if 语句中没有执行任何操作,但所有其他语句都按预期工作。再一次,这段代码完美地适用于 99.9% 的 items。
一些非工作文件的链接: 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)
}
}