V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mrcotter2013
V2EX  ›  程序员

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

  •  
  •   mrcotter2013 · 2017-12-05 15:30:15 +08:00 · 2197 次点击
    这是一个创建于 2331 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于 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/

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1025 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:43 · PVG 03:43 · LAX 12:43 · JFK 15:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.