[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!

(本文發表於mobile01網站,如要引用請引述來源)

其實我一直對於從一些日系高階電視的影片動態補償(增加影片framerate)一直蠻有興趣,後來也花了
大錢買日本水貨電視. 不過我心裏一直在想, 這個功能難道用PC運算做不到嗎? 在我沒事爬文的時候
突然爬到這一篇:
http://forums.guru3d.com/showthread.php?t=288017
後來著手試了一下, 的確是有明顯的動作平滑效果!! 不過因為討論都是英文,所以我做了個整理並
抓圖讓大家能夠更清楚.

本篇是參考這一篇:
http://forums.guru3d.com/showpost.php?p=3557786&postcount=199
寫的, 感謝作者的整理~

一.事前準備:
1.如果可以的話,儘量準備一個乾淨的, 沒有安裝codec的環境.(當然如果你很熟悉codec的操作那就隨便)

2.下載下面的軟體:
AViSynth: 這邊是使用258版
http://sourceforge.net/projects/avisynth2/

AviSynth Multi-Thread支援:
借用一下guru3d討論串的連結, 對應AviSynth 258版.
http://www.mediafire.com/file/nnbngfccnj2/avisynth258MT.7z

ffdshow最新版: 這個請各位自己google下載.

防止ffdshow當掉的dll:不知道為什麼沒有這個dll,當AviSynth跟ffdshow一起使用的話,ffdshow會當掉.
同樣借用guru3d討論串的連結:
http://www.megaupload.com/?d=SP5FE2KG

楨數加倍的plugin mvtools2
http://avisynth.org.ru/mvtools/mvtools2.html#download

(Optional)CoreAVC: 調用CoreAVC是為了使用這個codec的硬解功能,讓CPU的效能可以完全用來處理
畫面楨數加倍的工作. 不過可有可無~ (ffdshow的h.264 codec好像也有硬解功能,不過我沒試過)

Media Player Classic – Home Cinema (MPC HC):
http://mpc-hc.sourceforge.net/

二.安裝軟體:
安裝軟體似乎有一定順序, 所以請務必用下列順序安裝!
1.安裝AviSynth

2.安裝AviSynth Multi-Thread支援:
將下載下來的檔案解開,把plugins目錄裏的檔案拷貝到AviSynth的安裝目錄中的plugins目錄並覆蓋過去!
將avisynth.dll拷貝到Windows安裝目錄\system32\目錄並覆蓋過去. (由於我沒有64位元Windows,依guru3d
的討論串,是copy到SysWOW64目錄中,我沒有驗證過).

3.將mvtools2解開,並將mvtools2.dll拷貝到AviSynth的安裝目錄中的plugins目錄.

4.安裝ffdshow, 並在安裝時「取消勾選」VFW介面,並把所有AviSynth的選項勾起來,如下圖所示:
[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!
安裝完畢後勾選「執行視訊解碼器組態」
[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!


二.設定組態:
1.設定ffdshow的組態:
a.選擇左邊目錄的「輸出」部份,勾選「高品質的YV12到RGB轉換」
[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!
b.將左邊目錄的AviSynth打勾,並調整以下項目:
取消勾選 「加入ffdshow視訊來源.
輸入空間色彩只勾選YV12,其它取消勾選.
勾選「向前/向後緩衝」
加入楨數加倍的script, 在底下的空白區貼上下面的程式碼:

SetMemoryMax(1280)
SetMTMode(5,4)
ffdShow_source()
SetMTMode(2)
super=MSuper(pel=1, hpad=0, vpad=0)
backward_1=MAnalyse(super, chroma=false, isb=true, blksize=16, blksizev=16, searchparam=3, plevel=0, search=3, badrange=(-24))
forward_1=MAnalyse(super, chroma=false, isb=false, blksize=16, blksizev=16, searchparam=3, plevel=0, search=3, badrange=(-24))
backward_2 = MRecalculate(super, chroma=false, backward_1, blksize=8, blksizev=8, searchparam=0, search=3)
forward_2 = MRecalculate(super, chroma=false, forward_1, blksize=8, blksizev=8, searchparam=0, search=3)
MBlockFps(super, backward_2, forward_2, num=FramerateNumerator(last)*2, den=FramerateDenominator(last)*1, mode=0)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!
按下套用,確認.

6.將防止ffdshow當掉的dll的壓縮檔解開,並將裏面兩個.dll(Msvcp71.dll及msvcr71.dll)拷貝到Windows
安裝目錄下的system32目錄或SysWOW64目錄.像我公司的電腦因為有裝Visual Studio,所以原來就有這兩個
檔案. 不過我家裏的Windows7不拷貝這兩個檔案就會當掉....

7.(選擇性)設定使用CoreAVC作為解碼器(有裝CoreAVC才要做這個步驟)
a.打開ffdshow的組態畫面, 選擇編解碼器, 並在右邊的視窗找到H.264/AVC,並把解碼器設為「已停用」.
[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!
b.接著把右邊的畫面捲到最下面,有一個「未經處理視訊」,在解碼器這一欄選擇「all supported」.套用,確認.
[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!
c.打開MPC HC,選擇「檢視」->「設定選項」->「外部篩選器」,選「新增篩選器」加入CoreAVC Video Decoder,
並把CoreAVC Video Decoder設為「偏好」.(如果CoreAVC沒有在第一個位置,請選擇上移,移到第一個).
d.用MPC HC打開任何一個用h.264編碼的影片,Windows右下方的圖示應該會同時出現ffdshow跟CoreAVC的圖示.
[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!

三.播放測試:
1.執行MPC HC, 隨便打開一個h.264編碼的影片(其實只要是ffdshow能解的都可以,不過我們以h.264的影片做為標準
來測試).

2.選擇「檢視」把「統計列」勾選,底下會有一個「影格頻率」,如果成功的話會發現framerate(影格頻率)會變成原來
的一倍! 例如24fps的影片會變成48fps左右. 而原來是30fps的影片,會變成60fps左右. 另外CPU的使用率會衝得非常
高! 因為這個動態預測跟運算中間畫面的功能是完全由CPU來執行的.
[教學]用你的PC來達成高階電視才有的畫面動態補償功能!!

這個時候只要電腦不要太差,應該能明顯感受到畫面的移動變平順了(尤其是平移的畫面感覺特別明顯).

四.進階微調:
1.如果要固定更新率為60hz:
把AviSynth的script中的:
MBlockFps(super, backward_2, forward_2, num=FramerateNumerator(last)*2, den=FramerateDenominator(last)*1, mode=0)
改成
MBlockFps(super, backward_2, forward_2, num=60, den=1, mode=0)
其中的num=後面接的東西就是影格頻率的期望值, 例如想要有120hz的更新率, num=後面就改成120.
如果是要三倍framerate,num=後面就改成FramerateNumerator(last)*3.
以此類推.

2.變更ffdshow組態中,AviSynth的「向前/向後緩衝」數值.
這代表使用多少個畫面做內插運算的輸入,原本內定的數值是10/10, 可以試著改成0/10或0/24或其它數字看看.
另外因為這個方法會參考前後畫面來計算,所以會犧牲掉正常快轉或跳到某一個時間點的功能,變成畫面會怪怪的,
幾秒鐘之後才會正常.

3.如果使用四核或更多核心CPU:
把AviSynth的script中的 SetMTMode(5,4) 改成 SetMTMode(5,8) 或自行實驗數據.

4.畫面破碎(artifacts)
用這個方法會有一個問題,在某些動態畫面可能會有畫面破碎的問題.做一些微調可能有助於改善這個問題.
(我都沒試過,請自己試看看)
把MBlockFps參數最後一個的 mode=0 改成 mode=1 ,「可能」有助於改善畫面破碎的問題.
把MBlockFps參數 plevel=0 改成 plevel=2 會減少畫面破碎但是會減少動態平順度.
如果你的CPU還撐得住,把MBlockFps參數的 pel=1 改成 pel=2 會增加動態偵測的精確度, 不過會大量消耗CPU資源.

五.如果前面對你來說實在太困難....
已經有影片播放軟體叫Splash,「準備」加入這個功能了~(就是將來會有,現在還沒),如果真的上面講的東西
對你來說太困難,也許可以等到Splash Player把這個畫面動態補償功能加進來.
http://www.mirillis.com/splash.html

六.結論:
其實這個方法如果再研究一下,是可以把它套用在轉檔上, 讓轉出來的影片直接就是48fps或60fps了.
雖然這個利用PC做畫面動態補償還是有些問題, 不過能夠讓一些沒有這個功能的電視或投影機,多少能先感受
一下影片framerate倍增的威力. 如果有問題歡迎討論~謝謝~
好棒的教學文!!!

先收藏起來~ 慢慢研究~
好複雜...
有沒有一鑑安裝版呢???
不管怎樣...
先加入書簽
bluesystem wrote:
另外CPU的使用率會衝得非常高...(恕刪)


謝謝 bluesystem大......................

來試試看能否讓我的電視跛腳的動態補償功能得到救贖
記得以前WINDVD7就有加入類似功能
可以把24P電影變流暢
PC的優點是可以更新演算法,且CPU越強效果越好

但目前還是比不太上TV
因為PC螢幕要找到有120Hz輸入+顯示的LCD很難
如果只用60Hz搞補插,效果極其有限
那像我的電視本來就有240HZ這個功能,
那需要再做這個功能嗎?...

不過我想樓主大大的意思應該是可以關掉電視裡的動態補償功能,
然後再用CPU硬做出流順畫面吧..

總之先加五分先
SKAP wrote:
記得以前WINDVD7就有加入類似功能
可以把24P電影變流暢
PC的優點是可以更新演算法,且CPU越強效果越好

但目前還是比不太上TV
因為PC螢幕要找到有120Hz輸入+顯示的LCD很難
如果只用60Hz搞補插,效果極其有限


你講的WINDVD7的功能其實現在的播放軟體都有,
但是只限定在interlaced訊源,如果是網路上的影片
或是BD等progressive訊源是沒有用的. 我提的這
個方法所不管是interlaced或progressive的影片
都有效.

您可試看看, 24fps跟48fps的差別是絕對看得出來的.

當然, 直接用硬體來實作,效果一定會更好的, 不過可以
當成是體驗版,先讓大家看看效果.

我看過效果最好的動態畫面補償電視是SONY的, 他們
家的東西在影像處理方面還是比較強的! 不過價錢就....
與失敗為伍者,天天靠盃都是別人的錯。 與成功為伍者,天天跟失敗切磋直到不再出錯。
記得真平大為了完美呈現48hz或72hz的原汁原味

特地還搞了倍頻器

我是沒要啥120HZ或是240HZ

我也要電影感................

gkgk214 wrote:
那像我的電視本來就有240HZ這個功能,
那需要再做這個功能嗎?...

不過我想樓主大大的意思應該是可以關掉電視裡的動態補償功能,
然後再用CPU硬做出流順畫面吧..


冒眛請教一下是哪個牌子的電視? 不過有240HZ功能的電視應該都是最新的了吧?
相對來說效果應該是不錯~

我會建議你就照我的步驟試試看, 反正又不用錢~ 再跟電視本身的畫面動態內插
功能來比較看看也好.
與失敗為伍者,天天靠盃都是別人的錯。 與成功為伍者,天天跟失敗切磋直到不再出錯。
bluesystem wrote:
冒眛請教一下是哪個牌...(恕刪)


我的是vizio 的sv421xvt。
雖然被人家說是偽240HZ,不過我覺得和120HZ的比,看起來還是比較順a...

有空就來試試,電視硬體做出來的流暢感和CPU做出來的差在那裡好了..感恩a...
其實大大,那篇國外文章我之前有找到,只是全英文又太專業= = .... 我就先放棄了,
不過還好我後來有找到reclock這個軟體,雖然不太會用= =...

不過說到mpc-hc,這位大大的blog裡,2010年2月20日的那篇,
有講到sync renderer這東西,不過這東西是穩住FPS用的。讓他不會上下跳動。
http://tujiregza.blogbus.com/tag/%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/

這一篇也有寫

不過我是因為習慣用potplayer了,所以沒太研究mpc-hc,不過看來是值得來玩玩了
關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!