在上传到服务器之前压缩视频和图像
问题描述:
将图像和视频一起上传到服务器。用户最多可以选择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")
答
可以逢原.mov文件转换成的MP4压缩文件上传视频到您的服务器之前。以下是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")
}
})
现在,您可以上传compressedFileData作为多“图像/ MP4”文件照常
在我使用这个之前,上传的视频大约为10.5 MB,在我使用它之后,仍然约为10.5 MB。我能做什么 ? –