2016-09-23 19 views
0

サーバに画像と動画をアップロードする。ユーザーは最大5枚の画像と5枚の動画を選択できます。アップロードする前にビデオと画像のサイズを小さくする必要があります。ご案内ください。 以下は私が試していることです。画像用に何かしましたが、ビデオ圧縮については考えませんでした。サーバにアップロードする前にビデオと画像を圧縮する

// images 

if let imageData1 = UIImageJPEGRepresentation(User.sharedInstance.arrRoomGalleryImages.objectAtIndex(index) as! UIImage, 0.6) {    
    multipartFormData.appendBodyPart(data: imageData1, name: "image_path[]", fileName: strImgName, mimeType: "image/png") 
} 

//動画

let strVidName = "vid" + String(index) // + ".mov" 

multipartFormData.appendBodyPart(data: User.sharedInstance.arrRoomGalleryVideos.objectAtIndex(index) as! NSData, name: "video_path[]", fileName: strVidName, mimeType: "application/octet-stream") 

答えて

0

あなたはあなたのサーバーにビデオをアップロードする前の.mp4圧縮ファイルにすべての元.movファイルを変換することができます。 SWIFT 3の方法は次のとおりです。

まず、圧縮プロセスをカプセル化するこの関数を作成します。

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 = AVFileTypeMPEG4 //AVFileTypeQuickTimeMovie (m4v) 
       exportSession.shouldOptimizeForNetworkUse = true 
       exportSession.exportAsynchronously {() -> Void in 
        handler(exportSession) 
       } 
      } 

今、あなたはcompressVideoをこのように使用することができます:

// Put in fileURL the URL of the original .mov video 
let compressedURL = NSURL.fileURL(withPath: NSTemporaryDirectory() + NSUUID().uuidString + ".mp4") 
let compressedFileData : Data? = nil 

// Encode to mp4 
compressVideo(inputURL: fileURL, outputURL: compressedURL, handler: { (_ exportSession: AVAssetExportSession?) -> Void in 

    switch exportSession!.status { 
     case .completed: 

     print("Video compressed successfully") 
     do { 
      compressedFileData = try Data(contentsOf: exportSession!.outputURL!) 
      // Call upload function here using compressedFileData 
     } catch _ { 
      print ("Error converting compressed file to Data") 
     } 

     default: 
      print("Could not compress video") 
    } 
}) 

今、あなたはいつも

としてマルチパート「画像/ MP4」ファイルとしてcompressedFileDataをアップロードすることができ、ファイルを圧縮すると、非同期タスクであることに注意してください
+0

これを使用する前は、アップロードした動画は約10.5 MBでした。使用した後も約10.5 MBでした。私に何ができる ? –

関連する問題