上圖即為播放器播放的流程,
當開啟影片檔案時,
會先經過File Sourse(來源濾鏡)讀取檔案,
之後將內容傳給Splitter(分離器)將視訊丶音訊丶字幕分離,
分離之後的視訊丶音訊,分別交給對應的Video/Audio Decoder(視訊/音訊解碼器)解碼,
解碼完的視訊丶音訊,可以交由其餘Video/Audio Filter(視訊/音訊濾鏡)進行處理,
視訊/音訊濾鏡有很多,可以進行許多處理(例:銳化丶降噪丶升頻丶濾波丶補幀等...),
接著移交給各自的Renderer(渲染器)處理後,
最後輸出至對應的設備(視訊/字幕交給顯示卡輸出,音訊交給音效卡輸出)。
從上圖可以看到資料從原始檔案到最終輸出經過了許多濾鏡,
然而經過這麼多濾鏡,最終輸出的正確性會不會有影響呢?
很不幸地,這的確是一個大問題,
不同濾鏡的輸入丶內部處理丶輸出精度都有其限制,導致結果大不相同
舉例來說:
計算一個半徑為1.23456789 m的圓面積。
已知圓周率(π)是一個無理數(小數點後有無限位數),約為3.14159265
圓面積 = 半徑 * 半徑 * 圓周率
- 輸入精度為小數點後2位,內部處理精度為小數點後2位,輸出精度為小數點後2位
- 1.23 m * 1.23 m = 1.51 m^2
- 1.51 m^2 * 3.14 = 4.74 m^2
- 輸入精度為小數點後2位,內部處理精度為小數點後8位,輸出精度為小數點後2位
- 1.23 m * 1.23 m = 1.51290000 m^2
- 1.51290000 m^2 * 3.14 = 4.75 m^2
- 輸入精度為小數點後4位,內部處理精度為小數點後8位,輸出精度為小數點後2位
- 1.2346 m * 1.2346 m = 1.52423716 m^2
- 1.52423716 m^2 * 3.1416 = 4.79 m^2
- 正確答案
- 4.78828318 m^2
現在多數影片儲存方式多為YUV,
而最終輸出格式多為RGB(電腦螢幕),
所以勢必要轉換色彩空間,
以下為不同色深的YUV轉換到RGB24所能顯示色彩數量測試
goldenhige.cocolog-nifty.com/blog/2012/03/yuv8bit10bit-97.html
可以看到常見的8bit影片在8bit螢幕上只能顯示不到25%的顏色
僅僅是單純的YUV - 8bit轉換至RGB24就有如此之大的誤差,
高品質濾鏡的重要性在此體現,透過各種演算法盡可能地降低視覺失真,
所以需要更高品質的濾鏡來取代內建濾鏡,來達到更佳的視覺效果。
來比較一下下面幾張圖,
這幾張圖都是由同一個影片,同一個影格所擷取而成,
建議點圖放大比較。
原始:
推薦設置:(與原始相當接近,甚至色帶表現略勝)
Potplayer預設:(臉部顏色明顯偏綠,色帶較嚴重)
其他:(皆有些許問題)
除此之外,
使用此方案的各組件均由不同製作者製作出來的,
在相容性並不能保證絕對沒問題,
假設每項組件穩定性都有99%,
從 播放器 > 來源濾鏡 > 分離器 > 視訊解碼器 > 視訊濾鏡 > 視訊渲染器 > 顯示卡驅動
> 音訊解碼器 > 音訊濾鏡 > 音訊渲染器 > 音效卡驅動
> 字幕渲染器
最終穩定性只有(99%)^12 = 88.638%,
出錯機率還是不低的,
即使兩台電腦設定一模一樣,還是有可能異常,
原因不明,但有時候改個設定丶換個播放器就正常了,
使用此方案麻煩請先了解其風險,並有一定除錯能力,再繼續操作,謝謝。
這樣有稍微了解一點點了嗎?
還很混亂的話沒關係,
以後可以回來多看幾次,不要緊。
接下來的幾篇將簡單說明MPC-BE丶MPC-HC丶PotPlayer的推薦設置,
並教學如何套用濾鏡在播放器上。
敬請期待~
我們下回見 :)
nice
回覆刪除