------ 文章開始 ------

 作者  web2312 ()                                              看板  AVEncode
 標題  [推薦] ReClock - 取得完美垂直同步的DirectShow Filter
 時間  Sun Mar 14 19:32:14 2010
───────────────────────────────────────


關於Reclock調整framerate後使用SPDIF去bitstream DTS音頻
由於無法resample,所以是透過掉封包(或重複)的方式來維持影音同步
根據官方的說法是不推薦使用,官方是建議以LPCM方式透過HDMI輸出
不過可惜我的n牌顯卡不支援+擴大機不支援HDMI音訊輸入
然而透過AC3 Re-encode又會破壞音質
(1.5mbps DTS 重編碼成 640kbps AC3 = =)
根據官方人員(James)在論壇上提到的說法是
"我這邊沒辦法使用,如果你可以使用,並察覺不出聲音的異常,那就好好享受吧,
至少那個選項就放在那裡(雖然是寫不建議)"





ReClock DirectShow Filter
----------------------------------
簡介
----------------------------------
ReClock Directshow Filter的用途是在於排除不流暢的影像播放效果,
例如在一台電腦或者連接至投影機或電視的電腦播放各種片源(AVI,
MKV, DVD, Blu-ray, etc). Reclock是一個DirectShow Filter,它將會
取代原先DirectSound音訊轉譯器的位置被呼叫使用.

主要是利用將視訊及音訊做適當加速或減速來與螢幕更新同步,
類似EVR-Sync的第一種方案,但目前EVR-Sync的開發還不是很成熟,
後來小弟陸續試出一些問題,未來幾天會將它更新在上次的EVR-Sync文章中.
根據doom9的mpc-hc官方團隊表示,EVR-Sync未來還有很大的改善及加強空間.
而Reclock的開發已經有8年了(2002年 first release),功能上更完善,
事實上Reclock除了拿來做垂直同步外,也有其他玩法,例如在XP下開KS(像foobar那樣)
或者將PAL規格的影片做處理在60hz規格的顯示器播出等等...
----------------------------------
作者網站
----------------------------------
ReClock - SlySoft Forum
http://forum.slysoft.com/forumdisplay.php?f=85
註:Google輸入Reclock搜尋到的http://reclock.free.fr/已停止更新,
   請移步至上述網址繼續關注Reclock的開發.
----------------------------------
下載
----------------------------------
目前最新版本為 1.8.6.7 (2010/3/24)
安裝檔
http://sandbox.slysoft.com/beta/SetupReClock1867.exe

Source code
http://oss.slysoft.com/ReClock/

----------------------------------
使用簡介
----------------------------------
首先安裝Reclock之後,在桌面上可以看到 "Configure ReClock",
那就是調整Reclock設定的地方.
接著簡單講一下可調整的部分

Audio settings頁面

Audio Interfaces to use for
PCM:           選擇PCM音訊的輸出介面,一般選擇DirectSound
               Kernel Streaming則可以繞過windows混音器,類似Win7的WASPI
               獨占模式,使用時注意,XP下的Wave音量控制將不作用,請記得
               將總音量開小一些
Bitstream:     串流直接輸出,例如將AC3/DTS等音訊直接經SPDIF送至擴大器
               做外部解碼,一般選擇WaveOut
Devices to use with
               這裡不用改,按照預設的通常會指定正確的音效裝置

Sound pre-buffer
Duration:      這個按照預設是500ms,可以試著將這個預先緩衝值調小,有助於
               減少播放開始時的聲音延遲. (指的是按播放後,聲音要稍等一下
               才會出現,這個值小弟是把它調成120ms,調太小的話會暴音)

PCM Output
Sampling Rate:    Quality:    這裡維持Same as input即可
Format:                       重新取樣的品質可以上調至Best Sinc Interpolation

Output mono sources to both front channels
如果音源是單聲道,就擴展至雙聲道,這個選項基本上不勾
Set matching speaker configuration
設定合適的聲道設定,開啟此項將自動控制聲道設定,例如你可以將windows驅動的
聲道數設定為5.1,播放時,Reclock會依據影片內容自動切換2.0/5.1,此將可避免
在5.1聲道設置下播放2.0聲道時輸出3.1的空白聲道,導致無法處理其他聲道的情況,
例如將2.0擴展至所有喇叭的情況. 如果不是使用5.1以上聲道喇叭,此選項一般不勾.
Time Streching:
時間延展,當改變聲音速率時,做時間延展來維持原pitch,個人是不勾,因為加速減速的
幅度非常小的情況下不太需要.
Use AC-3 encoding:
將輸入Reclock的PCM音訊再次轉碼為AC3再以Spdif做bitstream輸出.
通常是當遇到5.1ch的AAC音訊時,擴大機不支援AAC解碼,此時可以先由電腦解碼為PCM再
即時編碼為AC3輸出擴大機讓他吃

