Homebrew 编译 mpv --HEAD 报错的解决方法(macOS)

2017-12-05 15:30:15 +08:00
 mrcotter2013

对于 macOS High Sierra 的用户,在近一段时间,使用 Homebrew 编译 mpv --HEAD 必然出错。原因是 mpv 的开发者对最近一次 FFmpeg API 的修改导致程序功能不可用的情况感到忍无可忍,因此开发者决定使用自己 fork 并有针对性打补丁的版本 ffmpeg-mpv,并且编译 git master 版 mpv 会强制要求使用这一特殊版本 FFmpeg 的支持,也造成了目前的 brew formula 失效。

关于 mpv 和 FFmpeg 之间的矛盾如何解决目前仍然没有定论,存在着不少争议。为了能够使用 Homebrew 正确编译最新版本的 mpv,我对比并且试验了一些方法,最后使用的是来自 GitHub 网友 dreness 提供的办法(见 issue#5108),修改 FFmpeg 和 mpv 的编译代码:

  1. 将 FFmpeg HEAD Git Repo Url 替换为 ffmpeg-mpv 所在地址;
  2. macOS 下编译 mpv 需对 stream/stream_libarchive.h 打补丁。

现在,我们可以通过简单的命令对 Homebrew Formula 进行修改。

cd $(brew --prefix)/Homebrew/Library/taps/homebrew/homebrew-core
curl -o mpv-ffmpeg.patch https://youbeill.in/scrap/note-PnAcVrJqbc.txt
patch -p1 < mpv-ffmpeg.patch

之后就能正常编译 ffmpeg --HEADmpv --HEAD,例如:

brew install ffmpeg --HEAD --with-fdk-aac --with-sdl2 --with-freetype --with-libass --with-libbluray --with-libvorbis --with-libvpx --with-opus --with-webp --with-x265
brew install mpv --HEAD --with-bundle --with-libbluray --with-libdvdnav --with-libdvdread --with-uchardet --with-libaacs --with-libcaca --with-rubberband --with-libarchive --with-vapoursynth

声明:以上只是一个暂时的解决方案,补丁是基于现有 FFmpeg 发行版本 3.4 进行修改的,如果后续有版本更新,该补丁会失效,需要做相应的修改。另外,补丁文件是以在线文件的形式提供,需要联网

我发布的原文链接: http://kris2d.info/posts/2912b351/

其中包含了补丁的详细代码内容,如果有其它问题,欢迎留言。

2207 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/412183

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX