2016-03-28 1 views
0

J'essaie de limiter la taille de AVAssetExportSession à 10mb. Sans définir fileLengthLimit, "Exportation est terminée". Après avoir défini fileLengthLimit = 10*1024*1024, "Échec de l'exportation: impossible d'ouvrir".La définition de `fileLengthLimit` de` AVAssetExportSession` provoque: "Échec de l'exportation: Impossible d'ouvrir"

- (void) splitVideo{ 
    AVURLAsset *videoAsset = [AVURLAsset URLAssetWithURL:output options:nil]; 
    CMTime videoDuration = videoAsset.duration; 

    CMTime start = CMTimeMakeWithSeconds(0, 1); 
    CMTimeRange range = CMTimeRangeMake(start, videoDuration); 

    NSString *outputPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"output1.mp4"]; 
    [self cutVideo:output withRange:range withOutput:outputPath]; 
} 

- (void) cutVideo:(NSURL *)url withRange:(CMTimeRange)range withOutput:(NSString*)path{ 

    AVAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil]; 
    NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:asset]; 
    if ([compatiblePresets containsObject:AVAssetExportPresetHighestQuality]) { 
     AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] 
              initWithAsset:asset presetName:AVAssetExportPresetPassthrough]; 

     NSURL *finalUrl = [NSURL fileURLWithPath:path]; 
     exportSession.outputURL = finalUrl; 
     exportSession.outputFileType = AVFileTypeMPEG4; 
     exportSession.fileLengthLimit = 10*1024*1024; 
     exportSession.timeRange = range; 

     [exportSession exportAsynchronouslyWithCompletionHandler:^{ 
      dispatch_async(dispatch_get_main_queue(), ^{ 

      }); 
      if ([exportSession status] == AVAssetExportSessionStatusCompleted){ 
       NSLog(@"Export completed"); 
      }else if ([exportSession status] == AVAssetExportSessionStatusFailed){ 
       NSLog(@"Export failed: %@", [[exportSession error] localizedDescription]); 
      }else if ([exportSession status] == AVAssetExportSessionStatusCancelled){ 
       NSLog(@"Export canceled"); 
      } 
      }]; 
    } 
} 

Les vidéos sont exportés autour de 25mb.

Répondre

0

Je remplacé

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough] 

avec:

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality]; 

AVAssetExportPresetPassthrough - « Cette option d'exportation entraînera les médias de toutes les pistes à passer à travers à la sortie exactement comme stocké dans la source actif "