General
Accept bitstream formats
當使用SPDIF時,請勾此項.

Video settings頁面
Framerate determination 左側media files勾選Use built-in...
將Use DirectShow...取消勾選,下方Assume framerate when not found 選擇29.970fps
右邊DVD將Use built-in...打勾,下方Assume framerate when not found 選擇29.970fps
要注意的是,General的第一個選項必須勾選,第二個選項必須取消勾選.
第二個選項勾選的話,所測出來的螢幕更新率通常不會精準,將影響後續的微調導致不同步

Advanced settings頁面
將所有選項取消勾選,包括Force...(Recommended)那一個,因為它會在任何播放影片的
程式跳出要不要使用Reclock的畫面.

設定完了
----------------------------------
接著來講一下實際使用的部分,首先推薦使用MPC-HC,因為它可以檢視Renderer的詳細資訊.
調用Reclock的方法是,將播放器的音訊轉譯器(Audio Renderer)選成Reclock即可.

接著將螢幕更新率調整為影片速率的整數倍(例如一般動畫23.976fps就使用48或72hz
的螢幕更新率,如果不清楚影片速率可以在播放時,開啟Reclock的資訊方塊查看.)

開始播放時,可以看到右下角常駐列會出現一個時鐘,點它將它開啟.
http://img532.imageshack.us/img532/4562/28995114.jpg
右邊Video hardware的部分可以看到實際的螢幕更新率,雖然windows顯示為48hz,
但實際上通常不是剛好在48.000hz,這張圖顯示為47.952hz是小弟利用nvidia驅動
的自訂計時去調整出來的,算是最接近23.976fps的倍數
(實際上可能是47.952095751...所以還是要使用Reclock來做細部微調)
(要調整至真正的24000/1001的倍數恐怕不太可能,這就像開車時
 請他以時速50.25000000000000公里的速度駕駛一樣的困難)

接著請設定為如上面那張圖的設置即可@@
Slave...那個如果打開的話 會導致不同步的情況

然後我們來看看開了Reclock跟沒開的差別吧@@
為了突顯Reclock調整的效果,小弟使用72.031hz的螢幕更新率(23.976*3=71.928)

MPC-HC使用EVR-CP的影像繪製器,在播放時按右鍵/繪製器設定/重新設定/
重新設定為最佳的繪製器設定,調整後就可以開始測試.

播放時,按Ctrl+J可以顯示renderer的資訊.

未使用Reclock(Frame rate 23.976 @ 72.031hz)
http://img169.imageshack.us/img169/8603/10363932.jpg
可以看到綠線從上往下掉,說明了螢幕更新率過快,當綠線(Sync offset)到達紅線時,
就會Repeat 1個frame.

使用Reclock  (Frame rate 23.976 加速至 72.031/3 @ 72.031hz)
http://img169.imageshack.us/img169/741/42647248.jpg
Perfect sync,綠線一直維持平穩,實際上過了一個小時在回來看也只掉了非常小的幅度.
意思是整個playback過程中,完全不會drop掉任何frame也不會重複任何frame.

Reclock作用中的資訊方塊
http://img18.imageshack.us/img18/1372/62218725.jpg

可以注意到Media adaptation的地方是寫media speed changed to 24.000fps
但實際上是改成72.031 / 3,也就是24.010 fps

意思是我們只需要將螢幕更新率儘可能的靠近23.976的倍數
然後Reclock會將影片速率調整至適合該更新率的速率,
無論是47.955或47.936都會自動調整影片速率.
因此上面那個訊息理解成影片速率調整至24fps左右,請將螢幕更新率調整至
接近24fps的整數倍會比較好.
當然能調整至47.952或71.928是最好的,這樣reclock調整的幅度就會小一些,並且
可以得到幾乎原汁原味的24p playback.

另外對於使用Kernel Streaming(XP)或者WASPI(Vista/Win7)的使用者,由於在這個
情況下,MPC-HC的音量控制不起作用,所以在播放影片時即時調整音量將會很不方便,
小弟推薦使用Volumouse這個軟體,至於他是做什麼的,請看下圖
http://img63.imageshack.us/img63/6651/86863480.jpg
(看起來還真有點像是電視的播放畫面XD...)
可以設定按鍵組合來調整系統音量,我設定的是Ctrl+滑鼠滾輪
(在XP下可以指定要調整總音量,MIDI,WAVE等等...)



Volumouse官網
http://www.nirsoft.net/utils/volumouse.html
下載網址
http://www.nirsoft.net/utils/volumouse_setup.exe

除了播放影片外,玩全螢幕遊戲時,要即時調整音量也是OK的,這個軟體在任何情況下
都可以作用.

