Ryougi_Kukoc 发表于 2020-4-16 23:48:29

duskghost 发表于 2020-4-16 22:56
mpv和VLC都不是很会设置,基本都是默认设置;mpc-hc的话,LAV那的硬解我选了none,也就是没开硬解吧,mad ...

您可以先做一个对比,比如把mpc的渲染换回它默认的那个,看一下还会不会卡。如果会的话可能是lav的问题,不会的话就是madvr的问题了。
普遍认为madvr比较吃配置,如果您没有进行一些研究直接用默认配置的话,的确有可能出现一些奇怪的问题。当然对我们这些围观者而言,还是先确认一下问题出现在什么地方。


Ryougi_Kukoc 发表于 2020-4-16 23:51:16

duskghost 发表于 2020-4-16 22:56
mpv和VLC都不是很会设置,基本都是默认设置;mpc-hc的话,LAV那的硬解我选了none,也就是没开硬解吧,mad ...

其实这个mpv的表现已经很明显了,就是因为配置需求高gpu顶不住了。理论上mpv和mad的处理效果不会相差太远,mpv顶不住的话不刻意压一下mad的配置后果也是可想而知的。

Misaki_Mei 发表于 2020-4-17 10:36:13

系列番外篇之3─是時候拋棄Reclock了? madVR螢幕更新率微調功能簡介與實作
具体怎么设置看:
https://lysandria1985.blogspot.com/2018/04/3reclock-madvr.html


ReClock madVR在v0.92.0之後,在螢幕設定的"display modes" 底下多加了一個 "custom modes"的設定分頁,這個部分提供了一個非常有用的功能。在談到這個功能之前,可以回顧一下我之前在Reclock那篇文章之中所提到的關於同步的一些概念,在影片播放時一直存在的一個問題就是螢幕的更新率和影片的播放速率(影片幀數或其倍數)並非完全的一致,可能存在著或大或小的差異,而這個差異將造成影片在一定的周期內必須丟掉或重複一幀來保持影音的同步,而這個動作將造成畫面的頓挫感,雖然這個頓挫感不一定是每個人感覺得出來,但不可否認這個問題是存在的。
madshi為custom modes這個功能寫了一篇詳盡的介紹,裡面就有探討到這個問題,並提出各種可能的解決辦法以及優缺點,以下我將以那篇介紹為藍本,並加上個人的實際設置經驗來說明custom modes這個功能。

原文提到,影片播放由兩個重要的部分組成,分別是1.影像渲染(Video rendering) 以及 2.音訊渲染(Audio rendering),分別由各自的渲染器(renderer)來處理,madVR作為影像渲染器,它只負責處理影像的部分,不負責音訊的部分。同樣地,音訊渲染器也不處理影像的部分。那當兩邊的渲染器完全忽略彼此的話,為何影像跟聲音能夠同步呢?原因就在於兩邊的渲染器都必須跟隨一個"master clock"。
GPU和音效卡都各自有硬體時鐘迴路(hardware clock circuits),由這個部份來決定影像幀/音訊封包傳送到螢幕/擴大機的節奏/速率。可以想見,如果沒有一個當作基準的master clock存在的話,音訊或影像兩者在渲染時可能會有其中一個比另一個的速率還快,兩個時鐘之間產生偏移量,這時我們就會失去影像跟聲音的同步。
通常在DirectShow基礎的播放器,會以音訊時鐘(audio clock)當作是master clock,在此情形下可以確保音訊播放是完美的,不會有任何需要丟掉或重複資訊的情形,但相對的,影像渲染器就必須時時確保有跟隨master clock(也就是audio clock)的速率來保持影音同步,這意味著當影像時鐘(video clock)跑的稍微比音訊時鐘快或慢的話,影像渲染器就必須做重複就丟掉幀的動作,否則就會失去影音同步。

1.既存的解決方案─Reclock

Reclock作為一個特別的音訊渲染器,它的作法是藉由測量VSync interrupt並調整音訊時鐘(做為master clock),使得影像渲染器不必再丟棄或重複幀來保持影音同步,這意味著我們有可能在影像上得到一個完美流暢的播放,但問題在於現在變成要去調整音訊時鐘。Reclock 調整音訊時鐘的做法,是對音訊去做即時的重取樣,這機制基本上沒什麼問題,只是會造成一點點的音質損失,此外,對於bitstreaming(直接傳送音訊封包給擴大機解碼)的相容性不太好,而且Reclock目前已是半停止開發的狀態(亦沒有x64版本)。有一些和Reclock類似的音訊渲染器,如J.River的"VideoClock"和Sanaer,但缺點也差不多,在重取樣中損失一些音質,以及bitstreaming的問題。

2.新的解決方案─Custom display modes

