2017-09-19 19 views
0

서버에 이미지 및 비디오를 업로드하려고합니다. 잘 작동합니다. 내가 직면하고있는 문제는 너무 많은 크기를 가진 아이폰에서 캡처 한 비디오 또는 비디오 녹화이며 서버에 업로드하는 데 시간이 걸립니다. 어떻게하면 비디오 데이터의 크기를 줄일 수 있습니까?PHAsset 비디오 압축 iOS swift

AssetInfo에서
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,하지만 어떻게 그것을 Phase 객체와 함께 사용할 수 있습니까? –

+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

이 도움이 되셨습니까? –