作者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的选项,小弟还没测试,等有空的时候在测看看@@
----------------------------------
如果文章内容有错误的地方,烦请各位帮我指出.
另外有版友也使用Reclock的话,可以po一下使用经验罗...
--
※ 发信站: 批踢踢实业坊(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)
1F:推 xvid:记得移除移不乾净 03/15 19:09
※ 编辑: web2312 来自: 114.32.133.33 (03/16 23:01)
2F:推 AlanLive:可以简单的说一下用这个的好处是什麽吗? 画质变好? 03/18 07:02
3F:→ web2312:去除judder(顿感) ->某些影格被省略或重复就会造成 03/18 09:52
4F:→ web2312:电脑硬体的一些时钟并没有精确对准影片 所以会造成不同步 03/18 09:53
5F:→ web2312:抱歉这个坑可能要周末才能补,最近变得有点忙,没时间写 03/22 23:40
6F:→ 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)
7F:推 AlanLive: 我用这程式让影片调用 WASAPI 发声,但居然可以调整音量 04/28 06:44
8F:→ AlanLive:记得 WASAPI 应该是不受系统音量控制的,虽然没差,但还 04/28 06:44
9F:→ AlanLive:是想问一下,播放软体是 Potplayer with ffdshow 04/28 06:45
10F:→ web2312:作业系统是? 05/08 11:35
※ 编辑: web2312 来自: 114.32.133.33 (05/08 11:42)
11F:→ 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)