2012-02-06 90 views
3

我正在處理一個應用程序,將視頻流到OpenGL紋理。我的第一個想法是將渲染循環鎖定到60hz,因此要以30fps或60fps的速度播放視頻,我會分別更新每幀或每幀的紋理。當顯示器處於60hz時,電腦如何以其他幀頻播放視頻,或者如果顯示器處於75hz,他們如何播放30fps視頻?以不是刷新率倍數的幀頻播放視頻。

回答

1

基本上你正在處理重採樣問題。您的原始數據以30Hz或60Hz採樣,您必須將其重新採樣到另一個採樣率。應用相同的算法。大多數時候你會發現有關音頻信號重採樣的文章。只要將每個像素的顏色通道視爲您想要重新採樣的單個波形即可。

2

對於大多數消費類設備,您會得到類似於3:2 pulldown的東西,它基本上不均勻地複製源視頻幀。具體而言,在60Hz顯示器上顯示的24Hz視頻中,幀交替地加倍和增加三倍。對於你的用例(OpenGL紋理視頻),這可能是最好的方法,因爲它避免了撕裂。

如果您有足夠的計算能力來運行實際重採樣算法,則可以將任何幀速率轉換爲任何其他幀速率。您選擇的算法定義了轉換的平滑程度,不同的算法在不同的場景下效果最佳。

太光滑可能導致東西,如120赫茲「肥皂劇」效果 [1] [2]

我們已經長大了看電影以24 fps了培訓,以期待的電影有一定要看並感覺到它是那個特定幀率的人造物。 當這些電影[處理]時,即使視頻質量實際上接近真實,額外的清晰度和清晰度也會使觀看者看起來錯誤。

這通常被稱爲肥皂劇效果,因爲有些人覺得它使得這些昂貴的電影看起來像便宜的拍攝視頻肥皂劇(因爲在肥皂劇歷史上使用的錄像帶格式工作在30 FPS)。