----------------------------------
測試狀況(2010/05/29)
----------------------------------
1.不知道是什麼問題,小弟 AC3 re-encode做5.1 SPDIF output時
  會出現斷音的問題.
2.使用除了overlay,VMR7(無編譯),VMR7以外的繪製器配合reclock並開啟MPC-HC內部
  字幕器的話,播放過程會有tearing的現象.
3.如果播放24fps影片而螢幕不支援24/48/72HZ的話,使用60HZ也可以,雖然沒辦法
  將每個frame規則的1:1直接輸出,reclock還是可以做到穩定格率(不掉格)的狀況.
4.win7 64bit的使用者,請安裝x86的MPC-HC再裝reclock,不然會抓不到reclock的
  裝置.
5.Reclock對部分影片的fps判斷不正確,例如極少部分的影片可能會標成29.969fps
  實際上是29.970fps的playback,如此會造成Reclock處理的錯誤而無法完全sync,
  可以在Video settings頁面將frame rate determination的Media files的Use
  DirectShow unchecked,然後assumed frame rate when not found選擇為29.970
  fps,使用built-in estimator比Directshow要準確.這一點我花了1個小時跑
  兩次各24分鐘的影片來測試,一次使用built-in來分析fps,另一次使用directshow,
  結果directshow分析fps做的sync,影片播放24分鐘內的同步offset偏移的比使用
  built-in的要大許多.
  PS:設定when not found為29.970fps可以避免影片一開始播放約1-2秒時,內建fps
  偵測器偵測到fps後,稍微頓一下的情況.(也就是一開始在偵測前就先默認23.976/
  29.970fps,然後在由內部偵測器做更進一步的fps偵測,例如由23.976修正至
  23.9760239760...)   (2010/5/29-updated)



目前主要問題是,開MPC-HC內部字幕器+Reclock並使用EVR(custom present)的話,會有
撕裂的現象,暫時替代方式是使用ffdshow字幕器就不會了(使用KMP內部字幕器亦會撕裂)
第二個問題是同時使用reclock並做SPDIF數位音訊輸出,有幾個方法,最好的方法仍是
直接5.1 LPCM 以HDMI輸出,不然就是得用re-encode到AC3的方式,目前小弟無法使用
HDMI輸出LPCM音訊,因為擴大機沒有HDMI輸入,而且也不支援類比6聲道輸入.
Reclock中直接做SPDIF的選項,小弟還沒測試,等有空的時候在測看看@@







--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.133.33
※ 編輯: web2312         來自: 114.32.133.33        (03/14 20:46)
※ 編輯: web2312         來自: 114.32.133.33        (03/14 21:08)
推 xvid:記得移除移不乾淨                                           03/15 19:09
※ 編輯: web2312         來自: 114.32.133.33        (03/16 23:01)
推 AlanLive:可以簡單的說一下用這個的好處是什麼嗎? 畫質變好?        03/18 07:02
→ web2312:去除judder(頓感) ->某些影格被省略或重複就會造成         03/18 09:52
→ web2312:電腦硬體的一些時鐘並沒有精確對準影片 所以會造成不同步   03/18 09:53
→ web2312:抱歉這個坑可能要週末才能補,最近變得有點忙,沒時間寫      03/22 23:40
→ web2312:report更新了...@@                                       03/22 23:40
※ 編輯: web2312         來自: 114.32.133.33        (03/31 19:00)
※ 編輯: web2312         來自: 114.32.133.33        (03/31 19:15)
※ 編輯: web2312         來自: 114.32.133.33        (03/31 19:23)
※ 編輯: web2312         來自: 114.32.133.33        (04/01 21:08)
推 AlanLive: 我用這程式讓影片調用 WASAPI 發聲,但居然可以調整音量  04/28 06:44
→ AlanLive:記得 WASAPI 應該是不受系統音量控制的,雖然沒差,但還   04/28 06:44
→ AlanLive:是想問一下,播放軟體是 Potplayer with ffdshow          04/28 06:45
→ web2312:作業系統是?                                             05/08 11:35
※ 編輯: web2312         來自: 114.32.133.33        (05/08 11:42)
→ web2312:調整音量指的是MPC-HC的還是音量控制面版上的?             05/08 11:43
※ 編輯: web2312         來自: 114.32.133.33        (05/08 11:43)
※ 編輯: web2312         來自: 114.32.133.33        (05/29 12:27)
※ 編輯: web2312         來自: 114.32.133.33        (05/29 12:28)


------ 文章結尾 ------

[複製網址] [開新視窗] [加到我的最愛] [檢舉短網址] [QR條碼]



服務條款 - 完全手冊 - 加入會員(免費) - 聯絡偶們 -

© PPT.cc