Wie installiere ich libav / avconv unter OSX?

32

OSX ist mit einer Video - Konvertierungsprogramm Befehlszeile avconvert aber dieses Tool bietet eingeschränkte Funktionalität im Vergleich zu dem avconv bereitgestellt durch libav .

Wie kann ich avconv unter OS X installieren?

Olivier
quelle
3
Mit Homebrew: brew install libav.
Mathias Bynens

Antworten:

57

Einfach mit brew installieren:

brew install libav
Weston Ganger
quelle
17

Besorgen Sie sich zuerst die Bibliothek:

 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

Richten Sie die Abhängigkeiten mit MacPorts (oder anderen Paketmanagern wie Homebrew ) ein:

sudo port install yasm zlib bzip2 faac lame speex libogg libvorbis libtheora libvpx x264 XviD openjpeg15 opencore-amr freetype

Erstelle 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

Dann kannst du laufen avconv:

avconv -i input.avi -c:v libx264 -preset slow -crf 18 output.mp4

  • x264 +asmEs scheint erforderlich zu sein, damit es funktioniert cpu-capabilities. Wenn Sie sie also nicht zum [libx264 @ 0x7fe66101a800] using cpu capabilities: none!Laufen bringen (z. B. ):

sudo port upgrade --enforce-variant x264 + asm

Sie sollten etw wie folgt bekommen: [libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX

Olivier
quelle
3
Unter Mac export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig'. Also, for the fun of it, you may add, to OS , options: X werden Abhängigkeiten, die über MacPorts installiert wurden und pkg-config verwenden, erst gefunden, wenn Sie die Umgebungsvariable ./configure --extra-cflags = -I / opt / local / include --extra-ldflags = -L / opt / local festlegen / lib . Then the whole . / configure` oben passiert auf wundersame Weise!
Alexy
5
Brew Install Libav
Steven Soroka
1
Erstellen Sie im vorletzten Schritt lib-av. FEHLER: gnutls nicht gefunden
Chase Roberts
@ChaseRoberts Hallo Chase, ich habe auch das gleiche Problem mit gnutls nicht gefunden. Ich habe versucht, einer Anleitung gist.github.com/morgant/1753095 zu folgen, bin jedoch auf weitere Fehler gestoßen. Konnten Sie jemals etwas zum Laufen bringen?
John
ok ich musste nur homebrew neu installieren, um an die arbeit brew install libavzu gehen.
John
1

Für diejenigen ohne brew- und bis macports einen Port für vorschlägt libav, hier sind meine Hinweise zur Installation von libav unter OSX 10.8.5 aus dem Quellcode (libav-Version 12_dev0, von github).

Das Hauptproblem, mit dem ich konfrontiert war, war die Verwendung von libav sem_timedwait()(semaphore.h unter Linux), die in macos nicht definiert ist.

In diesem Beitrag wird unter https://stackoverflow.com/a/15163760 darauf hingewiesen, dass Keith Shortridge von der Softwaregruppe des Australian Astronomical Observatory (danke) eine Implementierung dieser Funktion für MacOS geschrieben hat. Sie finden sie hier https://github.com/attie / libxbee3 / tree / master / xsys_darwin

Laden Sie die beiden Dateien herunter ${LIBAVDIR}/libavdeviceund fügen Sie dann die folgende Zeile in die Header-Datei ein sem_timedwait.h:

int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);

Bearbeiten Sie dann das Makefile ${LIBAVDIR}/libavdeviceund fügen Sie es sem_timedwait.oam Ende der OBJSVariablen hinzu

konfigurieren und alles machen

Du bist startklar.

Für die Aufzeichnung habe ich den folgenden Befehl configure verwendet:

./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

WARNUNG: Ich kann nicht sagen oder garantieren, ob die besagte Implementierung sem_timedwait()der richtigen ist und / oder keine Nebenwirkungen auf die Funktionsweise libavoder in der Tat auf einen anderen Teil des Systems hat, der auf libav-Bibliotheken verweist, in denen jetzt eine sem_timedwait()Implementierung vorhanden ist !!!! Für letztere kann ich vorschlagen, sem_timedwait()überall in Ihrer Kopie libavund in Keiths Implementierung umzubenennen. Überprüfen Sie auch, ob andere Symbole aus sem_timedwait.o exportiert werden, und benennen Sie sie ebenfalls um.

Hier sind die neuen, umbenannten Symbole aus Keith Shortridges Implementierung von sem_timedwait():

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(entfernen _keith, um die ursprünglichen Namen zu erhalten). Der einzige Verweis auf sem_timedwait()in libav(für diese Version) ist in jack.c.

bliako
quelle
0

Stellen Sie für Videos, die auf https gehostet werden (viele heutzutage), sicher, dass Sie avconv mit OpenSSL-Unterstützung erstellen:

brew install libav --with-openssl
jm3
quelle