好贷网好贷款

Mplayer的编译方法

发布时间:2016-12-5 12:33:10 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Mplayer的编译方法",主要涉及到Mplayer的编译方法方面的内容,对于Mplayer的编译方法感兴趣的同学可以参考一下。

网上类似的文章数不胜数,并且有想法自己搞这些开源玩意儿的同学想必水平也应该都在我之上,我本不该多此一举。不过记得当初为了编译出一个能够完全胜任MPlayerX的核心,我还是费了相当一些周折,这些周折如果在网上仔细调查也能得到答案,不过将它们总结到一起的文章,我还没有发现。所以我就做一个搬运工,把它们放到一起供有兴趣的同学翻阅。 我会尽力在我水平之内照顾到这篇文章的通用性,但请恕我精力有限,如果有什么出错的地方请和我联系。 多点代码,少点废话。 准备工具链 编译所需要的所有的工具,都可以通过安装Xcode得到。 编译依赖库 Fontconfig 功能:用于 支持MKV格式的内嵌字体。 地址:http://www.freedesktop.org/software/fontconfig/release/ 编译方法: tar xvf fontconfig-2.10.92.tar.bz2 cd fontconfig-2.10.92 ./configure make sudo make install freetype2 功能:用于 字幕和OSD的文字显示。 地址:http://sourceforge.net/projects/freetype/files/freetype2/ 编译方法: tar xvf freetype-2.4.11.tar.bz2 cd freetype-2.4.11/ ./configure make sudo make install yasm 功能:用于编译 libvpx。 地址:http://yasm.tortall.net/Download.html 编译方法: tar xvf yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure make sudo make install libvpx 功能:WebM解码模块。 地址:http://code.google.com/p/webm/downloads/list 编译方法: tar xvf libvpx-1.1.0.tar.bz2 cd libvpx-1.1.0/ ./configure --enable-vp8 --enable-postproc --enable-multithread --enable-spatial-resampling --disable-examples --disable-codec-srcs --disable-install-srcs --disable-install-docs --disable-debug --target=x86_64-darwin10-gcc make sudo make install live555 功能:该模块可以让mplayer通过http协议传输rtsp协议的内容。 地址:http://www.live555.com/liveMedia/public/live555-latest.tar.gz 编译方法: tar xvf live555-latest.tar.gz cd live ./genMakefiles macosx make sudo make install 其他以及注意事项 编译流程比较简单,解压 → configure → make → sudo make install,需要注意的是 ./configure的选项。 除了以上的以外,还有一些可选装的第三方库,如 FLAC, ogg, vorbis, speex 等等,编译方法都比较类似,这里就不一一列举了。 编译mplayer 下载源代码 mplayer git clone git://git.mplayerhq.hu/mplayer -b master mplayer ffmpeg git clone git://source.ffmpeg.org/ffmpeg.git -b master mplayer/ffmpeg libdvdnav git clone git://git.videolan.org/libdvdnav.git -b master libdvdnav libdvdread git clone git://git.videolan.org/libdvdread.git -b master libdvdread 制作 libdvdnav 和 libdvdread 的符号链接 ln -s mplayer/libdvdnav libdvdnav/src ln -s mplayer/libdvdread4 libdvdread/src 编译 cd mplayer export CC="clang" ./configure --codecsdir=codecs --disable-mencoder --disable-gui --disable-apple-remote --disable-unrarexec --disable-pnm --disable-tga --disable-md5sum --disable-quartz --disable-openal --disable-jpeg --disable-png --disable-yuv4mpeg --disable-faac --disable-faad --disable-tv --disable-libdca --disable-liba52 --disable-libvorbis --disable-theora --disable-qtx --disable-gl --disable-matrixview --disable-x11 --disable-xv --enable-decoder=vda --extra-cflags="-mmacosx-version-min=10.6" --extra-ldflags="-mmacosx-version-min=10.6 -framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore" --enable-runtime-cpudetection make -j8 现在你已经可以使用刚刚生成的mplayer了,祝贺你。试试看 ./mplayer test.mp4 重定向动态链接库文件路径 如果你只是自己用,那么以上的步骤就足够了,你可以离开这个网页。 如果你将你做好的mplayer发给你的朋友,你会得到下面的错误。 QZYMBP17:binaries NILTSH$ ./mplayer dyld: Library not loaded: /usr/local/lib/libfreetype.6.dylib Referenced from: /Volumes/Work/MPX/src/MPlayerX/MPlayerX/binaries/./mplayer Reason: image not found Trace/BPT trap: 5 mplayer使用了动态链接库来使用它需要的第三方代码。因此如果我们试图在没有编译安装这些第三方库的Mac中运行mplayer的话,将会得到以上的错误。 那如何查看 某一个二进制文件会链接到哪些动态链接库呢? otool -L mplayer 这个命令会输出mplayer所连接到的所有的库,包括系统默认的,所以一般我们可以用下面的命令。 otool -L mplayer | grep local 我们会得到如下的输出: /usr/local/lib/libfreetype.6.dylib (compatibility version 15.0.0, current version 15.0.0) /usr/local/lib/libfontconfig.1.dylib (compatibility version 6.0.0, current version 6.4.0) /usr/local/lib/libspeex.1.dylib (compatibility version 7.0.0, current version 7.0.0) 上面列出来的就是我们之前编译好的第三方库,因此我们不仅要将mplayer本身拷贝到对方的Mac,还要将上面列出的dylib拷贝到相应的位置(/usr/local/lib/)。 这是一个可行的办法,但是我不推荐拷贝到/usr/local/lib,一是麻烦,二是他可能会带来文件污染。我推荐下面的方法: 我们可以重定向动态链接库的路径 Mac中有一款工具 install_name_tool 可以修改二进制文件中的动态链接库的路径,具体使用方法,例如如下: install_name_tool -change /usr/local/lib/libfreetype.6.dylib @executable_path/lib/libfreetype.6.dylib mplayer 运行了上面的命令之后,当我们再次用 otool 查看 mplayer,会得到如下结果: QZYMBP17:binaries NILTSH$ otool -L mplayer ... @executable_path/lib/libfreetype.6.dylib (compatibility version 15.0.0, current version 15.0.0) ... /usr/local/lib/libfreetype.6.dylib 被修改成了 @executable_path/lib/libfreetype.6.dylib,这意味着 mplayer 将从自己所在文件夹下的lib文件夹中去寻找libfreetype.dylib,而并非/usr/local/lib/。 这样我们就可以将自己做好的二进制文件按照如下的文件夹结构打包发布: |-mplayer \-lib |-libfreetype.6.dylib |-libfontconfig.1.dylib \-libspeex.1.dylib 大功告成! 将上面的一系列修改写成脚本: 1 2 3 4 5 6 7 8 9 10 11 12 #!/bin/sh if [[ $# -lt 1 ]]; then echo "Usage: modify.sh FILE" exit 1 fi otool -L $1 | grep local | cut -d'(' -f1 | sed -e 's/^[ \t]*//' | while read line do newline=`echo ${line} | sed -e [email protected]_path|'` install_name_tool -change ${line} ${newline} $1 done;

上一篇:nagios服务端和客户端的正确配置文件
下一篇:用apache的httpclient发请求和接受数据

相关文章

相关评论