OSX jest wyposażony w narzędzie do konwersji wideo avconvert z wiersza poleceń, ale to narzędzie zapewnia ograniczoną funkcjonalność w porównaniu do avconv dostarczanego przez 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
Skonfiguruj zależności za pomocą MacPorts (lub innych menedżerów pakietów, takich jak Homebrew ):
x264 +asmwydaje się być wymagane do działania cpu-capabilities, więc jeśli ich nie dostaniesz (tj. [libx264 @ 0x7fe66101a800] using cpu capabilities: none!) uruchom:
sudo port upgrade --enforce-varitions x264 + asm
Powinieneś dostać coś takiego: [libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
W systemie Mac OSX zależności zainstalowane przez MacPorts i przy użyciu pkg-config nie zostaną znalezione, dopóki nie zostanie ustawiona zmienna środowiskowa 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` powyżej cudownie mija!
Alexy,
5
brew install libav
Steven Soroka
1
Na drugim do ostatniego kroku skompiluj lib-av. BŁĄD: nie znaleziono gnutlów
Chase Roberts
@ChaseRoberts Cześć Chase, mam również ten sam problem z gnutlami nie znalezionymi. Próbowałem postępować zgodnie z przewodnikiem gist.github.com/morgant/1753095, ale napotkałem więcej błędów. Czy kiedykolwiek byłeś w stanie sprawić, że wszystko zadziałało?
John
ok, po prostu musiałem ponownie zainstalować homebrew, aby zabrać się brew install libavdo pracy.
Jan
1
Dla tych, którzy nie mają brew- i dopóki Macports nie wymyśli portu libav, oto moje uwagi dotyczące instalacji libav na OSX 10.8.5 ze źródła (wersja libav 12_dev0, z github).
Główny problem, z którym się spotkałem, polegał na tym, że libav używa sem_timedwait()(semaphore.h w systemie Linux), który nie jest zdefiniowany w macos.
OSTRZEŻENIE: Nie mogę powiedzieć ani zagwarantować, czy wspomniana implementacja sem_timedwait()jest poprawna i / lub nie będzie miała żadnych skutków ubocznych w działaniu libavlub w ogóle jakiejkolwiek innej części systemu, która łączy się z bibliotekami libav, które mają tam sem_timedwait()implementację !!!! W tym drugim przypadku sugeruję zmianę nazwy sem_timedwait()wszędzie w twojej kopii libavi implementacji Keitha. Sprawdź także, czy jakieś inne symbole nie są eksportowane z sem_timedwait.o, i zmień także ich nazwy.
Oto nowe, przemianowane symbole z implementacji Keitha Shortridge'a sem_timedwait():
brew install libav
.Odpowiedzi:
Po prostu zainstaluj z naparem:
źródło
Najpierw weź bibliotekę:
Skonfiguruj zależności za pomocą MacPorts (lub innych menedżerów pakietów, takich jak Homebrew ):
Zbuduj libav:
Następnie możesz uruchomić
avconv
:x264 +asm
wydaje się być wymagane do działaniacpu-capabilities
, więc jeśli ich nie dostaniesz (tj.[libx264 @ 0x7fe66101a800] using cpu capabilities: none!
) uruchom:Powinieneś dostać coś takiego:
[libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
źródło
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` powyżej cudownie mija!brew install libav
do pracy.Dla tych, którzy nie mają
brew
- i dopóki Macports nie wymyśli portulibav
, oto moje uwagi dotyczące instalacji libav na OSX 10.8.5 ze źródła (wersja libav12_dev0
, z github).Główny problem, z którym się spotkałem, polegał na tym, że libav używa
sem_timedwait()
(semaphore.h w systemie Linux), który nie jest zdefiniowany w macos.W tym poście https://stackoverflow.com/a/15163760 wspomina się, że Keith Shortridge z grupy oprogramowania Australijskiego Obserwatorium Astronomicznego (dzięki) napisał implementację wspomnianej funkcji dla makr, którą można znaleźć tutaj https://github.com/attie / libxbee3 / tree / master / xsys_darwin
Pobierz dwa pliki,
${LIBAVDIR}/libavdevice
a następnie dodaj następujący wiersz w pliku nagłówkowymsem_timedwait.h
:int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
Następnie edytuj plik Makefile
${LIBAVDIR}/libavdevice
i dodajsem_timedwait.o
na końcuOBJS
zmiennejskonfiguruj i wykonaj wszystko
Możesz ruszać.
do zapisu użyłem następującego polecenia konfiguracyjnego:
./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
OSTRZEŻENIE: Nie mogę powiedzieć ani zagwarantować, czy wspomniana implementacja
sem_timedwait()
jest poprawna i / lub nie będzie miała żadnych skutków ubocznych w działaniulibav
lub w ogóle jakiejkolwiek innej części systemu, która łączy się z bibliotekami libav, które mają tamsem_timedwait()
implementację !!!! W tym drugim przypadku sugeruję zmianę nazwysem_timedwait()
wszędzie w twojej kopiilibav
i implementacji Keitha. Sprawdź także, czy jakieś inne symbole nie są eksportowane z sem_timedwait.o, i zmień także ich nazwy.Oto nowe, przemianowane symbole z implementacji Keitha Shortridge'a
sem_timedwait()
:sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith
(usuń,
_keith
aby uzyskać oryginalne nazwy). Jedyne odniesienie dosem_timedwait()
inlibav
(dla wspomnianej wersji) znajduje się wjack.c
.źródło
W przypadku filmów hostowanych na https (obecnie wiele) upewnij się, że budujesz avconv z obsługą OpenSSL:
źródło