![如何在 Mac OS X 或 macOS 11 上安装 libav/avconv?](https://linux22.com/image/1356212/%E5%A6%82%E4%BD%95%E5%9C%A8%20Mac%20OS%20X%20%E6%88%96%20macOS%2011%20%E4%B8%8A%E5%AE%89%E8%A3%85%20libav%2Favconv%EF%BC%9F.png)
答案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.o
OBJS
配置并完成所有
你已准备好出发。
为了记录,我使用了以下配置命令:
./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()
在。libav
jack.c
答案4
对于托管在 https 上的视频(现在很多),请确保使用 OpenSSL 支持构建 avconv:
brew install libav --with-openssl