32

OSX поставляется с командной строкой преобразованием видео утилиты avconvert но этот инструмент обеспечивает ограниченную функциональность по сравнению с avconv предоставленного libav.

Как я могу установить avconv на OS X?

4 ответа4

51

Просто установите его с помощью brew:

brew install libav
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-варианты x264 +asm

Вы должны получить что-то вроде: [libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX

1

Для тех, у кого нет brew - и пока macports не придумала порт для libav , вот мои заметки по установке libav на OSX 10.8.5 из исходного кода (libav версия 12_dev0 , из github).

Основная проблема, с которой я столкнулся, заключалась в том, что libav использует sem_timedwait() (semaphore.h в linux), который не определен в macos.

В этом посте https://stackoverflow.com/a/15163760 упоминается, что Кит Шортридж из группы разработчиков программного обеспечения Австралийской астрономической обсерватории (спасибо) написал реализацию указанной функции для макросов, которую можно найти здесь https://github.com/attie/libxbee3/ дерево / ведущий / 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 и реализации Кейта. Также проверьте, экспортируются ли какие-либо другие символы из sem_timedwait.o и также переименуйте их.

Вот новые, переименованные символы из реализации sem_timedwait() Кейта Шортриджа:

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(удалите _keith чтобы получить оригинальные имена). Единственная ссылка на sem_timedwait() в libav (для указанной версии) находится в jack.c

0

Для видео, размещенного на https (многие из этих дней), убедитесь, что вы собрали avconv с поддержкой OpenSSL:

brew install libav --with-openssl

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .