2016-12-09 12 views
-1

Я работаю с доступом к музыке библиотеки Itunes. Я сохранил выбранную песню в каталоге Document. Размер песни составляет 13 МБ, и мне нужно уменьшить размер песни, чтобы я мог легко отправить ее на сервер. Как мне это сделать? Вот мой общий код:Как уменьшить размер музыки itunes в swift?

@IBAction func AddSongs(sender: UIButton) 
{ 
    displayMediaPickerAndPlayItem() 
     }func displayMediaPickerAndPlayItem() 
{mediaPicker = MPMediaPickerController(mediaTypes: .AnyAudio) 

    if let picker = mediaPicker{ 

     print("Successfully instantiated a media picker") 
     picker.delegate = self 
     view.addSubview(picker.view) 
     presentViewController(picker, animated: true, completion: nil) 

    } else { 
     print("Could not instantiate a media picker") 
    } 

} 

MPMediaPickerController, didPickMediaItems mediaItemCollection Функция

let item: MPMediaItem = mediaItemCollection.items[0] 

    print(mediaItemCollection) 
       print("mediaItemCollection = \(mediaItemCollection)") 

    let url = item.valueForProperty(MPMediaItemPropertyAssetURL) as! NSURL 
    FinalAudioName = item.valueForProperty(MPMediaItemPropertyTitle) as! NSString as String 

    // let songAsset = AVURLAsset.init(URL: url, options: nil) 
    // print("songAsset = \(songAsset)") 
    export(url, completionHandler: { _, _ in }) 





func export(assetURL: NSURL, completionHandler: (NSURL?, ErrorType?) ->()) { 
let asset = AVURLAsset(URL: assetURL) 
guard let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetAppleM4A) else { 
    completionHandler(nil, ExportError.unableToCreateExporter) 
    return 
} 

let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory()) 
    .URLByAppendingPathComponent(NSUUID().UUIDString)! 
    .URLByAppendingPathExtension("m4a") 

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

exporter.exportAsynchronouslyWithCompletionHandler { 
    if exporter.status == .Completed { 
     completionHandler(fileURL, nil) 
    } else { 
     completionHandler(nil, exporter.error) 
    } 
}} 
+0

проверить мой обновленный question..I прилагается код –

ответ

0

Если вы хотите сжать смотри для совместного использования, вы должны смотреть в AVAssetExportSession. Изменить AVAssetExportPresetAppleM4A на AVAssetExportPresetLowQuality. Вы можете сделать что-то вроде этого:

- (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL 
            outputURL:(NSURL*)outputURL 
            handler:(void (^)(AVAssetExportSession*))handler 
{ 
    [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil]; 
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil]; 
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetLowQuality]; 
    exportSession.outputURL = outputURL; 
    exportSession.outputFileType = AVFileTypeQuickTimeMovie; 
    [exportSession exportAsynchronouslyWithCompletionHandler:^(void) 
    { 
     handler(exportSession); 
     [exportSession release]; 
    }]; 
} 

Вы также можете установить AVFormatIDKey к kAudioFormatMPEG4AAC для recordSettings

+0

Для музыки тоже, я должен установить рекордную ?? –

+0

Я изменил свой ответ. – Munahil

+0

Хорошо ... Я попробую это. –