Ios iphone导出-如何在视频中维护FPS>;每秒30帧
我们正在尝试导出视频并维护其FPS。正在发生的事情: 对于1秒视频剪辑示例:Ios iphone导出-如何在视频中维护FPS>;每秒30帧,ios,video,frame-rate,avassetexportsession,Ios,Video,Frame Rate,Avassetexportsession,我们正在尝试导出视频并维护其FPS。正在发生的事情: 对于1秒视频剪辑示例: 以每秒30帧的速度拍摄的常规运动视频-以每秒30帧的速度导出-30帧 总数 以每秒60帧的速度拍摄的常规运动视频-以每秒30帧的速度导出- 共30帧 慢动作视频设置在摄影机滚动中,以慢动作播放,导出 以每秒30帧的速度-但输出每帧以覆盖更长的播放时间 (例如,每秒240帧的1秒视频输出每秒30帧的8秒视频 fps)-so 120或240总计 慢动作视频(120或240)设置为以本机速度播放(或1 第二)-以每秒30帧
- 以每秒30帧的速度拍摄的常规运动视频-以每秒30帧的速度导出-30帧 总数
- 以每秒60帧的速度拍摄的常规运动视频-以每秒30帧的速度导出- 共30帧
- 慢动作视频设置在摄影机滚动中,以慢动作播放,导出 以每秒30帧的速度-但输出每帧以覆盖更长的播放时间 (例如,每秒240帧的1秒视频输出每秒30帧的8秒视频 fps)-so 120或240总计
- 慢动作视频(120或240)设置为以本机速度播放(或1 第二)-以每秒30帧的速度导出-总共30帧
关于如何修复当前代码,或者如何以不同的方式工作,有什么建议吗?您解决过这个问题吗?我也有同样的问题,我只想将5秒240fps的视频转换成30帧每秒的slomo视频,这是8倍的长。
PHVideoRequestOptions *options = [PHVideoRequestOptions new];
options.version = PHVideoRequestOptionsVersionCurrent;
[[PHImageManager defaultManager] requestAVAssetForVideo:_phasset options:options resultHandler:^(AVAsset * _Nullable asset, AVAudioMix *
_Nullable audioMix, NSDictionary * _Nullable info)
{
if(([asset isKindOfClass:[AVComposition class]] && ((AVComposition *)asset).tracks.count == 2)) {
SDAVAssetExportSession *encoder = [[SDAVAssetExportSession alloc] initWithAsset:asset];
encoder.outputFileType = AVFileTypeQuickTimeMovie;
encoder.outputURL = url;
encoder.videoSettings = @
{
AVVideoCodecKey: AVVideoCodecH264,
AVVideoWidthKey: [NSNumber numberWithInteger:newWidth],
AVVideoHeightKey: [NSNumber numberWithInteger:newHeight],
AVVideoCompressionPropertiesKey: @
{
// AVVideoAverageBitRateKey: [NSNumber numberWithInteger:bitrate * 1024],
AVVideoAverageBitRateKey: [NSNumber numberWithInteger:bitrate * 1024],
AVVideoProfileLevelKey: AVVideoProfileLevelH264High40,
// AVVideoMaxKeyFrameIntervalKey: [NSNumber numberWithInt:240],
AVVideoExpectedSourceFrameRateKey: [NSNumber numberWithInteger:240]
},
};
encoder.audioSettings = @
{
AVFormatIDKey: @(kAudioFormatMPEG4AAC),
AVNumberOfChannelsKey: @1,
AVSampleRateKey: @44100,
AVEncoderBitRateKey: @128000,
};
[encoder exportAsynchronouslyWithCompletionHandler:^{
if (encoder.status == AVAssetExportSessionStatusCompleted) {
NSURL *URL = encoder.outputURL;
// exported video's fps is not 240 fps on here
}
}];
} else {
…
}
}