Pratik Prajapati Ответов: 0

Mpmediaitem to nsdata снижает качество песни


Я конвертирую MPMediaItem в NSData, используя приведенный ниже код, когда я играю песню с помощью NSData в динамиках Bluetooth, песня не издает четкого звука. Похоже, что этот код может снизить качество песни при преобразовании в NSData.

Итак, мой вопрос заключается в том, как я поддерживаю высокое качество песни или любой другой способ получить высокое качество NSData?

Что я уже пробовал:

func export(_ assetURL: URL, completionHandler: @escaping (_ fileURL: URL?, _ error: Error?) -> ()) {
    let asset = AVURLAsset(url: assetURL)
    guard let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetAppleM4A) else {
        completionHandler(nil, ExportError.unableToCreateExporter)
        return
    }

    let fileURL = URL(fileURLWithPath: NSTemporaryDirectory())
        .appendingPathComponent(NSUUID().uuidString)
        .appendingPathExtension("m4a")

    exporter.outputURL = fileURL
    exporter.outputFileType = "com.apple.m4a-audio"

    exporter.exportAsynchronously {
        if exporter.status == .completed {
            completionHandler(fileURL, nil)
        } else {
            completionHandler(nil, exporter.error)
        }
    }


}

func exampleUsage(with mediaItem: MPMediaItem, completionHandler : @escaping (_ songData:NSData?) -> ()) {
    if let assetURL = mediaItem.assetURL {
        export(assetURL) { fileURL, error in
            guard let fileURL = fileURL, error == nil else {
                print("export failed: \(error)")
                completionHandler(nil)
                return
            }

            // use fileURL of temporary file here
            print("Exported File : \(fileURL)")
            if let rawData = NSData(contentsOf: fileURL)
            {
                print("Exported File length : ",rawData.length)
                completionHandler(rawData)
            }
        }
    }
}

0 Ответов