以帧速率播放视频不是刷新率的倍数。

时间:2012-02-06 20:05:20

标签: opengl video frame-rate

我正在开发一个将视频流式传输到OpenGL纹理的应用程序。我的第一个想法是将渲染循环锁定为60hz,因此要以30fps或60fps播放视频,我将分别更新每隔一帧或每帧的纹理。当显示器处于60hz时,计算机如何以其他帧速率播放视频,或者如果显示器处于75hz,他们如何播放30fps视频呢?

3 个答案:

答案 0 :(得分:2)

对于大多数消费类设备,您会得到类似3:2 pulldown的内容,它基本上会不均匀地复制源视频帧。具体地说,在60Hz显示器上显示的24Hz视频中,帧交替加倍和三倍。对于您的用例(OpenGL纹理中的视频),这可能是最好的方法,因为它可以避免撕裂。

如果您有足够的计算能力来运行实际的重采样算法,则可以将任何帧速率转换为任何其他帧速率。您选择的算法定义了转换的平滑程度,不同的算法在不同的场景中效果最佳。

过于平滑可能会导致120 Hz“肥皂剧”效果 [1] [2]

  

我们已经接受过以24 FPS观看电影成长的培训,期望电影具有一定的外观和感觉,这是特定帧率的神器。   当这些电影被[处理]时,额外的清晰度和清晰度可能会使观看者看起来错误,即使视频质量实际上更接近真实。

     

这通常被称为肥皂剧效果,因为有些人认为这些昂贵的电影看起来像便宜的视频肥皂剧(因为历史上用于肥皂剧的录像带格式工作在30 FPS)。

答案 1 :(得分:1)

这是Screen TearingVertical Sync的问题 - 这些文章会比我更好地解释它。

答案 2 :(得分:1)

基本上你正在处理重采样问题。您的原始数据以30Hz或60Hz进行采样,您需要将其重新采样为另一个采样率。适用的算法完全相同。大多数情况下,您会找到有关音频信号重采样的文章。只需将每个像素的颜色通道视为要重新采样的单个波形。