讓 MPlayer 支援原生WMV9 [MPlayer] 的功能強大,而且支援的媒體檔案與平台數量都是一流的,對於 Microsoft 專屬的 mpeg-4 與 wmv1/2/3 (這三者分別對應我們常稱呼的 WMV 7/8/9,小寫表示 video coding 的 algorithm,大寫表示 Window Media Player 支援格式),[MPlayer] 跟 Xine 或 VLC 一樣,都透過 Win32 DLL loader 強制載入修改過的 win32 codec (用惡行對付 Microsoft 的惡行 :P)。VLC 已初步支援 WMV9 (VC-1),可參考 [Instructions for compiling VLC with VC-1 (WMV9) support under Ubuntu Breezy],而我在想,是否能夠將這些成果移植到 [MPlayer] 呢?剛剛 hacking 一段時間,完成了 :-)
以下是參考的編譯流程:
(1) 取得 cvs tarball 與我做的 patch:# wget
http://jserv.sayya.org/mplayer/mplayer-cvs-snapshot-20060228.tar.bz2
# wget
http://jserv.sayya.org/mplayer/wmv3-support-via-vc1.diff.gz
(2) 解壓縮並施加 patch:# tar jxvf mplayer-cvs-snapshot-20060228.tar.bz2
# cd mplayer-cvs-snapshot-20060228
# zcat ../wmv3-support-via-vc1.diff.gz | patch -p1
(3) 組態配置,以下是我的組態,可作為參考 (請記得把 pentium-m 換成您的 machine):CFLAGS="-O5 -march=pentium-m \
-mmmx -msse -msse2 -mfpmath=sse,387 \
-fomit-frame-pointer -fforce-mem -fforce-addr \
-finline-functions -freorder-functions \
-frename-registers -ftracer -fweb -funit-at-a-time \
-fbranch-target-load-optimize2" \
sh configure \
--prefix=/usr \
--confdir=/etc/mplayer \
--disable-gui \
--enable-menu \
--disable-inet6 \
--language=en \
--enable-sse2 \
--enable-i18n \
--disable-gl \
--disable-win32 \
--enable-dynamic-plugins
上面的 "--disable-win32" 就是告訴 MPlayer 我不需要邪惡的 win32 dll loader,我用 native WMV9 codec。
(4) 開始漫長的等待:make
這個 hacking 很有趣,在我的電腦運作的畫面如下:
圖片參考:
http://jserv.sayya.org/mplayer/screenshots/mplayer-wmv9.png
所以現在不需要帶有罪惡感的 win32 codecs,也可以播放了,並且 [MPlayer] 支援的平台眾多,或許在 64-bit 的硬體也可以運作 (?)。
由 jserv 發表於 February 28, 2006 06:47 PM