2017-09-19 9 views
0

画像と動画をサーバーにアップロードしようとしています。それはうまく動作します。私が直面している問題は、キャプチャされた画像またはiPhoneの画像が大きすぎるためにサーバーにアップロードする時間がかかることです。どのように私はビデオデータのサイズを減らすことができますか? AssetInfoからPHAsset video compression 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-以下にそれを渡しますcorrupt-video-file –

+0

ありがとう、@ KingofMasses、どのように私はフェセットオブジェクトで使用できますか? –

+0

https://stackoverflow.com/questions/5687341/iphoneprogrammatically-compressing-recorded-video-to-share/5853354#5853354これを見ると、AVAssetExportSessionが役立ちます。 –

答えて

0

、資産URLを引くと方法

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

これは役に立ちましたか? –