如何在 Mac OS X 或 macOS 11 上安装 libav/avconv?

如何在 Mac OS X 或 macOS 11 上安装 libav/avconv?

OSX 带有命令行视频转换实用程序AV转换但与AVCONV由...提供

如何在 OS X(或 macOS 11)上安装 avconv?

答案1

只需使用 brew 安装即可:

brew install libav

答案2

首先获取库:

 wget http://libav.org/releases/libav-10.1.tar.gz
# use http://libav.org/releases/libav-snapshot.tar.bz2 for the latest snapshot
tar -xvzf libav-10.1.tar.gz 
cd libav-10.1

使用以下命令设置依赖项麦金塔(或其他包管理器,例如自制):

sudo port install yasm zlib bzip2 faac lame speex libogg libvorbis libtheora libvpx x264 XviD openjpeg15 opencore-amr freetype

构建 libav:

./configure \
--extra-cflags=-I/opt/local/include --extra-ldflags=-L/opt/local/lib \
--enable-gpl --enable-libx264 --enable-libxvid \
--enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb \
--enable-nonfree --enable-libfaac \
--enable-libmp3lame --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvpx \
--enable-libopenjpeg --enable-libfreetype --enable-doc --enable-gnutls --enable-shared

make && sudo make install

然后你可以运行avconv

avconv -i input.avi -c:v libx264 -preset slow -crf 18 output.mp4

  • x264 +asm似乎是需要运行的cpu-capabilities,所以如果你没有得到它们(即[libx264 @ 0x7fe66101a800] using cpu capabilities: none!)运行:

sudo 端口升级--enforce-variants x264 +asm

你应该得到类似的东西:[libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX

答案3

对于那些没有的人brew- 直到 macports 为 提供移植libav,以下是我在 OSX 10.8.5 上安装 libav 的笔记,来自来源(libav 版本12_dev0,来自 github)。

我面临的主要问题是 libav 使用了sem_timedwait()macos 中未定义的(linux 中的 semaphore.h)。

这个帖子https://stackoverflow.com/a/15163760提到澳大利亚天文台软件组的 Keith Shortridge(感谢)已经为 macos 编写了上述函数的实现,可在此处找到https://github.com/attie/libxbee3/tree/master/xsys_darwin

将两个文件下载进去${LIBAVDIR}/libavdevice,然后在头文件中添加下面一行sem_timedwait.h

int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);

然后编辑 Makefile并在变量末尾${LIBAVDIR}/libavdevice添加sem_timedwait.oOBJS

配置并完成所有

你已准备好出发。

为了记录,我使用了以下配置命令:

./configure --extra-cflags=-I/opt/local/include --extra-ldflags=-L/opt/local/lib --enable-gpl --enable-libx264 --enable-libxvid --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-nonfree --enable-libfaac --enable-libmp3lame --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvpx --enable-libopenjpeg --enable-libfreetype --enable-doc --enable-gnutls --prefix=/opt/local

警告:我无法说或保证所述实现是否sem_timedwait()正确,以及/或者是否libav对链接到 libav 库(现在已在其中实现)的系统的任何其他部分的工作没有副作用sem_timedwait()!!!!对于后者,我建议sem_timedwait()在您的副本libav和 Keith 的实现中重命名所有地方。还请检查是否从 sem_timedwait.o 导出了任何其他符号,并重命名它们。

以下是 Keith Shortridge 实现的重新命名的新符号sem_timedwait()

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(删除_keith以获取原始名称)。(对于所述版本)对 的唯一引用是sem_timedwait()在。libavjack.c

答案4

对于托管在 https 上的视频(现在很多),请确保使用 OpenSSL 支持构建 avconv:

brew install libav --with-openssl

相关内容