我正在使用AVEditDemo
AppleWWDC 2010
示例包中的项目,并且正在尝试更改导出视频的帧速率。使用AVMutableComposition
frameDuration 设置如下的视频导出视频:
videoComposition.frameDuration = CMTimeMake(1, 30); // 30 fps
出于某种原因,将 30 更改为 25 不会更改framerate
使用AVAssetExportSession
. 有谁知道为什么?
我正在使用AVEditDemo
AppleWWDC 2010
示例包中的项目,并且正在尝试更改导出视频的帧速率。使用AVMutableComposition
frameDuration 设置如下的视频导出视频:
videoComposition.frameDuration = CMTimeMake(1, 30); // 30 fps
出于某种原因,将 30 更改为 25 不会更改framerate
使用AVAssetExportSession
. 有谁知道为什么?
回复 MonsieurDart 的回答:我没有尝试过,AVEditDemo
但在 iOS 8 上没有这个问题,在 iOS 7 上也没有。
我正在使用 aAVMutableVideoComposition
并将其设置为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
从资产创建的
似乎AVAssetExportSession
预设优先于AVVideoComposition
frameDuration
. 我打开了一个错误报告:
客户端可以设置sourceTrackIDForFrameTiming
为适当的值kCMPersistentTrackID_Invalid
,frameDuration
以指定独立于源轨道时间的最大输出帧速率。
videoComposition.sourceTrackIDForFrameTiming = kCMPersistentTrackID_Invalid;
videoComposition.frameDuration = CMTimeMake(1, 30);