(前文43)
虽然跟电虾没啥关系,但还是手痒想回。 :D
以下有长篇大论,看到字很多头会痛的乡民可以直接按 ←
这篇主要是想回应前面推文的两点疑问。
首先是 The KMPlayer 与 PortPlayer 在 Hall of Shame 上面的问题。
不过若要开始谈这个,就必须要来讲古一下。
关于 MPC-HC 及 MPC-BE 的前身,也就是 MPC(Media Player Classic)。
这个播放程式基本上是由一位名为 Gabest 的程式设计师所写的。
对个人来说,他算是个开源界的神人。不过关于他神的部份,本篇文章不会详述。
言归正传,先让我们回到约莫15年前,也就是XP才刚发表没多久的2001年,
一堆人还在用 Windows 98 、 WinME 或 2000 SP1 的时代。
在那个时候,在Windows上播放影片的程式,最主要有两个。
一个是 Windows 内建的 WMP(Windows Media Player),另外一个则为 Real 公司所
开发的 Real Player。
除此之外当然还有Appl 本家的 QuickTime 与DIVX商业化后的 DivX Player
但后面这两者的使用人数与前面两者差异非常多,故先不提。
这两个程式在当初的表现其实并不算差,算是各司期职。但他们都有个
对当时有需要的人来说,算是个非常严重的问题。也就是 "皆不支援字幕的播放"。
如常见的字幕格式,例如 srt, ssa&ass, sub&dix 这类,都是完全不支援。
所以 Gabest 为此写了一支名为 VSFilter(VobSub) 的程式。
在 WMP 加载影片之前,将字幕 Hack 进 WMP 绘制的画面(DirectShow)中。
一般来说当时用的输出通常是 DirectDraw Overlay。
这样的做法一开始算是相安无事。但后来由于 WMP 的程式随着时间的过去。
随着版号愈来愈大、容量也愈来愈大。界面也是变得愈来愈复杂。
题外话:
同期的一些软件不约而同地也有类似症状,例如回不去的 Winzip, Winamp, Nero
Burning ROM, ACDSee etc..
话说古早年代还有一支叫做 Xing player 的程式,不知道板上还有多少人记得?
再加上由于 VSFilter 与 WMP 的众多相容性等问题。
因此 Gabest 为此而开发了MPC。
其目的是为了一举解决播放器接口、字幕的相容性,
以及支援影片格式、封装及输出的问题。
至此
几乎所有非商业发行的流通影片格式、字幕,都是以 MPC 为主要实作平台开发。
时间点约莫是2003~2004年,看片片的没人不装 MPC 的。
就这样过了几年,直到2005年底或2006年初的某天。
Gabest 偶然发现 The KMPlayer 的作者疑似使用了 MPC 的源码。
但却未依GPL将源码开放。
所以他先在自己sourceforge的专案论坛里提出疑问,并寻求协助。
接着就被人转到Doom9论坛去了。
要知道Doom9里面最不缺的就是满满的技术宅。
个人看过的技术宅,无论其实力如何,或多或少都有些自负。
想当然也就不是什么温良谦恭让的普通人。
所以有群人火速前往当初The KMPlayer的论坛并群起而攻之。
接着这些讨论串被The KMPlayer作者冷处理,也就是不了了之。
除非 Kang Yong-Huee 愿意公布自己的源码,不然也无法证明真有此事。
不过这件事最终的结局,对 Gabest 也没什么意义了。
因为他对此感到失望,并于2006年中,停止开发MPC。
无独有偶地,The KMPlayer 也被 FFmpeg 的开发者发现,
使用libavcodec(FFmpeg的函式库),却不依GPL授权开放程式码。
想当然地就被 FFmpeg team 写进 Hall of Shame 里了。
不知道这样有没有解决一部份人的疑惑?
不过... 若要我用个人观点来总结这段历史嘛...
可以说所有原生开发于 Winodows 的播放程式,尤其是输出及字幕实作的部份。
几乎没有例外的都是 MPC 的徒子徒孙。
所以Gabest 可以被称为 Windows 内的开源影片播放器之父,应该不为过。
若自己努力的心血被人抄了,对方却又打死不承认,
这样的感受其实各位可以稍稍想想看。
不过在 Gabest 在对 The KMPlayer 作者的行径感到失望之后,
就将兴趣移到PCSX2,将PS2模拟器的相容性带到另一个高峰,
那就又是另外一段故事了。
================================我是分格线==============================
接着来谈谈K-Lite之类的解码包。
在2016年Q4的今天,其实装这些解码包的实质意义真的愈来愈小了。
原因不外乎目前网络上99.9%流通的影片资源的格式中,不出以下三者:
1. H.264
2. H.265(HEVC)
3. WMV
在 Real Video 、 Xvid 与 Divx 都要死不活的现在。
除了少部份私有格式(ex:商用监视器程式录下的格式)之外。
几乎没有 FFmpeg 不能播的影片格式。
再加上就算装了这类播放器的解码包,如果没特别设定的话,
也只是让 MPC 去捞 FFmpeg 或是 Lav filters 来用。
但事实上 MPC-HC 已经整合了Lav filters、而 MPC-BE 则整合了FFmpeg。
所以若装了如K-Lite这些解码包,却又捞这些解码器及分离器来用,
其实有点多此一举。
如果喜欢 Lav filters 的就装 MPC-HC。
由于整合了Lav decoder,所以对 H.265 及新显卡技术的支援程度较佳,
更新也较为勤快。
喜欢 FFmpeg 的就装 MPC-BE。
内部的分离器对古老格式的相容性较Lav filters佳,CPU的使用率也较低一点。
各有优点,择一而用即可。