纯手工搭建基于MPC-HC的简易播放平台
现在有很多解码用的Package,比如完美解码。这种Package对于懒人真的是很方便,装一个基本上就万事无忧了。不过有些情况下我们需要自己手动搭建而不是使用这种Package,比如压制人员。
很多朋友曾经问过我,如果要手动搭建该怎么做。说实话,现在的几款主流播放器,自己都内置了很多滤镜,基本做到了不需要安装任何解码器就能通吃所有格式了。不过这篇文并非完全使用MPC-HC的内部滤镜,而是和安装第三方系统滤镜相结合。
本文仅针对需要手动搭建播放平台的解码用户,不考虑编码情况。
准备工作
主播放器:
Media Player Classic – Homecinema 1.3.1249
(http://mpc-hc.sourceforge.net)
视频滤镜:
Haali Media Splitter 1.9.42.1
(http://www.free-codecs.com/download/Haali_Matroska_Splitter.htm)
FFDShow
(http://sourceforge.net/projects/ffdshow-tryout/files/)
Real Alternative 1.90 Lite
(http://www.free-codecs.com/download/Real_Alternative.htm)
音频滤镜:
AC3Filter 1.63b
(http://www.free-codecs.com/download/AC3_Filter.htm)
CoreAAC 1.2.0.575 rev.3
(http://www.free-codecs.com/download/CoreAAC_Directshow_filter.htm)
CoreFLAC 0.4
(http://www.free-codecs.com/download/CoreFLAC_Decoder_Encoder.htm)
CoreVorbis 1.1.0.79
(http://www.free-codecs.com/download/CoreVorbis.htm)
其他工具:
AVISynth 2.5.8
(http://www.free-codecs.com/download/AviSynth.htm)
DirectVobSub(VSFilter)2.39
(http://www.codecs.com/download/DirectVobSub.htm)
方案
[分离器]:使用Haali分离MP4 MKV OGM,使用系统分离器分离MPG AVI。
[解码器]:软解 视频编码主要依靠ffdshow进行解码。硬解 H264 VC-1使用MPC-HC内置DXVA解码器。
安装
*首先确保系统内比较干净,如果装了其他Package和解码器请先全部卸载。没有特别说明均安装在默认路径。
1、安装AVISynth 2.5.8,一路Next即可。
2、安装Haali Media Splitter。设置如下图。(*1)
3、安装FFDShow。设置如下图。一路下一步。
4、安装Real Alternative 1.90 Lite,一路Next即可。
5、安装上述所有音频滤镜和VobSub,均为一路Next。
6、安装MPC-HC(压缩版请解压),由于MPC-HC本身算是绿色软件,所以可以放到其他位置。
设置
1、配置MPC。
运行mpc-hc,选择菜单的View –> Language –> Chinese (simplified)把界面语言调节到简体中文
视图菜单 –> 选项
[播放器]:勾上右侧的在.ini中保存设置,这样所有的设置会保存在ini里,就算重装系统也不会丢失。
[格式]:单击右下方的Video按钮,关联所有视频文件。
[播放]:勾上自动装载字幕。
[输出]:DirectShow视频,XP/2003用户请选择VMR9(未渲染),Vista/Win7用户请选择EVR自定义设置。RealMedia视频和QuickTime视频都选择DirectX 9。VMR7/9(未渲染)与EVR CP设置中,表面选择3D surfaces,重设尺寸选择Bicubic A=-0.60 (PS 2.0)。
[内部滤镜]:源滤镜里只选择DVD Video Title Set与MPEG PS/TS/PVA。转换滤镜中选择LPCM。(*2)
[字幕]:要缓冲的子图像数量输入0,最大纹理分辨率选择Desktop。
[默认风格]:相对于视频帧的字幕位置前面打成对勾。
确定之后重启MPC,右键单击主界面,在右键菜单里选择渲染器设置 –> 重置 –> 优化值。Vista/Win7用户还需要去掉 渲染器设置 –> 展示 –> 禁止桌面混合 前的勾,否则播放视频的时候会关闭Aero效果。
右键菜单 –> 着色器 –> YV12 Chroma Upsampling,如果选项是灰色的话,就在播放视频的时候设置。
2、配置FFDShow
找到开始菜单内的FFDShow组,打开ffdshow 视频解码器设置。
[编码解码器]:这里面是选择让ffshow解码什么格式的地方。绝大部分保持默认即可,需要调整的如下。H.264/AVC用ffmpeg-mt,MPEG1和MPEG2用libmpeg2,MPEG2把下方的DVD解码勾上。WMV 1/7 2/8 3/9 VC-1都用wmv。
[DirectShow控制]:右面总共有三个勾,都勾上。(*3)
[输出]:勾上NV12。勾上HW反交错。(*4)
打开开始菜单内的ffdshow 音频解码器设置。
[编码解码器]:这里除了AVIS用AviSynth之外,其他通通选择未启用,我们不用ffdshow来做音频解码。
3、配置AC3Filter
在开始菜单内找到AC3Filter组,打开AC3Filter Config,会出现一个Warning,确定即可。
[System标签]:左侧只勾AC3 DTS DVD。
到此为止,基本上大功告成。以上只是软解方案,如果想使用硬解的话,就把ffdshow里的H264与VC1设置为未启用,然后打开MPC-HC内部的这两个滤镜DXVA版即可。
本文只是起一个抛砖引玉的作用,并不是说按照本文设置之后就能够顺利的播放所有格式。比如蓝光Remux中可能有EAC3或者TrueHD音轨,按照本文的设置,是无法播放这些次世代高清音频格式的。本文的主要目的是告诉大家一个自己手动搭建的方法,根据自己的需要寻找合适的解码器,选择合适的解码方案。
本文大部分为我本人的经验之谈,如果有错误请指正。
*1 这样设置,即不使用Haali分离MPG和AVI。我的个人经验,很多游戏的动画是用MPG封装的,如果在这里选了MPEG,那么系统默认MPG的分离器为Haali,很大几率会造成不兼容的问题。具体表现是游戏的OP播不了,或者播放出错之类的,所以不建议用Haali分离MPG,AVI同理。
*2 Haali的分离器无法分离m2ts文件内的LPCM音频,而MPC内建的则可以,所以源滤镜里要选上MPEG,并且转换滤镜里勾上LPCM。
*3 FFDShow内建了一批支持正常调用ffdshow做解码的程序名字。默认情况下,ffdshow看到如果是这些程序调用自己,就会通过。把所有的勾都勾上之后的效果,是当有ffdshow不认识的程序要调用自己的时候,ffdshow会弹出提示框让用户选择是否使用ffdshow。有些游戏在播放动画的时候,用ffdshow解码会出错,所以在玩游戏的时候弹出ffdshow请尽量选择永远不使用。
*4 GeForce8系列及以上和HD 2XXX系列及以上提供了一套硬件Deinterlace算法,品质是现有的算法所无法比拟的,通过这样设置,当在播放Pure interlaced视频的时候,就能够开启硬件反交错。
这几天把我折腾够戗,我受不了了,还是按照您的这个方案装了,期间出了一点小问题,ffdshow里有一个ffdshow、DScaler的路径,居然还指向的以前K-lite中自带的ffdshow文件夹路径,可我早已经把它卸载了。
现在一切良好,没有任何问题,反应速度快,没有未响应的情况出现了。播放那个1080P的变形金刚,视频方面就是开头花屏1、2秒,之后一切正常(不过由于机器配置,还是有些正常的“慢动作”感,这就没办法了)。音频就比较郁闷了,用ffdshow或ac3 Filter,都是放几秒之后,就没声了,过一会儿又响几声,来回这样(我又郁闷了,之前可是音频不卡视频卡,现在反过来了……),不过这样我也满意,反正我也很少下这种几十G的1080P……
另外还有两个问题:
1、播放这个Transformers.HDDVD.REMUX.1080P.H264.DDPlus.DD51-SiLU.disk6.ts时,调用的好像是MPC Video Decoder(是不是MPC内部滤镜?)我可都是按照你的步骤一步一步来的,这样正确么?难道不是调用ffdshow么?
2、在 [内部滤镜]:源滤镜里只选择DVD Video Title Set与MPEG PS/TS/PVA。转换滤镜中选择LPCM。 这一步中,转换滤镜那里是 只选择LPCM,还是 保持默认并且把LPCM也勾上(默认就是勾着的)?
我在按照默认设置情况下(转换滤镜中AC3是选中的,还有好多其它的,看不懂),在外面改ffdshow或ac3 filter都会没反应,MPC-HC仍然调用MPC自带的那个去解AC3。。。我就把转换滤镜中的AC3去掉了,才正常。所以麻烦您大概解释一下这个源滤镜和转换滤镜的意思。
感谢感谢,真的很感谢,这两天真的很麻烦您了。
对了,还有字幕问题,现在全屏时,字幕很清晰,就是有点小,以前用K-lite时,全屏后字幕会自动变大,还原后字幕也会自动变小,而且比例很舒服,请问这个要怎样设置?
MPC Video Decoder是mpc-hc的内部滤镜,mpc-hc内部滤镜的优先级默认情况下是最高的,如果勾了它mpc-hc就会优先用它。
源滤镜你可以把它理解为分离器,转换滤镜你可以理解为解码器。我推荐你把mpc-hc里面那几个内置的音频解码器都勾上就行了,省的麻烦。
字幕问题的话,你去mpc-hc设置里的字幕项,把右边的最大纹理分辨率改成desktop,然后默认风格项里调整一下右上角的相对于视频帧的字幕位置,看看变化,找找满意的效果~
呃,终究还是有状况出现。
播放[FFSKY][FF13_THE_MOVIE][EP01][X264_720P_AAC].mp4时,音频也是停一会儿放一会儿。。。用MPC自带的和CoreAAC放都是一样。。。
[迈克尔·杰克逊:就是这样].This.Is.It.2009.720p.BluRay.x264.DTS-WiKi.mkv,音频也有停顿。
[雪盲].Whiteout.BDRip.480P.x264.AC3-CHD.mkv 一切正常
唉,标准稍微高一些,就会出现问题,看来我的机器太老了。
你的这个状况还真是诡异
不过播放有问题无外乎分离器 解码器的原因,虽然也可能是渲染器但是几率比较小
你还是尝试着更换一下解码方式的组合来看看效果吧
我没办法了,几个720P的高码率的片子(1080的就不说了),都是画面正常(有些画面有点跳),但是声音(AAC和AC3的)不同步,而且时断时续,解码器MPC内置的、ffdshow、ac3 filter、CoreAAC都试过了,效果一样。但如果用WMP播放这些片子,就什么问题都没有。而且我以前是KMP+Real Alternative,方这些片子也没事。唉。。。
终究……我还是一个菜鸟……我把所有解码器都卸了,打算安装暴风影音,就算赌一把。。。忽然想起KMP作者的新作,PotPlayer……装上试了一下,唉,真的,我都想去献血了。。。声音、画面、字幕,完美了。。。除了程序自身的BUG(还处于BETA阶段),其它都没得说。所有滤镜都是用的它内置的。改天我再补习补习,研究一下,这到底是为什么……(貌似有种做广告的嫌疑
)
输出NV12直接显卡硬解就应该可以了,不需要ffdshow软解吧?
YV12 Chroma Upsampling一定要选上,他的质量有人对比过和madvr不相上下。
可惜NV12从A卡输出luma conversion会产生色块(因为没有dither关系),所以偶用ffdshow直接输出rgb32然后高质量rgb转换+dither。其实最佳方法应该是显卡不做任何色阶伸张或压缩,直接输出0-255 (0-16黑235-255保留高光),然后由电视clip
MPCHC+K-Lites基本够用了
过年好,十五好!
好久不来了,今天又遇到个问题,我在用PotPlayer或MPC-HC播放MPG格式的文件时,会自动快放,改用WMP就没事,这是咋回事……
@Andrew
偶到感觉不是播放器的原因 播放器终究只是个外壳 播放还得调用解码器
potplay也不是说得那么好
缺陷还是很多 最主要的是作者最关注的是pot的聊天功能 毕竟是主打
为什么不直接用ffdshow音频解码呢?
感觉除了ac3 其他的音频插件直接用ffdshow替代还简单点 呵呵
另外问下朋友mpchc升级直接覆盖就好了吧?
还有就是那个配置文件会被覆盖掉么?
@匿名
直接覆盖就好了,INI文件不会被覆盖..
win7 下,用 mpc-hc,渲染器和 h264 解码器(ffdshow->ffmpeg-mt)使用您文中的设置,播放 h264 编码的片子,颜色总是不对,黑色不是纯黑,我不想使用任何着色器,能不能设置做到纯黑?
@匿名
驱动里设置YC扩张
奇怪,最近更新了FFD后,播放时打开的MPC总是FFD自带的那个精简版本……
用自己装的MPC关联文件后第1次打开文件没问题,再开文件就又换回FFD自带的MPC了
ffdshow什么时候自带过mpc了
开始以为是FFD的,结果看了下是REAL的,于是把自己装的MPC整个都移过去替换它自带的MPC了……
不知为何好好的就自己关联到它自带的MPC去了
发现个新问题,换装了X64的FFD后发现AVI播不了了……
不管是XIVD还是未编码的RGB都播不了,然后去设置XVID时发现控件丢失,囧rz啊
不知为何会丢失,我先换回32位的FFD看看
请教一下,我的mpc-hc更新了版本之后vrm9 用3d表面就放不了720p以上的了,没有画面只有声音,用旧版的时候却没有问题 原来用的旧版版本号是这个1.3.1570.0,今天下了个最新版不能用又下了个这个1.3.2193.0,结果还是不能用,是显卡的问题吗
请尝试更新到最新的显卡驱动,最新的DirectX之后再试一试
哦,那我试试,刚才说的情况不完全正确,在视频的原始分辨率下是可以正常播放的
那请问您是什么操作系统?
是什么显卡?
视频解码器用的是什么?
@VempX
现在好了,更新了驱动和dx就好了,谢谢啦
我系统是xp的,解码器是mpc-hc内置的,显卡nvdia quadro nvs 135m,显卡不怎么样啊哈哈
那啥,MPC-HC X64和Haali和Real Alternative兼容不好么
mp4和mkv用mpc-hc内建的分离器没问题,用Haali的话就报错……x264的视频流显示为CCV1,然后无法渲染………
然后播放rmvb也出现这样的问题,在用x86的mpc-hc没遇到上面两个问题,我也是今天才EP想换个x64的mpc-hc试试……
@Anaheim
@Anaheim
原来还是Real Alternative的问题……x64 mpc-hc不调用x86 Real Alternative,问题又没有x64的Real Alternative来用……于是我只能用wmp去播rmvb了
解决了rmvb的问题后我果断的去换了一个x64 haali,于是又能继续使用haali来分离mp4和mkv了XD
这样折腾来折腾去以后,感觉还不如x86的mpc-hc用的舒服……觉的没什么提升啊喂……
用x64的播放器,一整个流程都要x64
从x64的分离器到x64的解码器到x64的播放器
x86同理
本来也没什么提升,提升的只有内存占用而已
在下电脑里只装了mpc-hc,以及real alternative和FFDShow,用了这么长时间也有点经验,其他一切都还好,就是DVD的字幕显示问题让我纠结了很久。勾选mpeg2DXVA,开了硬解后,即使找到了“导航”中的“字幕”,调出了隐藏的字幕,可是屏幕上愣是不显示。换用FFDShow渲染,勾选了“字幕”选项后,再调出隐藏的字幕,就能看到了,可是画质就完全不如硬解时的了。
想用MPC-HC内建的字幕引擎来显示字幕是有条件的
也就是渲染器的使用
在MPC-HC的输出设置里,选择可以使用内建字幕引擎的渲染器即可
先这么做试试看
照本文的方法安装和设置了MPC-HC之后,发现一个问题。在某县比较简单的场景,只有少数几个人物平缓移动,在MPC下无论MPC内置硬解还是FFDshow软解,都会出现画面略微丢帧的情况。但是用KMP或者Potplayer都没有这种问题。请教一下如何解决
可以尝试更换一下渲染器
因为我曾经也遇到过用EVR Custom播放的时候会在低动态画面下出现丢帧的情况
不过我那个情况仅仅是出现在播放rmvb的时候
我是在播放X264编码的时候出现低动态丢帧,不过现在换成EVR/Sync就解决了,貌似是垂直同步的问题
请问能写个K-Lite Codec Pack + Media Player Classic – Homecinema这个组合的设置方法吗
那样就不是纯手工搭建了
而且装了K-lite之后基本也不需要做什么设置了
是默认设置就能达到比较好的播放效果了吗?
还有想请教一下,按照这样的组合的话MPC-HC里的滤镜选项应该选哪些呢,对这些一窍不通啊
这个实在是难说清
因为每个人的播放环境和经常看的影片格式以及播放要求都不同
我也说过我这个文章只是个抛砖引玉的作用,不能解决所有人的所有问题
那些滤镜我只能说根据自己需要开启,更具体的没法说了,那得写好几千字了……