首页 > 系统 > iOS > 正文

iOS实现视频压缩上传实例代码

2019-10-21 18:46:46
字体:
来源:转载
供稿:网友

之前写过图片上传PHP服务器,今天把接口稍微改了一下,把视频上传的代码贴出来,目前上传功能已经调通,视频的压缩代码上似乎并不完善,后续会完善压缩部分的代码;

- (void)convertVideoWithURL:(NSURL *)url{  NSDate *date = [NSDate date];  NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];  [dateformatter setDateFormat:@"YYYY-MM-dd-HH-mm-ss"];  NSString *dateName = [dateformatter stringFromDate:date];  NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;  NSString *pathName = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4",dateName]];  NSLog(@"沙盒:%@",pathName);  //转码配置  AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];  AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];  exportSession.shouldOptimizeForNetworkUse = YES;  exportSession.outputURL = [NSURL fileURLWithPath:pathName];  exportSession.outputFileType = AVFileTypeMPEG4;  [exportSession exportAsynchronouslyWithCompletionHandler:^{    int exportStatus = exportSession.status;    switch (exportStatus)     {      case AVAssetExportSessionStatusFailed:      {        // log error to text view        NSError *exportError = exportSession.error;        NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError);        [SVProgressHUD showErrorWithStatus:@"视频压缩失败"];        [SVProgressHUD dismissWithDelay:1.0];        break;      }      case AVAssetExportSessionStatusCompleted:      {        self.videoData = [NSData dataWithContentsOfFile:pathName];        [[NetTool shareDL]upLoadVideoWithURL:@"http://192.168.1.102/php/image.php" paremeter:nil data:self.videoData videoName:[NSString stringWithFormat:@"%@.mp4",dateName] progress:^(NSProgress * _Nonnull uploadProgress) {          [SVProgressHUD showProgress:1.0*uploadProgress.completedUnitCount/uploadProgress.totalUnitCount status:@"正在上传"];          NSLog(@"正在上传%f%%",(1.0*uploadProgress.completedUnitCount/uploadProgress.totalUnitCount)*100);        } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {          [SVProgressHUD showSuccessWithStatus:@"上传成功"];          [SVProgressHUD dismissWithDelay:1.0];        } fail:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {          [SVProgressHUD showErrorWithStatus:@"上传失败"];          [SVProgressHUD dismissWithDelay:1.0];        }];      }    }  }];}
[manager POST:url parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {    [formData appendPartWithFileData:videoData name:@"upimage" fileName:videoName mimeType:@"video/mp4"];  } progress:^(NSProgress * _Nonnull uploadProgress) {    progress(uploadProgress);  } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {    success(task,responseObject);  } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {    fail(task,error);  }];

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到IOS开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表