在找尋完美解的任務中,先記得最原始的問題是,如果影像和音訊時鐘用不同的速率在跑,播放就無法達到完美,這種情形不是音訊渲染器要讓步(經由對音訊重取樣),就是影像渲染器要讓步(經由丟棄或重複幀)。現在停止這種讓步的作法,嘗試來解決最根本的問題,經由一種方法調整影像時鐘(video clock),讓其可以完美契合音訊時鐘(audio clock)。
GPU有一個"pixel clock"它是可編譯的,另外,VESA DMT timing standard要求顯示器必須接受pixel clock在5%內的變動,這對我們來說非常夠用,因此如果影像渲染器能夠在播放時即時對pixel clock作一些微小的修正,所有問題就迎刃而解了。但不幸的是,無論OS或GPU廠商都沒有提供任何方法能對pixel clock做即時的微小修正(也許出於種種原因),總之這條路徑不可行(此處不討論FreeSync/GSync之類技術)。
如果不能對pixel clock做即時調整,那麼我們就對它做靜態調整,這個是可行的,基本上我們只要測量音訊和影像時鐘的精確速率,然後告訴GPU之後用一個修正過的pixel clock去替換,不過實際上仍會遇到一些問題,光靠替換pixel clock仍無法達到完美的結果,基於這點,除了修正pixel clock之外,也要另外修正其他的時間參數(timing parameters),一個垂直和水平的"back porch",如此一來我們能夠得到足夠完美的結果。
談一下要如何讓GPU能夠使用我們修正過的時間參數(pixel clock + back porches),基本上我們可以透過覆蓋EDID來達成,而這個就是CRU(Custom Resolution Utility)這個軟體所做的事,不過這個方式有一些缺點,因此取而代之madVR是使用AMD、Intel、Nvidia各自的API讓madVR能夠定義自訂的時間參數給任何GPU輸出模式。
不過要注意的是,對pixel clock的調整幾乎可以在任何螢幕上被接受,但back porches就不一定,它處於灰色地帶,一些螢幕可以接受微調的back porches參數,一些則不然。在實際經驗上大部分螢幕還是可以接受的,但是不能保證。而這也是一種"試錯法"(trial and error)的過程,我們很難去預測螢幕能夠接受哪一種back porches的組合,過程中會有很多機會遇到一些模式是無法運作的(此時螢幕會全黑無顯示或顯示"不支援此模式"之類訊息)。


以下為實際設置說明:(以我的個人操作經驗為主,跟madshi原文的例子會有一些差異,英文還OK的建議先去看原文的說明再來看我這篇)

我們要對影像時鐘(video clock)做修正,實際上就是要對螢幕更新率做微調的動作,而手段就是前面講的給它一個pixel clock+back porches的組合去替換掉原來的。這邊我們可以看到螢幕的EDID(Extended Display Identification Data)資訊,特別注意"max vertical rate"和"max pixel clock",vertical rate就是指螢幕的垂直更新率,我們一般講螢幕更新率都是指這個,這個例子裡表示這螢幕最大支援到1920x1080 76Hz(不過通常只有60Hz附近能穩定使用)。

duskghost 发表于 2020-4-17 11:16:18

本帖最后由 duskghost 于 2020-4-17 11:17 编辑

Ryougi_Kukoc 发表于 2020-4-16 23:51
其实这个mpv的表现已经很明显了,就是因为配置需求高gpu顶不住了。理论上mpv和mad的处理效果不会相差太远 ...
以前一直用mpc-hc+LAV+madVR的,看23.976fps的视频一直都有跳帧的感觉,不过那时候以为是正常现象就没在意。
直到最近看到mpv的教程,才改用了mpv。
----------------------------

----------------------------
按照mpv教程设置,播23.976fps视频确实流畅了,但是mpc-hc播放还是那样卡,后来就没碰mpc-hc了。。
今天跑去把madVR的smooth motion打开,播23.976fps视频确实流畅了,但播59.940fps还是会有卡顿(cpu和gpu占用没爆表,都六七十)。
现在怀疑是机器性能不行,或者片源本来就是卡的,一会儿找同事借台游戏本验证一下。

cocue 发表于 2020-4-17 17:13:44

为啥不在madvr下按ctrl+j截个图呢

孤雨独火 发表于 2020-4-17 19:27:27

楼上+1,还有你这配置就被软解优先了,实在太低估(软解)高清播放所需要的硬件需求了,高配的画面处理说实在的一点都不比玩3A大作省性能

duskghost 发表于 2020-4-17 21:08:31

cocue 发表于 2020-4-17 17:13
为啥不在madvr下按ctrl+j截个图呢

播放了大约三分钟的时候截的图:
----------------

litfal 发表于 2020-4-17 21:52:20

這是一種 judder, 可以用設定螢幕更新頻率為 59.94 Hz 解決
Nvidia 或 AMD 驅動都可以
不然就試試一套叫 CRU 的軟體

litfal 发表于 2020-4-17 21:55:11

本帖最后由 litfal 于 2020-4-17 22:27 编辑

duskghost 发表于 2020-4-17 21:08
播放了大约三分钟的时候截的图:
----------------
然後你這個 dropped frames 和 repeated freams 都有值,
0.2s卡一次的頻率也不像是 1001:1000 的 judder 造成的
1001:1000 的 judder 大概16秒才會 repeat 一次


撥放的時候觀察一下 各 queue 有沒有接近或變成 0
有的話就是 CPU或顯卡 跑不動了

boday 发表于 2020-4-18 03:31:45

如楼上所说,真的是帧率与刷新率的差别的话,应该是大约每 1000 帧卡一次,这个问题在你打开 mpv 的 interpolation 或者 madvr 的 smooth motion 后就不会有了。

首先应该排除是不是你机器性能不足的问题,也就是在 mpv 里 shift+i 或者使用 madvr 时用 ctrl+j 看实时的丢帧情况。
页: 1 [2] 3
查看完整版本: 显示器刷新率60Hz,播59.940fps视频每0.2秒一卡