我正在處理一個應用程序,將視頻流到OpenGL紋理。我的第一個想法是將渲染循環鎖定到60hz,因此要以30fps或60fps的速度播放視頻,我會分別更新每幀或每幀的紋理。當顯示器處於60hz時,電腦如何以其他幀頻播放視頻,或者如果顯示器處於75hz,他們如何播放30fps視頻?以不是刷新率倍數的幀頻播放視頻。
3
A
回答
1
這是Screen Tearing和Vertical Sync的問題 - 這些文章會比我更好地解釋它。
1
基本上你正在處理重採樣問題。您的原始數據以30Hz或60Hz採樣,您必須將其重新採樣到另一個採樣率。應用相同的算法。大多數時候你會發現有關音頻信號重採樣的文章。只要將每個像素的顏色通道視爲您想要重新採樣的單個波形即可。
2
對於大多數消費類設備,您會得到類似於3:2 pulldown的東西,它基本上不均勻地複製源視頻幀。具體而言,在60Hz顯示器上顯示的24Hz視頻中,幀交替地加倍和增加三倍。對於你的用例(OpenGL紋理視頻),這可能是最好的方法,因爲它避免了撕裂。
如果您有足夠的計算能力來運行實際重採樣算法,則可以將任何幀速率轉換爲任何其他幀速率。您選擇的算法定義了轉換的平滑程度,不同的算法在不同的場景下效果最佳。
太光滑可能導致東西,如120赫茲「肥皂劇」效果 [1] [2]:
我們已經長大了看電影以24 fps了培訓,以期待的電影有一定要看並感覺到它是那個特定幀率的人造物。 當這些電影[處理]時,即使視頻質量實際上接近真實,額外的清晰度和清晰度也會使觀看者看起來錯誤。
這通常被稱爲肥皂劇效果,因爲有些人覺得它使得這些昂貴的電影看起來像便宜的拍攝視頻肥皂劇(因爲在肥皂劇歷史上使用的錄像帶格式工作在30 FPS)。
相關問題
- 1. Alsa以2倍的頻率播放vorbis
- 2. 刷新時播放新視頻
- 3. YouTube播放器在刷新新視頻ID後播放先前的視頻ID
- 4. 逐幀播放視頻 - Kivy
- 5. QT QML播放視頻2倍(重播)
- 6. 播放頻率
- 7. 可以播放單個視頻,但不會播放視頻itsel
- 8. MPMoviePlayerController不播放視頻幀ios7
- 9. Html視頻播放器播放聲音,但不是視頻
- 10. MPMoviePlayerController播放音頻不是視頻
- 11. 播放視頻一幀一幀
- 12. 按幀播放原始視頻幀
- 13. 視頻標籤播放音頻,但不播放視頻
- 14. 在視頻播放中播放視頻
- 15. 視頻播放器播放視頻
- 16. MediaRecorder視頻幀率
- 17. 試圖播放視頻裏面的視頻幀
- 18. 是否有任何可以播放視頻byteArray流的flex視頻播放器?
- 19. 視頻播放
- 20. 視頻播放
- 21. 以模態播放視頻
- 22. 視頻播放器不會每次播放視頻
- 23. 是否可以繼續播放視頻?
- 24. 如何從Android的YouTube視頻視頻播放視頻視頻?
- 25. 獲取當前正在播放的視頻的幀頻
- 26. 視頻不播放,但音頻偵聽
- 27. FFmpegFrameRecorder視頻播放音頻比3G網絡中的視頻幀速度更快
- 28. a + v的RTMP流只播放音頻,不播放視頻
- 29. AviSynth的 - 視頻幀率不匹配
- 30. 以不同的幀率編寫視頻幀