1

1 つのビデオを録画し、ドキュメント ディレクトリに保存しました。今、私はビデオを低速、高速、または通常の速度に編集したいと考えています。ビデオの高速および通常の速度を実行できます。しかし、私はビデオの低速化を行うことができません。常に通常の速度に変換しています。ここに私のコードがあります

    AVMutableComposition *composition = [AVMutableComposition composition];
    AVURLAsset * sourceAsset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:inputVideoPath] options:nil];
    AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
    BOOL ok = NO;

    AVAssetTrack * sourceVideoTrack = [[sourceAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];

    CMTimeRange x = CMTimeRangeMake(kCMTimeZero, [sourceAsset duration]);

    ok = [compositionVideoTrack insertTimeRange:x ofTrack:sourceVideoTrack  atTime:kCMTimeZero error:nil];
    CMTime fiveSecondsIn;
    if([Cell.text isEqualToString:@"Fast"]){
        fiveSecondsIn = CMTimeMake(10,1);
    }
    else if([Cell.text isEqualToString:@"Normal"]){
        fiveSecondsIn = CMTimeMake(1,1);
    }
    else if([Cell.textLabel.text isEqualToString:@"Slow"]){
        fiveSecondsIn = CMTimeMake(1,.5);
    }


    CMTimeRange video_timeRange = CMTimeRangeMake(kCMTimeZero,sourceAsset.duration);


    [compositionVideoTrack  scaleTimeRange:video_timeRange toDuration:fiveSecondsIn];


    if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
         [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
    }

    NSURL    *exportUrl = [NSURL  fileURLWithPath:filePath];
    AVAssetExportSession *exporter = [[AVAssetExportSession alloc]initWithAsset:composition presetName:AVAssetExportPresetHighestQuality];
    exporter.outputURL=exportUrl;
    exporter.outputFileType = @"com.apple.quicktime-movie";
    [exporter exportAsynchronouslyWithCompletionHandler:^(void){

       [self performSelectorOnMainThread:@selector(playnewVideo) withObject:nil waitUntilDone:NO];

    }];
4

0 に答える 0