I\'m playing with the AVEditDemo
project, from Apple\'s WWDC 2010
sample pack, and I\'m trying to change the frame rate of the exported video. The
It seems that the AVAssetExportSession
preset takes precedence over the AVVideoComposition
frameDuration
. I've opened a bug report:
http://openradar.appspot.com/11127156
The client can set sourceTrackIDForFrameTiming
to kCMPersistentTrackID_Invalid
and frameDuration
to an appropriate value in order to specify the maximum output frame rate independent of the source track timing.
videoComposition.sourceTrackIDForFrameTiming = kCMPersistentTrackID_Invalid;
videoComposition.frameDuration = CMTimeMake(1, 30);
replying MonsieurDart's answer:
I didn't try the AVEditDemo
but I'm not having this issue on iOS 8, nor did I have it on iOS 7.
I'm using a AVMutableVideoComposition
and setting it as the AVAssetExportSession's
videoComposition.
.
.
AVMutableVideoCompositionInstruction * instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
AVMutableVideoCompositionLayerInstruction *layerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoTrack];
AVMutableVideoComposition *compositionInstruction = [AVMutableVideoComposition videoComposition];
compositionInstruction.instructions = @[instruction];
compositionInstruction.frameDuration = CMTimeMake(1, 30);
.
.
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:composition AVAssetExportPresetHighestQuality];
exporter.videoComposition = compositionInstruction;
where the videoTrack is a AVMutableCompositionTrack
created from the asset