对于 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 的编译代码:
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 --HEAD
和 mpv --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/
其中包含了补丁的详细代码内容,如果有其它问题,欢迎留言。