網誌文章分布

網誌文章分布
入門教程系列:2017年三月,主要是提些播放軟體的安裝。
基本教程系列:2017年四月,會提到一些播放流程丶驅動程式丶播放器設定。
進階教程系列:2017年五月,大多談些濾鏡的事項。
SmoothVideo Project 系列:2017年六月,部分關於SVP的文章
測試筆記:2017年七月~,就是一些相關測試的筆記,錯誤可能較多。
SmoothVideo Project(SVP)日系手繪動漫(Anime)適用參數:永久置頂

2017年6月3日 星期六

SmoothVideo Project 系列(三) - SVP自動除幀腳本(適用巴哈動畫瘋丶Youtube)(2018-10-14更新)

在去年約9月底看到 leo91531網友所寫的 Re: [閒聊] 巴哈動畫瘋 開Fluid Motion方法

此文章提到使用TIVTC內的Tdecimate來達成及時除幀的方法,
由於巴哈動畫瘋內的影片被以重複幀的方式轉成30fps,原本應該是 1 2 3 4 1 2 3 4,被轉成 1 2 3 4 4 1 2 3 4 4
這類重複幀對於補幀來說會有很大的影響,會被誤判成畫面無移動,
所以在補幀之前,要先去除重複幀,這樣效果才會好。

以下為 原生23.976fps 與 有重複幀的29.970fps 分別轉至59.94fps的對比影片。

影片請以 720p60 或 1080p60 觀看,
其餘格式不容易看出差異(會被youtube壓成30p)。




該文章中將 ffdshow raw video filter 掛在 BlueskyFRC之前,
並以 ffdshow 內的 Avisynth 掛載 TIVTC,除幀後才丟給 BlueskyFRC 處理,
但是同樣方法在SVP卻無法作用,因為SVP會蓋掉 ffdshow 內的 Avisynth 腳本,
因此有人想到,也許可以使用 PotPlayer 內建的 Avisynth 濾鏡來處理,
但很不幸的,沒有效果,
因為PotPlayer 內建的 Avisynth 濾鏡在處理畫面的順序比 SVP 還要更後面,
變成 先補幀,後除幀 ,如此一來,自然達不到目的。

前陣子 Akitsuki Yamato 網友提到
調整 ffdshow buffer ahead 可以解決 在SVP中使用TIVTC出現異常 的情況,
於是著手開始改SVP腳本,使其可以自動處理重複幀的影片。

以下腳本適用於原生23.976/24fps影片,
卻被以重複幀方式誤轉成25/29.97/30fps的影片。(例:巴哈動畫瘋丶部分Youtube影片)
* mpv player 不支援 25 fps -> 24fps 除幀 
* 部分巴哈動畫瘋影片不建議開啟,原因後面會說

此腳本中未含任何修改參數的設定,僅添加自動除幀的功能,
測試筆記:SVP最新測試版參數beta script 20171021之前所提供之腳本並不相容,
不過測試版參數將於20171028後提供之腳本均內含 SVP 4 Decimate。


由於SVP更新有可能會把腳本改回原版, 所以在SVP更新後要記得再修改一次。
使用前要先備份原始檔案,如有異常請回復至官方設定。

安裝步驟:

1.下載自動除幀腳本

        SVP 4 Decimate_Lite_v0.5 (Update: 2018-09-05 )
        https://goo.gl/pgQrzP

