纯手工搭建基于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)

haali

3、安装FFDShow。设置如下图。一路下一步。

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视频的时候,就能够开启硬件反交错。