stu*_*ent 5 compiling mplayer x86
我只是mplayer2 从源 ( git://git.mplayer2.org/mplayer2-build.git)编译,因为存储库 (ubuntu 12.04) 版本在我的系统上不起作用。由于我有旧硬件,我只是想知道是否有一些编译器标志可以用来为我的硬件优化它。
CPU 是 Athlon XP 2200+(移动),1GB RAM,显卡:Nvidia GeForce4 420 Go。
我也想在另一个具有类似规格的旧系统上做同样的事情:
CPU:Athlon 1,2 GHZ,1GB RAM,图形:[SiS] 65x/M650/740
如果从您的 mplayer2 分发存储库中获取的版本不适合您,那么向错误跟踪系统报告不起作用的内容是一件好事,这样它对您和其他人都有好处:
专门为您的机器重新编译程序可能会比发行版发布的“通用”风格获得更好的结果(顺便说一句,这是 Gentoo 人员将东西重新编译到自己的系统时的动机之一)。
当然,您可能会在速度上获得一些改进,但会失去二进制文件的可移植性。
话虽这么说,在当前 Debian/Ubuntu 系统中重新编译程序的一般方法是获取源包及其构建依赖项,如下所示:
sudo apt-get build-dep mplayer2
sudo apt-get install fakeroot
apt-get source mplayer2
Run Code Online (Sandbox Code Playgroud)
然后编辑由最后一个命令创建的目录内的文件以更改、、
和debian/rules中的值。CFLAGSCPPFLAGSCXXFLAGSLDFLAGS
您可以做什么来根据您的机器定制应用程序?您必须尝试(阅读:“测量/基准”,见下文)程序运行速度更快的优化级别(如-O2、-Os或)。-O3
要实际编译程序,您需要在命令创建的目录中运行apt-get source mplayer2:
fakeroot debian/rules binary
sudo dpkg -i ../*.deb
Run Code Online (Sandbox Code Playgroud)
使用 GCC 4.7 或更高版本,您甚至可以尝试-Ofast
编译级别,这对于播放视频不会造成太大损害,但可以给您带来一些改进(足以不会累积帧并导致音频和视频不同步) )。
要专门为要执行该程序的机器编译程序,最好使用 GCC-mach=native标志。这可能会使生成的二进制文件在其他系统中无法使用,但只要您只关心您的系统,那就是正确的方法。
只是为了让您了解当我使用时在我的 Core i5-2410M 上启用了哪些选项-march=native,请参阅(输出重新格式化以不破坏站点的布局):
gcc -march=native -E -v - < /dev/null 2>&1 | grep cc1
/usr/lib/gcc/i486-linux-gnu/4.7/cc1 -E -quiet -v -imultiarch i386-linux-gnu - \
-march=corei7-avx -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt \
-mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 \
-mno-tbm -mavx -mno-avx2 -msse4.2 -msse4.1 -mno-lzcnt -mno-rdrnd \
-mno-f16c -mno-fsgsbase --param l1-cache-size=32 \
--param l1-cache-line-size=64 \
--param l2-cache-size=3072 -mtune=corei7-avx
Run Code Online (Sandbox Code Playgroud)
从那里您可以看到 GCC 检测到我的计算机具有的一些“高级”指令 (AVX) 和其他它没有的指令 (AVX2)。
作为提示,要进行基准测试,只需播放一个短视频,例如foo.mkv:
mplayer -benchmark -vo null -nosound foo.mkv
Run Code Online (Sandbox Code Playgroud)
这将尽可能快地“播放”视频,并告诉您“播放”整个视频需要多少秒。请注意,我在引号中说“播放”,因为我们正在禁用:
-nosound. 与播放视频的其他部分相比,这里花费的时间通常较少。-vo null)。要查看显卡是否妨碍,您可以省略-vo
null上面命令中的部分,然后查看您想要的视频播放速度是否比实时速度快(或无论您的目标是什么)。
话虽这么说,mplayer2(以及常规 mplayer,当后一个来自发行版时)的大部分处理都“卸载”到库中。特别是,很多解码是由 libav 或 ffmpeg 完成的,这些是首先应该编译/优化的包。
对于从上游获取的“vanilla”mplayer(不是 mplayer2),它使用许多库的嵌入式副本,这意味着,如果您从上游源代码编译它(而不是我上面给您提供的方法等
apt-get source mplayer2),它还将编译自己的 libav/ffmpeg,并且有可能比替代方案快得多。
如果您更改了一些配置参数,并不总是需要重新编译您的发行版提供的 mplayer/mplayer2 二进制文件。为了避免上述所有工作,我将首先播放类似以下内容的视频:
mplayer -framedrop -lavdopts fast:skipframe=nonref:skiploopfilter=nonref foo.mkv
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用我刚刚提供给您的选项,并且联机帮助页记录了skipframe和 的可能值skiploopfilter等。
祝您观看视频愉快!
| 归档时间: |
|
| 查看次数: |
756 次 |
| 最近记录: |