convert2Mp4 code snippet

#pragma mark - helper

- (NSURL *)convert2Mp4:(NSURL *)movUrl {

    NSURL *mp4Url = nil;

    AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:movUrl options:nil];

    NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset];

    

    if ([compatiblePresets containsObject:AVAssetExportPresetHighestQuality]) {

        AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:avAsset

                                                                              presetName:AVAssetExportPresetHighestQuality];

        mp4Url = [movUrl copy];

        mp4Url = [mp4Url URLByDeletingPathExtension];

        mp4Url = [mp4Url URLByAppendingPathExtension:@"mp4"];

        exportSession.outputURL = mp4Url;

        exportSession.shouldOptimizeForNetworkUse = YES;

        exportSession.outputFileType = AVFileTypeMPEG4;

        dispatch_semaphore_t wait = dispatch_semaphore_create(0l);

        [exportSession exportAsynchronouslyWithCompletionHandler:^{

            switch ([exportSession status]) {

                case AVAssetExportSessionStatusFailed: {

                    NSLog(@"failed, error:%@.", exportSession.error);

                } break;

                case AVAssetExportSessionStatusCancelled: {

                    NSLog(@"cancelled.");

                } break;

                case AVAssetExportSessionStatusCompleted: {

                    NSLog(@"completed.");

                } break;

                default: {

                    NSLog(@"others.");

                } break;

            }

            dispatch_semaphore_signal(wait);

        }];

        long timeout = dispatch_semaphore_wait(wait, DISPATCH_TIME_FOREVER);

        if (timeout) {

            NSLog(@"timeout.");

        }

        if (wait) {

            //dispatch_release(wait);

            wait = nil;

        }

    }

    

    return mp4Url;

}

转载于:https://www.cnblogs.com/Keys/p/4613488.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值