MPMediaItem получает точный размер файла - PullRequest
0 голосов
/ 12 декабря 2018

Существует довольно много сообщений, показывающих, как получить ОЦЕНОЧНЫЙ размер файла MPMediaItem e.Такие методы использования AVAssetExportSession дают размер файла, который действительно отличается от реального размера, как файл 3M отображается как 10M.Поскольку нет прямого доступа к схематическому URL-адресу ipod-library:// (по крайней мере, не так, как я знаю), я думаю, что я застрял с косвенным получением размера файла.

Я предполагаю, что размер отключен, потому что я установил предустановку на M4A при экспорте, что может вызвать некоторое перекодирование при экспорте, но если я установлю предустановку на Passthrough, даже с набором timeRange, оценочныйРазмер экспортера всегда будет давать мне ноль.

Как мне получить Точный размер файла MPMediaItem в байтах?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Это работает даже для элементов, которые не имеют 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"
    }

}
0 голосов
/ 13 декабря 2018

Поскольку нет прямого доступа к схематическому URL-адресу ipod-library:// (по крайней мере, не так, как я знаю)

Пока ресурс фактически является файлом в библиотеке(т. е. это не что-то в облаке), его ресурс URL - это assetURL.Это как можно ближе к указателю на файл в хранилище;помните, что вы оказались в «песочнице» (система не позволит вам возиться непосредственно в каталоге, где хранятся песни пользователя).

...