*此腳本內包含
neuron2 製作的 decomb524
                (http://avisynth.nl/index.php/Decomb)
poodle 製作的 decomb_5.2.4_x64
                (https://sites.google.com/site/avisynth64bitplugin/download)


2. 將壓縮檔內的檔案放入SVP路徑中對應的相關資料夾內,並重啟 SVP 4 Manager。


3. 至使用者定義選項增加一項

進入SVP的設定標籤頁 - 使用者定義選項

標題:Decimate
指令碼名稱:analyse_main_decimate
選項範圍:FRC配置
允許值: 開啟或關閉

----------進階設定(初次使用)----------
允許值: 列表:0,1,-1
-----------------------------------------------


4. 修改 SVP 4 Manager 內的 ff_add 設定  [使用 mpv player 者可略過此部分]

進入SVP的設定標籤頁 - 所有設定

SVP 管理器和FRC 引擎綜合選項
> frc
>> prefetch
>>>ff_add 填入 特定數字 (稍後說明如何測試出數字大小,在不同電腦的數值會有所不同)





5. 動手找出合適的ff_add數值   [使用 mpv player 者可略過此部分]

以下簡易方法僅適用於 30fps 降至 24fps , 25fps目前只能靠肉眼判斷

將使用者定義選項中的 Decimate,選擇 -1


然後找個原生24fps影片被以重複幀的錯誤方式壓成30fps的影片,(EX:巴哈動畫瘋)
如果找不到,下方也提供了一個以重複幀方式將23.976fps轉成29.970fps的測試影片,
撥放影片時,撥放器左上角會顯示一串數字,
逐步增加 ff_add 值,直到紅框處均大於 0.00,(有時最後會跳回 0.00 ,表示還不夠,需要再加)
最後再 +1 ~ +3 ,這樣就找到適合這台電腦的 ff_add 值了。
此項似乎與配備及影片有關連,如果方便的話,麻煩回報一下使用的CPU 及 ff_add值(最低值 + 緩衝值) ,謝謝




當然,也可以直接無腦設 35,但 ff_add 越高,ffdshow需要越多時間緩衝,跳轉時需要等得越久。


6. 將 Decimate 設定換為 1 或 開啟


Decimate:
false 關閉
true  開啟,等同於1
0      關閉
1      使用Decomb內的decimate除幀,可以將25/29.97/30fps影片除成23.976/24fps
-1     使用Decomb內的decimate除幀(Debug模式)



此腳本特點:

1. 支援Directshow播放器,並且支援Directshow播放器下的演示模式(除幀 vs. 除幀後再補幀)

2. 支援mpv player *2,演示模式為 除幀 vs. 除幀後再補幀

3. 腳本會檢查來源FPS,進而挑選適合的刪幀模式,
    影片FPS < 24.05 或 > 30.05 時,不進行刪幀處理,
    29.95 < 影片FPS < 30.05 時,進行刪幀處理,5幀中刪除變化差異最小的1幀,
    24.95 < 影片FPS < 25.05 時,進行刪幀處理,刪幀至23.976fps,*1 *2 
    此外,均不進行刪幀處理。

*1  目前腳本對於25fps影片是有作用的,但部分25fps影片即時除幀所需設定ff_add尚無簡易方法尋找,只能依靠眼睛判斷,不太容易。

*2  由於mpv player對於 25fps -> 24fps 及時除幀的效果不佳,已於 v0.3 版本中移除 25fps -> 24fps 的功能


已知BUG:
mpv player使用演示模式播放HDR影片,會喪失HDR效果。
由於目前只在此特定狀況下發生問題,目前解決辦法不夠完美(關閉註解),因此不進行腳本修改。

*** 原生25/29.97/30fps的影片會被誤刪,需特別注意 ***

由於此腳本無法判斷是否為原生25/29.97/30fps影片,
因此開啟Decimate選項後,會有誤刪的情形發生,因此這部分需要自行判斷,
大多 日本手繪動畫電影 為 原生 23.976fps 居多,電視節目 則以 原生 29.970fps 為大宗,
原生25.000fps的我就不是很清楚,只知道是PAL地區常見格式...

另外,
這種方式除幀其實並不完全正確,在一拍三這類畫面下依然會判斷錯誤,即使是先前提到搭配BFRC的方法也是,不過在許多時候這種方法可以除得很好,看起來流暢許多。

巴哈動畫瘋有部分影片不適合使用此方法除幀,因為被以不可回復性的方式轉成30fps(Blend),
換句話說,就是被壓成 "真的30fps" 幀幀皆不同,而不是以重複幀的方式轉成30fps,
這類影片就很難無法回復成原本的24fps了,Blend去除不容易。 e.g., 為美好的世界獻上祝福


以重複幀方式將23.976fps轉成29.970fps的測試影片,可以用於測試以上除幀效果
https://goo.gl/DVYUov


安裝影片&效果



ff_add 設定紀錄 ( 30fps > 24fps @ 60Hz)

Intel   G4600         2C4T    3.60Ghz         ,ff_add = 8 (7+1)
Intel   i7-7700K     4C8T    4.60Ghz(OC) ,ff_add = 6 (5+1)
Intel   E3-1230 v3 4C8T    3.30Ghz         ,ff_add = 5 (4+1) [感謝 韩天雷 網友回報]
AMD  R5-1600      6C12T  3.70Ghz(OC) ,ff_add = 5 (4+1) [DDR4-2933 8G*2,感謝 Akitsuki Yamato 網友回報]



ff_add 設定紀錄 ( 25fps > 24fps @ 60Hz)

Intel   i7-7700K     4C8T    4.60Ghz(OC) ,ff_add = 23 (20+3)
Intel   E3-1230 v3 4C8T    3.30Ghz         ,ff_add = 23 (20+3) [感謝 韩天雷 網友回報]
AMD  R5-1600      6C12T  3.70Ghz(OC) ,ff_add = 22 (19+3) [DDR4-2933 8G*2,感謝 Akitsuki Yamato 網友回報]



目前 25fps 降至 24fps 所需的ff_add不是很好找,
測試過程中發現在60Hz比72Hz好找一點,因為ff_add不足時,不連貫會更明顯,
如果不需要25fps降至 24fps的話,像是只觀看巴哈動畫瘋,ff_add並不用設這麼高,
ff_add設的太高,除了延遲會大幅增加,甚至播放器是有可能會崩潰的。
如有測試需求,可以使用這影片測試 https://youtu.be/BugI_Q1HLak


SVP 4 Decimate_Full_v0.3
目前暫時不提供

*此腳本內使用了
neuron2 製作的 decomb524
                (http://avisynth.nl/index.php/Decomb)
poodle 製作的 decomb_5.2.4_x64
                (https://sites.google.com/site/avisynth64bitplugin/download)
pinterf 製作的 TIVTC v1.0.9
                (https://github.com/pinterf/TIVTC/releases)


Full版包含了Lite版的Decimate,並且多新增一種使用TIVTC的處理方式,
TIVTC的效率比Decomb好,而且判斷似乎也更好,
但如果使用TIVTC的話,ff_add需要大幅增加,造成跳轉時停頓時間大幅增加,
所以Lite版才會選用Decomb來處理,
實際上可以只用Lite版,Full版是為了測試所寫的腳本,
為了方便維護,兩份腳本共用部分文件。


標題:TIVTC
指令碼名稱:analyse_main_tivtc
選項範圍:FRC配置
允許值: 開啟或關閉

----------進階設定(可略)----------
允許值: 列表:0,1,-1
----------------------------------------

TIVTC:
false 關閉
true  開啟,等同於1
0     關閉
1     使用TIVTC內的Tdecimate除幀,可以自動將特定fps影片除成23.976/24fps
-1    使用TIVTC內的Tdecimate除幀(Debug模式)

若同時開啟Decimate及TIVTC的話,預設處理方式是皆無效。





2017-10-29

更新內容
2017-10-30 更新腳本 SVP 4 Decimate_Lite_v0.3
                   簡化Vapoursynth腳本
                   修正mpv player演示模式
                   mpv player演示模式添加文字描述 (Source & Smooth)
                   移除mpv player 25fps -> 24fps之功能 (因為此功能有瑕疵)
2017-10-30 添加部分巴哈動畫瘋影片說明。
2018-05-08 更新腳本 SVP 4 Decimate_Lite_v0.4
                   合併至 20180507 SVP 4 Pro 腳本。
2018-09-05 更新腳本 SVP 4 Decimate_Lite_v0.5
                   合併至 20180811 SVP 4 Pro 腳本。
2018-10-14 添加一項已知BUG。

20 則留言:

  1. 回報的部分直接來這帖回好了,不然那邊好雜XD
    R5 1600@3.7 DDR4-2933(17-17-17-36) 8G*2
    25fps->24fps
    ff_add 16 此為逐幀檢查之最低值,保險的話可增1~2

    回覆刪除
    回覆
    1. 感謝您的數據
      很好奇怎麼逐幀檢查的?
      邊播邊錄螢幕,然後逐逐看錄出來的有無不流暢?

      刪除
    2. 我是用MPC-HC
      所以使用單格步進功能,預設好像是Ctrl+Right Arrow,我不確定我有沒有改過。
      一格一格檢查有無重複幀,在約莫1秒多內。
      Pot的話好像是D跟F。

      刪除
    3. 阿哩 剛剛居然黑頻了,
      RAM的時序可能要在調一下 可以先忽略。

      刪除
    4. ff_add的部分可能要麻煩您在重測一下,
      因為剛發現這與螢幕更新率丶撥放軟體有關,
      30->24fps
      MPC-BEx64 71.928Hz ff_add = 4 (3+1)
      MPC-BEx64 59.940Hz ff_add = 6 (5+1)
      MPC-BEx86 59.940Hz ff_add = 5 (4+1)

      25->24fps
      MPC-BEx64 71.928Hz ff_add = 20 (18+2)
      MPC-BEx64 59.940Hz ff_add = 22 (20+2)
      如果方便的話,可以重以MPC-BEx64 59.940Hz做測試嗎? 感謝

      刪除
    5. 我都一起提供好了
      以下詳細版本號為
      MPC-BE x64 1.51 build 2548 beta
      MPC-BE x86 1.51 build 2985

      30->24fps
      x64 71.928Hz ff_add = 1 (真的是1... 保險的話再多+1 以下同理)
      x64 59.940Hz ff_add = 3
      x86 71.928Hz ff_add = 1
      x86 59.940Hz ff_add = 4

      25->24fps
      x64 71.928Hz ff_add = 16
      x64 59.940Hz ff_add = 19
      x86 71.928Hz ff_add = 16
      x86 59.940Hz ff_add = 19

      電腦上面現在有7種版本的播放器,想測甚麼都來(X
      除了VLC跟WMP不行。

      刪除
    6. 對了,忘記把使用的補幀參數放上來了。
      https://i.imgur.com/ZMu2oVg.png

      你的手繪動畫參數部分沒有套用。

      刪除
    7. ...
      我又犯傻了,上面的都是720p
      1080p的等等測。

      刪除
    8. 感謝您的測試,
      不好意思,可以麻煩提供成 ff_add = X(最低值 + 緩衝值) 這種表示方式嗎? 非常感謝。
      電腦重灌好了? 真快呢

      刪除
    9. MPC-BE x64 1.51 build 2548 beta
      MPC-BE x86 1.51 build 2985
      720p片源
      參數: https://i.imgur.com/ZMu2oVg.png

      30->24fps
      x64 71.928Hz ff_add = 2 (1+1)
      x64 59.940Hz ff_add = 4 (3+1)
      x86 71.928Hz ff_add = 2 (1+1)
      x86 59.940Hz ff_add = 5 (4+1)

      25->24fps
      x64 71.928Hz ff_add = 18 (16+2)
      x64 59.940Hz ff_add = 21 (19+2)
      x86 71.928Hz ff_add = 18 (16+2)
      x86 59.940Hz ff_add = 21 (19+2)
      ----------------------------------------------
      1080p片源
      參數: https://i.imgur.com/ZMu2oVg.png

      x64 71.928Hz ff_add = 2 (1+1)
      x64 59.940Hz ff_add = 4 (3+1)
      x86 71.928Hz ff_add = 2 (1+1)
      x86 59.940Hz ff_add = 4 (3+1)

      25->24fps
      x64 71.928Hz ff_add = 17 (15+2)
      x64 59.940Hz ff_add = 20 (18+2)
      x86 71.928Hz ff_add = 17 (15+2)
      x86 59.940Hz ff_add = 21 (19+2)


      現在灌很快拉,因為有備份的習慣,
      本來預計星期四,剛好今天偷到閒就解決個XD

      刪除
  2. 30->24fps
    x64 71.928Hz ff_add = 1 (看來解析度差異不大,還以為是因為720p所以能到1。)
    x64 59.940Hz ff_add = 3
    x86 71.928Hz ff_add = 1
    x86 59.940Hz ff_add = 3

    25->24fps
    x64 71.928Hz ff_add = 15 (神奇,1080p反而低了些,不過正常使用下+2應該就穩了,誤差內。)
    x64 59.940Hz ff_add = 18
    x86 71.928Hz ff_add = 15
    x86 59.940Hz ff_add = 19

    都比720p低了些,覺得有趣,這次1080p的片源都是你上面提供的,
    參數照常,然後只有x86有時測會崩潰。
    雖然參數可能用的跟你不相同,不過我這樣設應該算法相較嚴格些,
    還是能做為參考。

    回覆刪除
    回覆
    1. 嗯...
      倒沒想過720p的要求會比1080p略高,不過還好只差不到1,
      那這篇內文中的緩衝值可能要改成 +2 +3 較妥當,

      這SVP參數看起來真兇猛,日常應該是不用開到這麼誇張啦。
      非常感謝您的測試,馬上更新~

      刪除
  3. 关于原生25.000帧,大陆这边Bilibili弹幕网站可以遇到转换为25.000帧的动漫
    这种情况下AMD Fluid Motion由于不支持25帧无法工作,用SVP插帧就会出现有缺陷的效果
    不过我一般都习惯收23.976帧的BDRIP开启AFM插帧看XD

    回覆刪除
    回覆
    1. 不論是使用AMD的Fluid Motion丶SVP或是其餘補幀方式,一定都會有某些缺陷,這是無可避免的。

      25.000fps看是哪一種情況,
      如果是每25幀重複1幀的狀況,是可以藉由刪除重複幀來將影片轉回24.000fps,
      然後再交給BlueskyFRC來轉換成高幀率影片,原理與此篇相同。

      若是原生25.000fps,也不是不行,但會有一些瑕疵,像是跳過某些幀或是有幀混和的情形。

      刪除
  4. 您好
    目前觀看29.97幀數的影片發生補幀異常,造成不流暢。
    我是使用mpc-be+svp3.1.6版本,請問此方法適用嗎?
    謝謝

    回覆刪除
    回覆
    1. 需要片源以及您原先使用參數才好判斷問題。
      另外麻煩請檢查一下是否為CPU或顯示卡造成掉幀。

      刪除
    2. 這篇是一些特殊狀況的處理方式,需要看一下片源狀況是否符合此狀況。

      刪除
    3. 啊,沒有仔細看
      這篇用的程式碼是 SVP 4 所使用的,SVP 3 並不適用。Sorry

      刪除
  5. 新的影片都改成24FPS了,舊的影片還是一樣30FPS

    回覆刪除

熱門文章