那里有很多帖子,展示了如何获取MPMediaItem
e的ESTIMATED文件大小。这种使用AVAssetExportSession
的方法所提供的文件大小实际上与实际大小不符,例如3M的文件显示为10M。由于无法直接访问ipod-library://
计划的URL(至少我不知道),因此我认为我不得不间接获取文件大小。
我猜这个大小不对,因为我在导出时将预设设置为M4A,这在导出时可能会导致一些转码,但是如果我将预设设置为Passthrough,即使设置了timeRange
,估计的大小的出口商将永远给我零。
如何获取MPMediaItem的精确文件大小(以字节为单位)?
答案 0 :(得分:1)
这甚至适用于没有资产URL的项目,即云项目。
extension MPMediaItem{
// Value is in Bytes
var fileSize: Int{
get{
if let size = self.value(forProperty: "fileSize") as? Int{
return size
}
return 0
}
}
var fileSizeString: String{
let formatter = Foundation.NumberFormatter()
formatter.maximumFractionDigits = 2
//Byte to MB conversion using 1024*1024 = 1,048,567
return (formatter.string(from: NSNumber(value: Float(self.fileSize)/1048567.0)) ?? "0") + " MB"
}
}
答案 1 :(得分:0)
由于无法直接访问
ipod-library://
计划的URL(至少我不知道)
只要资产实际上是库中的文件(即它不是云中的文件),其资产URL就是其assetURL
。这与指向存储中文件的指针非常接近。记住,您是沙盒用户(系统不会让您直接在存储用户歌曲的目录中弄乱)。