什麼是可變幀率?

什麼是可變幀率?

可變幀速率(或VFR)是視頻壓縮中的一個術語,指的是某些容器格式支援的功能,該功能允許在視頻播放期間主動更改幀速率,或者完全放棄幀速率的概念並為每個幀設定單獨的時間碼。

所以我理解這個概念。但這會帶來很多問題,而且大多數資訊板都是存根:

  1. fps vfr 均為十進制;整數 fps 可以是 vfr 嗎?或者它是否特定於影片的製作方式,例如當您使用 OBS 錄製螢幕並將 fps 設定為 30 時,但得到的小數為 29.777? vfr 真的只存在於現實生活中錄製的影片中,但 3d/2d 動畫不會有 vfr 嗎?我不明白小數與定義有什麼關係,任何整數值也可以適合它。我知道你可以在 ffmpeg 中使用 -vfrdet 來判斷某些東西是否是 vfr...但如果所有 vfr 都是十進制那麼有什麼意義,為什麼不只檢查 fps 呢。

  2. 如果您以相同的 fps 重新編碼 vfr 視頻,輸出是否仍然保留相同的速度和幀數,或者是否會出現與恆定 fps 不同的某種數據丟失(編解碼器質量損失之外)? vfr 影片的播放會顯示所有幀,還是會跳幀(假設硬體正常運作)?

  3. 為什麼影片編輯器不「全部」支援非整數 fps 值?我的意思是任何我可以用整數的分數表示的東西,都應該可以作為 fps 輸入設置在我看來......否則就違背了“視頻編輯”的意義。這些所謂的滿載影片編輯器將您限制為僅 5 個預設 fps,即 (30/60/24/23.97/25) 的具體原理是什麼。我更困惑,因為一些視頻編輯器雖然說他們支援60fps,但只支援60fps 時間軸編輯...並且輸出的支援fps 值被列為(在導出之前!)為59.94,我看到官方教程視頻告訴我和大家都知道 59.94 與 60 相同。

  4. vfr 的 fps 值只是整個影片的平均 fps 嗎?還是一些更先進的平均/計算方法?在 VFR 影片中列出單一「平均」fps 有何作用?定義規定視頻獨立於任何一個 fps...是否有某種特殊的數據包告訴視頻播放器以某種方式播放視頻,以便某些部分以所需的方式更快/更慢?從技術上講,vfr 不能意味著影片開頭以 60 fps 播放,最後 10 秒以 5 fps 播放嗎?如果影片播放器只有 1 個數字可供播放,那麼它如何知道以 60 fps 的速度播放開始...並以 5 fps 的速度結束播放。

答案1

  1. Are all decimal fps vfr; can integer fps be vfr?

不,每秒的一小部分幀數仍然可以是恆定的。例如,NTSC(美國電視標準)的恆定幀速率為每秒 29.97(通常表示為 30000/1001)幀。

Does vfr really only exist on real-life recorded video, but 3d/2d animation wouldn't have vfr?

內容無關緊要。創建動畫時往往會考慮到特定的幀速率。但沒有理由一定是這樣。

I don't see what being a decimal has to do with the definition

沒有什麼。

why not just check the fps instead.

「檢查 fps」是什麼意思(請參閱第 4 點)

  1. If you re-encode vfr video at the same fps,

這完全取決於您如何編碼以及您用於編碼的工具如何運作。大多數工具都會傳遞任何進入輸出的內容,而不修改幀速率(除非您告訴它)

Does playback of a vfr video show ALL the frames or does it tend to skip frames

取決於設備。例如,如果您的電視為60Hz,並且編碼為61 fps,則它無法顯示每一幀,但如果內容平均為60Fps,但突然達到62,則電視可能會均勻地展開幀並全部顯示,或者可能會遺失兩幀幀,然後重複 2 幀。每個顯示器都是不同的,並且沒有規定它應該做什麼。

  1. Why do video editors not 'all' support non-integer fps values?

您需要詢問這些工具的創建者。除了懶惰、成本或簡單性之外,沒有任何理由會阻止任何工具中的此類功能。

為了簡單起見,在許多情況下,使用者要求的幀速率是不可能的。例如,RTMP 使用1khz 時鐘,這意味著甚至30fps CFR 也是不可能的(30 不能均分為1000,它變成30 fps AFR,其中三分之二幀長33ms,三分之一長34ms),如果UI 的比率為用戶可以輸入他們想要的幀速率的任何值,但由於他們選擇的視訊格式的限制,他們通常會得到他們意想不到的結果。

telling me and everyone that 59.94 is the same as 60 這絕對不是一回事。在大多數情況下,這並不重要,對於網路視訊來說,這永遠不會重要,但對於某些廣播電視工作流程,幀速率通常必須準確,以便不同的設備協同工作。

  1. Is the fps value of a vfr just the average fps across the entire video?

對於如何計算平均幀速率沒有標準。該軟體只是從標頭中讀取一個值,它可能會計算前幾秒的平均值,或者可能會計算整個檔案的幀速率。每個工具的工作原理都不同。

What is even the role of having a singular listed 'average' fps in a vfr video?

縱容。

is there some kind of special data packet that tells the video player to playback the video in a certain way such that some parts are faster/slower in the desired fashion?

不,每個幀都有一個與之關聯的時間戳記。播放器僅顯示一幀,直到顯示下一幀為止。它在每一幀上都會加速和減慢。

Can't vfr technically mean the start of a video plays at 60 fps and the last 10 seconds play at 5 fps?

是的

How would a video player know to play the start at 60 fps...and the end at 5fps...if it only has 1 number to go off of.

它沒有 1 個號碼可供參考。每幀有 1 個數字。

相關內容