如何在 macos 上为 ffmpeg 启用 libx264

Posted

技术标签:

【中文标题】如何在 macos 上为 ffmpeg 启用 libx264【英文标题】:how to enable libx264 for ffmpeg on macos 【发布时间】:2020-12-26 20:29:12 【问题描述】:

我正在运行一个运行 ffmpeg 的代码,但由于 libx264 而崩溃并出现以下错误:

未知编码器'libx264'

  File "/anaconda3/lib/python3.6/site-packages/imageio/plugins/ffmpeg.py", line 661, in _append_data
    self._proc.stdin.write(im.tostring())
BrokenPipeError: [Errno 32] Broken pipe

于是我将ffmpeg升级到最新,看到libx264安装如图:Using Brew on MacOs

==> Pouring x264-r3027_1.high_sierra.bottle.tar.gz

 /usr/local/Cellar/x264/r3027_1: 11 files, 5.5MB

但是当我这样做时

ffmpeg encoders | grep 264

我在最后一行得到--disable-libx264:

ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
  built with clang version 4.0.1 (tags/RELEASE_401/final)
  configuration: --prefix=/anaconda3 --cc=x86_64-apple-darwin13.4.0-clang --disable-doc --enable-shared --enable-static 

--enable-zlib --enable-pic --enable-gpl --enable-version3 --disable-nonfree --enable-hardcoded-tables --enable-avresample --enable-libfreetype --disable-openssl --disable-gnutls --enable-libvpx --enable-pthreads --enable -libopus --enable-postproc --disable-libx264

似乎我必须将 --disable-libx264 更改为 --enable-libx264 但不确定在哪里以及如何完成。在 /anaconda3 下找不到它,因为:--prefix=/anaconda3

【问题讨论】:

【参考方案1】:

我删除了 Brew,改为运行 conda install ffmpeg 并在那里启用。

【讨论】:

【参考方案2】:

如果您使用 Conda 安装 x264 和 ffmpeg,您需要今天(将来可能会更改)指定要安装的版本。例如,这种组合对我来说效果很好:

$ conda install -c conda-forge x264=='1!161.3030' ffmpeg=4.3.2

如果我现在运行命令ffmpeg,我可以看到我有标志--enable-libx264。完整的输出是:

$ ffmpeg
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
  built with clang version 11.1.0
  configuration: --prefix=/Users/vincent/opt/anaconda3/envs/test2 --cc=x86_64-apple-darwin13.4.0-clang --disable-doc --disable-openssl --enable-avresample --enable-gnutls --enable-gpl --enable-hardcoded-tables --enable-libfreetype --enable-libopenh264 --enable-libx264 --enable-pic --enable-pthreads --enable-shared --enable-static --enable-version3 --enable-zlib --enable-libmp3lame --pkg-config=/Users/runner/miniforge3/conda-bld/ffmpeg_1627813741069/_build_env/bin/pkg-config
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... [outfile options] outfile...

我猜这个问题来自于今天默认安装的 ffmpeg 版本(写这篇文章的时候)。事实上,如果在新创建的虚拟环境中我安装 x264 和 ffmpeg 而不指定要使用的版本,我会得到 x264 1!161.3030 和 ffmpeg 4.0。使用较新版本的 ffmpeg 似乎可以解决问题。

我们的想法是使用兼容的软件包版本。为了创建我上面建议的安装行,我只是指定了 x264 和 ffmpeg 包的 conda-forge 上可用的最新版本。要获取 x264 和 ffmpeg 的可用 Conda 包列表,只需使用:

conda search -c conda-forge -f x264
conda search -c conda-forge -f ffmpeg

【讨论】:

以上是关于如何在 macos 上为 ffmpeg 启用 libx264的主要内容,如果未能解决你的问题,请参考以下文章

如何在 macOS 上为 IntelliJ 项目安装 Google OR-Tools

如何在 MacOS (sierra-catalina) 上为分区获取可用空间

如何在 MacOS 12 上为 php 7.1 安装 mcrypt 扩展以进行 Laravel 开发?

如何在macos中用librtmp编译ffmpeg?

如何在 Textmate 上为 Sencha 启用代码完成/代码感知

如何在 Sidekiq 上为 Redis 6 启用 TLS?