2014-09-23 86 views
1

我正在修剪现有的视频剪辑并将剪辑重新保存在与原始文件相同的位置。然而,当我跑我的应用程序我得到这个错误:Videoclip导出错误:'无效输出文件类型'在objective-c

终止应用程序由于未捕获的异常“NSInvalidArgumentException”,理由是:“无效的输出文件类型”

我已经找到了建议,但他们要求我改变从outputfiletype AVMediaTypeVideo。我想保留AVMediaTypeVideo,因为这是原始视频文件保存的内容。

这是我到目前为止有:

AVMutableComposition *finalClip = [[AVMutableComposition alloc]init]; 

NSString *outputPath = [[NSString alloc] initWithFormat:@"%@%@", NSTemporaryDirectory(), @"output.mov"]; 

NSURL *outputURL = [[NSURL alloc] initFileURLWithPath:outputPath]; 

AVURLAsset *videoclip = [AVURLAsset URLAssetWithURL:outputURL options:nil]; 

AVMutableCompositionTrack *finalClipTrack = [finalClip addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; 

[finalClipTrack insertTimeRange:CMTimeRangeMake(CMTimeMake((duration*indexNum), 1), CMTimeMake(duration,1)) ofTrack:[[videoclip tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil]; 

NSString *outputPathwe = [[NSString alloc] initWithFormat:@"%@%@", NSTemporaryDirectory(), @"outputwe.mov"]; 

NSURL *outputURLwe = [[NSURL alloc] initFileURLWithPath:outputPathwe]; 

if ([[NSFileManager defaultManager] fileExistsAtPath:outputPathwe]) 
    [[NSFileManager defaultManager] removeItemAtPath:outputPathwe error:nil]; 

AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:finalClip presetName:AVAssetExportPresetHighestQuality]; 

exporter.outputFileType = AVMediaTypeVideo; 

exporter.outputURL=outputURLwe; 

[exporter exportAsynchronouslyWithCompletionHandler:^{ 

    dispatch_async(dispatch_get_main_queue(), ^{ 

     [self exportDidFinish:exporter]; 

    }); 
}]; 

我觉得它的东西很容易,我只是缺少。这是我第一次使用AVFoundation,所以任何帮助将不胜感激!

回答

3

AVMediaTypeVideo是“媒体类型”而不是“输出文件类型”。您的原始视频具有类型为AVMediaTypeVideo的曲目。原始视频的类型不是AVMediaTypeVideo

AVAssetExportSession的outputFileTypeNSString类型的常量。允许的值列在AVFoundation/AVMediaFormat.h中。对于视频,它们分别是:

  • AVFileTypeQuickTimeMovie
  • AVFileTypeMPEG4
  • AVFileTypeAppleM4V

您必须选择允许值的一个使用您的AVAssetExportSessionoutputFileType

+0

谢谢你为我澄清这一点! – kkimble006 2014-09-24 14:33:38