bilibiliForMac版之mpv依赖编译
文章目录
【注意】最后更新于 February 10, 2017,文中内容可能已过时,请谨慎使用。
Bilibili Mac Client
一款基于mpv和ffmpeg底层库实现的播放器.
项目依赖库
编译在项目中所需的相关依赖库
下载资源
下载mpv-build {% codeblock lang:git %} git clone https://github.com/mpv-player/mpv-build.git {% endcodeblock %}
执行下载
ffmpeg
,libass
和mpv资源
,同时完成编译的命令: {% codeblock lang:bash %} cd mpv-build/ ./rebuild -j4
{% endcodeblock %}使用参数 “–enable-shared ” 可以开启 ffmpeg 的动态版本: {% codeblock lang:bash %} cd ffmpeg/ ./configure –enable-shared
{% endcodeblock %}安装ffmpeg {% codeblock lang:bash %} 在ffmpeg目录下执行: make make install {% endcodeblock %}
开始编译mpv动态依赖库:
- 开启libmpv动态库的支持: {% codeblock lang:bash %} cd ../mpv/ ./waf configure –enable-libmpv-shared –disable-libass ./waf build {% endcodeblock %}
变更去除static参数:./waf configure –enable-static-build –enable-libmpv-shared –disable-libass
集成到项目中
指定libmpv.dylib相对路径
直接编译出来的库会是绝对路径,需要先通过install_name_tool 修改 相对路径: {% codeblock lang:shell %} cd build/ install_name_tool -id “@executable_path/lib/libmpv.dylib” libmpv.dylib {% endcodeblock %}
聚合ffmpeg相关依赖包
执行 mpvtools/dylib-unhell
,目标是 libmpv.dylib
{% codeblock lang:bash %}
TOOLS/dylib-unhell.py libmpv.dylib
{% endcodeblock %}
这样会多出一个 lib文件夹
,里面会出现变为相对路径的文件,复制导入到项目即可。
相对路径脚本学习
使用otool -L 和install_name_tool完成了一系列操作: {% codeblock lang:bash %} install_name_tool -change install_name_tool -id {% endcodeblock %}
扩展一:
{% codeblock lang:shell %} #!bin/sh mkdir “$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/dylib” cp -f /your/path/to/xcode_project_name/dylib/*.dylib “$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/dylib/”
echo “——–$(pwd)—————-” cur_dir="$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/lib" cd ${cur_dir} echo “–进入$(pwd)–”
for dirlist in $(ls ${cur_dir}) #查看它们的 rpath otool -L ${dirlist} #制作相对路径 #方法一 install_name_tool -change /usr/local/lib/${dirlist} @executable_path/lib/${dirlist} “$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME” #方法二 install_name_tool -id “@executable_path/lib/${dirlist}” ${dirlist} do
done
{% endcodeblock %}
扩展二
{% codeblock lang:shell %} echo “——–$(pwd)—————-” cur_dir="$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/lib" cd ${cur_dir} echo “–进入$(pwd)–” lib=“libmediainfo.0.dylib” #-f 参数判断 $file 是否存在 if [ -f “$lib” ]; then otool -L ${lib} install_name_tool -id “@executable_path/lib/${lib}” ${lib} otool -L ${lib} fi {% endcodeblock %}
文章作者 iTBoyer
上次更新 2017-02-10