是否有可能以60 fps生成video并以60 fps播放?

为了达到高性能的科学目的,我们需要渲染video并以60fps的速度在设备上播放video。 我假设H.264video的平常帧速率低于这个速度。

这是可能的,或者是帧率固定? 如果是这样,在设备上全屏播放H.264video时,可以获得的最大帧速率是多less?

技术规格将从iOS设备到iOS设备不同,因此您需要检查实际运行此硬件的硬件。 对于目前最强大的iOS设备iPad 2,苹果的video技术规格列表如下:

支持的video格式:高达720p的H.264video,每秒30帧,Main Profile级别3.1,AAC-LCaudio高达160 Kbps,48kHz,立体声audio.m4v,.mp4和.mov文件格式; MPEG-4video,高达2.5 Mbps,640×480像素,每秒30帧,Simple Profile,AAC-LCaudio,每声道高达160 Kbps,48kHz,.m4v,.mp4和.mov文件格式的立体声audio; 运动JPEG(M-JPEG),高达35 Mbps,1280 x 720像素,每秒30帧,ulawaudio,PCM立体声audio.avi文件格式

看起来即使在iPad 2的强大硬件上也不支持60 FPS的全屏H.264回放。

但是,您确实可以以60 FPS的速度将内容呈现在屏幕上。 我在核心animation重度应用程序和使用OpenGL ES的应用程序中都一直这样做。 如果您可以以足够快的速度在应用程序中生成您的内容以便以此速率显示,则可以以60 FPS的速度将其呈现在屏幕上,然后将每隔一帧编码为video。

鉴于video编码是一个相当昂贵的操作,听起来你也想在这里运行某种模拟,我猜你不能够以每秒60帧的速度渲染每帧到屏幕上目前的硬件只是由于你将要加载到系统上的负载。

是的,可以将video编码为一系列图像,然后在屏幕上快速显示图像。 video硬件的上限和解码图像的时间以及将图像接入video卡的时间是这个过程中的瓶颈。 只要你的图像解码逻辑不是太慢,应该可以将video数据以60FPS的速度推送到显卡上。

您可以尝试使用一系列PNG图像自己实现这一点,但是我认为您会发现解码PNG图像的速度不足以获得60 FPS的回放。 你可以在我对这个问题的回答中find一些免费的示例代码,用PNG图像实现这个方法

如果你不能得到你需要的性能,那么请看看我的AVAnimator库,因为它已经完全解决了这个问题,使用内存映射帧,可以从映射内存直接发送到video卡。