iOS上传相簿视频模糊

iOS上传相簿视频模糊

在上传相簿视频文件时,选择系统相簿里面的视频,系统会自动跳入下一页进行视频“压缩”。

实际上这个过程是将其他类型的视频,比如.MP4转码成了.MOV视频文件,顺便压缩了文件。

这时候会发现转后的视频没原视频清晰呢?如果没设置videoQuality和videoExportPreset属性的话。

  • videoQuality

@property(nonatomic) UIImagePickerControllerQualityType videoQuality NS_AVAILABLE_IOS(3_1); // default value is UIImagePickerControllerQualityTypeMedium. If the cameraDevice does not support the videoQuality, it will use the default value.

  • videoExportPreset

@property(nonatomic, copy) NSString *videoExportPreset;

Discussion The value of this key is one of the export presets supported by the AVAssetExportSession class. For a list of possible values, see the export preset constants in AVAssetExportSession.

AVAssetExportSession
AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPreset960x540];
在这个类里搜索ExportPreset,可通过这些设置videoExportPreset属性。也可直接设置videoQuality来达到压缩时高分辨率的效果,使得上传的视频不模糊。

关于视频转码

下面试摘抄代码,出处见AVAssetExportSession 视频转码

// 视频转码
- (void) convertVideoWithModel:(NSString *) localVideoPath {

    TYWeakify(self, weakSelf);
    
    //转码配置
    NSURL *inputURL = [NSURL fileURLWithPath:localVideoPath];
    
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
    AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPreset960x540];
    exportSession.shouldOptimizeForNetworkUse = YES;
    exportSession.outputURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@.mp4",localVideoPath]]; //转码后的视频保存目录
    self.liveShareView.localVideoURL = [NSString stringWithFormat:@"%@.mp4",localVideoPath];
    exportSession.outputFileType = AVFileTypeMPEG4;
    
    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        
        int exportStatus = exportSession.status;
        switch (exportStatus) {
                
            case AVAssetExportSessionStatusFailed: {
                
                NSError *exportError = exportSession.error;
                NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError);
                break;
            }
                
            case AVAssetExportSessionStatusCompleted: {
                
                NSLog(@"视频转码成功");
                [weakSelf uploadVideo];
                
            }
        }
    }];
}

如果要研究视频转码,需要研究研究ffmpeg。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Morris_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值