Як встановити libav / avconv на OSX?


32

OSX поставляється з утилітою для перетворення відео в командному рядку avconvert, але цей інструмент забезпечує обмежену функціональність порівняно з avconv, що надається libav .

Як я можу встановити avconv на OS X?


3
З Homebrew: 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


3
У Mac OSX залежності, встановлені через MacPorts та використовуючи pkg-config, не знаходяться, поки ви не встановите змінну середовища 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 / lib . Then the whole . / configure` вище дивом проходить!
Олексій

5
brew install libav
Стівен Сорока

1
На другому до останнього кроку побудуйте lib-av. ПОМИЛКА: гнучки не знайдені
Чейз Робертс

@ChaseRoberts Привіт Чейз, у мене також є та сама проблема з гнучками, які не знайдено. Я спробував дотримуватися посібника gist.github.com/morgant/1753095, але виникло більше помилок. Ви коли-небудь змогли змусити роботу працювати?
Іван

ОК, я просто повинен був знову встановити домашню мову, щоб приступити brew install libavдо роботи.
Іван

1

Для тих, хто не має brew- і поки макпорти не придумають порт для 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.