Setting AVMutableComposition's frameDuration
It seems that the AVAssetExportSession
preset takes precedence over the AVVideoComposition
frameDuration
. I've opened a bug report:
http://openradar.appspot.com/11127156
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
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);