【iOS】 视频压缩上传

作者: Always_on | 来源:发表于2017-02-17 14:13 被阅读540次

    之前写过图片上传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);
        }];
    

    相关文章

      网友评论

        本文标题:【iOS】 视频压缩上传

        本文链接:https://www.haomeiwen.com/subject/sstlwttx.html