iOS 8.0.2到8.1中录制的高fps视频文件的更改



我的应用程序可以处理来自iPhone 6/Plus相机的每秒240帧的视频,将多个覆盖的AVMutableCompositionTracks组合成一个组合以供导出。在应用程序中查看和导出都可以以30 fps或原始fps的速度渲染。

对于在8.0.2或之前拍摄的视频,以原始fps导出并基本保留原始文件的所有特征(覆盖除外)没有任何问题。对于在8.1上拍摄的视频,大约有50%的可能性是合成被破坏并无法导出,或者在应用程序中播放时,在播放后冻结约一秒钟(而音频持续播放一段时间),然后最终以AVFoundationErrorCode-11119"AVErrorMediaServicesWereReset"停止。

如果将frameDuration设置为1/30、1/60,甚至1/200,或者对于240(好吧,239.84…)fps的文件,有时高达1/220左右,则播放或导出没有问题。导出似乎也比播放更宽容,有时甚至在播放失败时也会通过。

我注意到其他应用程序在8.1版本中发生了变化,例如MoviePro,当设置为240帧/秒时,现在的记录速度约为207-209帧/秒,有时设置为60帧时,记录速度为59帧/秒。而苹果的SloPoke示例也更为多变,通常记录速度在235-236之间。不过,苹果的Camera应用程序仍为239.84。

有人知道发生了什么变化以及如何应对吗?显然是关于fps可变性的问题,但我该如何处理呢?或者它可能只是一个bug?

似乎是AVPlayer和AVExportSession中的一个错误。使用AVAssetWriter导出时没有问题。

苹果最新更新的示例项目AVCustomEdit使用自定义OpenGL合成器在剪辑之间进行转换,当修改为拍摄iOS 8.1 240 fps的视频并以接近240的帧速率播放时,也出现了同样的问题。

真不敢相信我花了30个小时试图弄清楚哪里出了问题,而回避却这么容易。

我注意到其他应用程序在8.1版本中发生了变化,例如MoviePro在设置为240帧/秒时,现在的记录速度约为207-209帧/秒

这是MoviePro应用程序中的一个错误,在即将提交的更新中已修复。在iOS 8.1上,新的待提交更新记录在所有比特率下都非常接近240帧/秒。

最新更新