2017-09-19 3 views
0

Ich versuche, Bilder und Videos auf den Server hochzuladen. es funktioniert gut. Das Problem, dem ich gegenüberstehe, ist, dass das aufgenommene oder vom iPhone aufgenommene Video zu viel Größe hat und dass es Zeit braucht, um es auf den Server hochzuladen. Wie kann ich die Größe von Videodaten reduzieren?PHAsset Videokomprimierung iOS swift

if(asset.mediaType == .video) 
{   
    var dataMOV : Data? 

    manager.requestAVAsset(forVideo: asset, options: option2, resultHandler: {(asset: AVAsset?, audioMix: AVAudioMix?, info: [AnyHashable : Any]?) in 
     let avURLAsset = asset as? AVURLAsset 
     do 
     { 
      let data = try Data(contentsOf: (avURLAsset?.url)!) 
      dataMOV = data 
      print("asset data :%@ ", data) 
     } 
     catch 
     { 

     } 
    }) 
} 
+0

https://stackoverflow.com/questions/29521789/ios-video-compression-swift-ios-8- korrupt-video-datei –

+0

Danke, @KingofMasses, aber wie kann ich es mit phasset-objekt verwenden? –

+0

https://StackOverflow.com/Questions/5687341/IphoneProgrammatically-Compression-recorded-Video-To-Share/5853354#5853354 schauen Sie sich das an, AVAssetExportSession kann helfen. –

Antwort

0

Von asset, die Asset-URL ziehen und es auf unter-Methode übergeben

func compressVideo(inputURL: URL, outputURL: URL, handler:@escaping (_ exportSession: AVAssetExportSession?)-> Void) { 
     let urlAsset = AVURLAsset(url: inputURL, options: nil) 
     guard let exportSession = AVAssetExportSession(asset: urlAsset, presetName: AVAssetExportPresetMediumQuality) else { 
      handler(nil) 

      return 
     } 

     exportSession.outputURL = outputURL 
     exportSession.outputFileType = AVFileTypeQuickTimeMovie 
     exportSession.shouldOptimizeForNetworkUse = true 
     exportSession.exportAsynchronously {() -> Void in 
      handler(exportSession) 
     } 
    } 
+0

ist das geholfen? –