Wie verwende ich scaleTimeRange in einer AVMutableComposition?

Ich habe eine Frage zum Skalieren der Videolänge in einer AVMutableComposition, um sie zu beschleunigen oder zu verlangsamen. Ich kenne den Code dafür

scaleTimeRange:(CMTimeRange)timeRange toDuration:(CMTime)duration

Das Problem ist, dass ich nicht weiß, wie man diesen Code benutzt. Was ich aktuell für meine Komposition habe, ist eine aufgenommene Videospur und eine mitgelieferte Audiospur.

Kann mir jemand zeigen, wie ich dies hinzufügen kann, um meine Videospur zu beschleunigen oder zu verlangsamen?

Hier ist mein Code:

AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil];
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:videoURL options:nil];    

AVMutableComposition* mixComposition = [AVMutableComposition composition];

AVMutableCompositionTrack *compositionCommentaryTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio 
                                                                                    preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionCommentaryTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) 
                                    ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] 
                                     atTime:kCMTimeZero error:nil];

AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
                                                                               preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) 
                               ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
                                atTime:kCMTimeZero error:nil];

AVAssetExportSession* _assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition 
                                                                      presetName:AVAssetExportPresetPassthrough];   

NSString* videoName = @\"export.mov\";

NSString *exportPath = [NSTemporaryDirectory() stringByAppendingPathComponent:videoName];
NSURL    *exportUrl = [NSURL fileURLWithPath:exportPath];

Antworten auf die Frage(0)

Ihre Antwort auf die Frage