OSX поставляється з утилітою для перетворення відео в командному рядку avconvert, але цей інструмент забезпечує обмежену функціональність порівняно з avconv, що надається libav .
Як я можу встановити avconv на OS X?
OSX поставляється з утилітою для перетворення відео в командному рядку avconvert, але цей інструмент забезпечує обмежену функціональність порівняно з avconv, що надається libav .
Як я можу встановити avconv на OS X?
Відповіді:
Просто встановіть його заваром:
brew install libav
Спочатку захопіть бібліотеку:
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
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` вище дивом проходить!
brew install libav
до роботи.
Для тих, хто не має 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
.
brew install libav
.