如何在OSX上安装libav / avconv?


Answers:



17

首先抢库:

 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

使用MacPorts(或其他软件包管理器,例如Homebrew)设置依赖项:

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
在Mac OSX上,只有在设置环境变量export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig'. Also, for the fun of it, you may add, to ./configure , options: --extra-cflags = -I / opt / local / include --extra-ldflags = -L / opt / local后,才能找到通过MacPorts安装并使用pkg-config安装的依赖项。/ lib。/ . Then the whole configure`奇迹般地过去了!
Alexy

5
brew install libav
Steven Soroka,

1
在倒数第二步,构建lib-av。错误:找不到螺母
Chase Roberts

@ChaseRoberts嗨,Chase,我也有找不到nutnuts的问题。我尝试遵循指南gist.github.com/morgant/1753095,但遇到了更多错误。您曾经能够使事情正常吗?
约翰

好的,我只需要重新安装homebrew brew install libav即可上班。
约翰

1

对于那些没有brew-并且直到macports提出了一个端口之前libav,这里是我在源代码(libav版本12_dev0,来自github)上在OSX 10.8.5上安装libav的说明。

我遇到的主要问题是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}/libavdevicesem_timedwait.oOBJS变量末尾添加

配置并制作全部

你已准备好出发。

作为记录,我使用了以下configure命令:

./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库的系统或系统的其他任何部分的工作产生副作用,而libav库现在已经在其中sem_timedwait()实现了!!!! 对于后者,我建议重命名sem_timedwait()您在您的libavKeith实现副本中所有地方。还要检查是否有其他符号从sem_timedwait.o中导出,并对其重命名。

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

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(删除_keith以获取原始名称)。sem_timedwait()in libav(针对所述版本)的唯一引用是in jack.c


0

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

brew install libav --with-openssl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.