美文网首页
iOS视频转码

iOS视频转码

作者: 靠北的北 | 来源:发表于2017-03-30 14:53 被阅读1744次

iOS原生照片库视频格式为.mov,内存占用大,在发送文件中对它进行压缩。

- (void)movFileTransformToMP4WithSourcePath:(NSString *)sourcePath completion:(void(^)(NSString *Mp4FilePath))comepleteBlock session:(void(^)(AVAssetExportSession *session))sessionBlock
{
    /**
     *  mov格式转mp4格式
     */
    NSURL *sourceUrl = [NSURL URLWithString:sourcePath];
    
    AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:sourceUrl options:nil];
    
    NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset];
    
    if ([compatiblePresets containsObject:AVAssetExportPresetMediumQuality]) {
        
        exportSession = [[AVAssetExportSession alloc] initWithAsset:avAsset presetName:AVAssetExportPresetMediumQuality];
        NSString *fileStr = [[sourcePath componentsSeparatedByString:@"/"].lastObject.uppercaseString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSString *fileName = [[fileStr componentsSeparatedByString:@"."].firstObject.uppercaseString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSString *uniqueName = [NSString stringWithFormat:@"%@.mp4",fileName];
        NSArray *docPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *docPath = docPaths.lastObject;
        NSString * resultPath = [docPath stringByAppendingPathComponent:uniqueName];
        
        exportSession.outputURL = [NSURL fileURLWithPath:resultPath];
        exportSession.outputFileType = AVFileTypeMPEG4;
        exportSession.shouldOptimizeForNetworkUse = YES;
        
        //如有此文件则直接返回
        if ([[NSFileManager defaultManager] fileExistsAtPath:resultPath]) {
            comepleteBlock(resultPath);
            return;
        }
        
        [exportSession exportAsynchronouslyWithCompletionHandler:^(void)
         {
             switch (exportSession.status) {
                     
                 case AVAssetExportSessionStatusUnknown:
                 {
                     NSLog(@"视频格式转换出错Unknown");
                     sessionBlock(exportSession);
                 }
                     break;
                     
                 case AVAssetExportSessionStatusWaiting:
                 {
                     NSLog(@"视频格式转换出错Waiting");
                     sessionBlock(exportSession);
                 }
                     break;
                     
                 case AVAssetExportSessionStatusExporting:
                 {
                     NSLog(@"视频格式转换出错Exporting");
                     sessionBlock(exportSession);
                 }
                     break;
                     
                 case AVAssetExportSessionStatusCompleted:
                 {
                     comepleteBlock(resultPath);
                     NSLog(@"mp4 file size:%lf MB",[NSData dataWithContentsOfURL:exportSession.outputURL].length/1024.f/1024.f);
                     NSData *da = [NSData dataWithContentsOfFile:resultPath];
                     NSLog(@"da:%lu",(unsigned long)da.length);
                 }
                     break;
                     
                 case AVAssetExportSessionStatusFailed:
                 {
                     NSLog(@"视频格式转换出错Unknown");
                     sessionBlock(exportSession);
                 }
                     break;
                     
                 case AVAssetExportSessionStatusCancelled:
                 {
                     NSLog(@"视频格式转换出错Cancelled");
                     sessionBlock(exportSession);
                 }
                     break;
             }
             
         }];
        
    }
}

相关文章

  • iOS视频转码

    iOS原生照片库视频格式为.mov,内存占用大,在发送文件中对它进行压缩。

  • 记一次FFmpeg的编译过程的坑

    参考文章:iOS开发 - 超详细集成 FFmpeg 步骤 iOS集成FFmpeg及视频格式转码 以...

  • iOS 视频转码处理

    前言 苹果手机录制的视频在非Safari浏览器和安卓机器上面都无法直接播放,原因是因为直接录制的视频默认是mov格...

  • 【华栖云】如何下载vms里面的视频

    VMS里面视频包含转码前的视频(上传的原始视频)和转码后的视频。 1、转码前视频下载方式: 找到相应视频,点击后面...

  • iOS短视频SDK中的AVFoundation实践

    1. 前言 在iOS中,AVFoundation是一个集视频播放、播放缓存、视频转码、图层混合、混音、变调、变速等...

  • iOS短视频SDK中的AVFoundation实践

    1. 前言 在iOS中,AVFoundation是一个集视频播放、播放缓存、视频转码、图层混合、混音、变调、变速等...

  • iOS之AVFoundation视频转码

    利用AVFoundation框架实现视频格式转码,下面以mov转mp4为例: /**mov转mp4格式*/-(vo...

  • IOS FFmpeg H.264解码

    1.**本地集成FFmpeg ** (引用) iOS集成FFmpeg及视频格式转码 2.pod集成(省事,但是有些...

  • iOS上传视频到服务器题

    iOS上传视频到服务器 这里介绍用AFN上传本地拍摄的视频到服务端 //视频转换为MP4 //转码操作... _h...

  • IOS - UTF-8转码问题

    IOS中提供的转码。 转码后发现,与java的不一样。 原来IOS中转码的标准不一致,导致出现错误。 不过,可以使...

网友评论

      本文标题:iOS视频转码

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