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?


3
Mit Homebrew: brew install libav.
— Mathias Bynens

Antworten:



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


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.