设置AVMutableComposition的frameDuration
我正在使用Apple的WWDC 2010
样本包中的AVEditDemo
项目,我正在尝试更改导出video的帧速率。 使用AVMutableComposition
导出video,其中frameDuration的设置如下:
videoComposition.frameDuration = CMTimeMake(1, 30); // 30 fps
出于某种原因,将30更改为25不会更改使用AVAssetExportSession
导出的video的framerate
。 有谁知道为什么?
似乎AVAssetExportSession
预设优先于AVVideoComposition
frameDuration
。 我已经打开了一个错误报告:
回答MonsieurDart的回答:我没有尝试过AVEditDemo
但我在iOS 8上没有这个问题,我也没有在iOS 7上使用它。
我正在使用AVMutableVideoComposition
并将其设置为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;
其中videoTrack是从资产创建的AVMutableCompositionTrack