如何将视频长度设置为原始视频长度的 3/4 倍?
How to set video length 3/4 time more then original?
我想导出比原始视频多 3 倍的视频(同一视频重复 3 次)。这意味着 2 秒的视频将是 6 秒。这怎么可能?
我已经实现了导出视频并将其保存在 cameroll 中。
所以请建议我最好的方法。
AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
/*******************Code for increase video length*****************************************/
AVAssetTrack *clipVideoTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:clipVideoTrack atTime:kCMTimeZero error:nil];
CMTime videoLength = videoAsset.duration;
if(self.isVideo){
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:clipVideoTrack atTime:videoAsset.duration error:nil];
videoLength = CMTimeAdd(videoAsset.duration, videoAsset.duration);
}
[compositionVideoTrack setPreferredTransform:[[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] preferredTransform]];
//slow down whole video by 2.0
double videoScaleFactor = scalfactor;
CMTime videoDuration = videoLength;
[compositionVideoTrack scaleTimeRange:CMTimeRangeMake(kCMTimeZero, videoDuration)
toDuration:CMTimeMake(videoDuration.value/videoScaleFactor, videoDuration.timescale)];
CGSize videoSize = [clipVideoTrack naturalSize];
/******************* End Code *************************************************************/
我想导出比原始视频多 3 倍的视频(同一视频重复 3 次)。这意味着 2 秒的视频将是 6 秒。这怎么可能?
我已经实现了导出视频并将其保存在 cameroll 中。 所以请建议我最好的方法。
AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
/*******************Code for increase video length*****************************************/
AVAssetTrack *clipVideoTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:clipVideoTrack atTime:kCMTimeZero error:nil];
CMTime videoLength = videoAsset.duration;
if(self.isVideo){
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:clipVideoTrack atTime:videoAsset.duration error:nil];
videoLength = CMTimeAdd(videoAsset.duration, videoAsset.duration);
}
[compositionVideoTrack setPreferredTransform:[[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] preferredTransform]];
//slow down whole video by 2.0
double videoScaleFactor = scalfactor;
CMTime videoDuration = videoLength;
[compositionVideoTrack scaleTimeRange:CMTimeRangeMake(kCMTimeZero, videoDuration)
toDuration:CMTimeMake(videoDuration.value/videoScaleFactor, videoDuration.timescale)];
CGSize videoSize = [clipVideoTrack naturalSize];
/******************* End Code *************************************************************/