【发布时间】:2021-01-05 17:59:06
【问题描述】:
我可以从音轨中获取一些信息,但不能从音轨 ID 中获取。有人指点我如何获取曲目ID吗?我正在使用 xcode 12.3。谢谢!
func getM4aAudioDetails(afile: URL) {
let song = Song(context: moc)
let avasset = AVAsset(url: afile as URL) as AVAsset
let metadata = avasset.metadata(forFormat: AVMetadataFormat.iTunesMetadata)
let cmetadata = avasset.commonMetadata
let titleItems = AVMetadataItem.metadataItems(from: metadata, withKey: "©nam", keySpace: AVMetadataKeySpace(rawValue: "itsk"))
if let data = titleItems.first, let title = data.stringValue {
song.title = title
}
let artistItems = AVMetadataItem.metadataItems(from: metadata, withKey: "©ART", keySpace: AVMetadataKeySpace(rawValue: "itsk"))
if let data = artistItems.first, let artist = data.stringValue {
song.artist = artist
}
let albumItems = AVMetadataItem.metadataItems(from: metadata, withKey: "©alb", keySpace: AVMetadataKeySpace(rawValue: "itsk"))
if let data = albumItems.first, let album = data.stringValue {
song.album = album
}
let trackItems = AVMetadataItem.metadataItems(from: metadata, withKey: "trkn", keySpace: AVMetadataKeySpace(rawValue: "itsk"))
if let data = trackItems.first, let trackString = data.stringValue {
song.track = Int64(trackString)!
print("Track: \(song.track)")
}
let artworkItems = AVMetadataItem.metadataItems(from: cmetadata, filteredByIdentifier: .commonIdentifierArtwork)
if let artworkItem = artworkItems.first {
if let imageData = artworkItem.dataValue {
//let image = NSImage(data: imageData)
song.artwork = imageData as Data
//print("image found")
}
}
print("song title: \(song.title)")
print("song artist: \(song.artist)")
print("song name: \(song.album)")
print("song track: \(song.track)")
}
印刷品:(摘录)
-
歌名:失败者
-
歌曲艺术家:贝克
-
歌名:金黄
-
歌曲曲目:0
-
歌名:Jack-Ass
-
歌曲艺术家:贝克
-
歌名:奥德莱
-
歌曲曲目:0
【问题讨论】:
-
你所说的“track ID”是什么意思?
-
表示轨道号..... trkn/itsk
标签: swift audio avfoundation