Gibt es einen besseren Weg, um ffmpeg von dmg zu installieren und dann von einem Terminal aus auszuführen?

11

Von hier aus: https://ffmpeg.org/download.html#build-mac Ich habe statische Builds 64-Bit ausgewählt, auch ich zu https://evermeet.cx/ffmpeg/

Ich habe dann folgendes heruntergeladen:

Geben Sie hier die Bildbeschreibung ein

und öffnete es mit folgendem:

Geben Sie hier die Bildbeschreibung ein

was mir folgendes gab:

Last login: Wed Jun  6 09:41:56 on ttys000
david-selfs-Air:~ david$ /Volumes/FFmpeg\ 91200-g1616b1be5a/ffmpeg ; exit;
ffmpeg version N-91200-g1616b1be5a-tessus Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 9.1.0 (clang-902.0.39.1)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      56. 18.102 / 56. 18.102
  libavcodec     58. 19.104 / 58. 19.104
  libavformat    58. 17.100 / 58. 17.100
  libavdevice    58.  4.100 / 58.  4.100
  libavfilter     7. 24.100 /  7. 24.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100
  libpostproc    55.  2.100 / 55.  2.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...7 completed.

[Process completed]

Wenn ich jedoch ein Terminal öffne und versuche ffmpegoder man ffmpegoder sogar ffmpeg -i filename.mp4 -vn filename.wav(von hier ), bekomme ich nur

-bash: ffmpeg: Befehl nicht gefunden

Ich muss in der Nähe sein. Gibt es einen Ort, für den ich jetzt einen Pfad definieren muss ffmpeg? Ich weiß nicht, wie ich das machen soll oder welchen Weg ich benutzen soll.

Gibt es einen besseren Weg?

uhoh
quelle

Antworten:

20

Das Problem ist bashdie Suche ffmpegin der Verzeichnisliste in der $PATH. Einige dieser Verzeichnisse sind durch SIP geschützt. Daher müssen Sie SIP deaktivieren , um die Datei in diesen Verzeichnissen abzulegen . Alternativ können Sie es mit Homebrew installieren.

Installieren Sie zuerst HomeBrew mit diesem Befehl:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Dann installieren Sie ffmpegmit diesem Befehl:

brew install ffmpeg

Homebrew installiert ffmpeg in einem Pfad, der nicht durch SIP geschützt ist , sondern innerhalb des Verzeichnisses$PATH , genauer gesagt , unter dem /usr/local/binVerzeichnis.

Dies kann manuell mit manuellen Befehlen erfolgen (im Grunde genommen manuell, was Homebrew tut. Für diesen Ansatz lesen Sie die Antwort von @davids. Ich würde Homebrew jedoch aus mehreren Gründen empfehlen. Es ist viel einfacher zu verwenden und schneller, eine große Anzahl von Tools zu installieren kann auch viel schneller aktualisiert werden. Homebrew erleichtert auch die Installation von Abhängigkeiten.

Bearbeiten: Ich hatte zuvor einen Teil dieser Antwort mit ungenauen Informationen, die ich seitdem geändert habe. Ich glaube, dass es derzeit korrekt ist. Ich habe den Teil über SIP aufgenommen, weil ich denke, dass es wichtig ist zu verstehen, welche Einschränkungen bei der Platzierung von Befehlen bestehen und warum es nicht nur einen einzigen Pfad für alle Befehle gibt.

JBis
quelle
26

Sie sollen das Programm vom Disk-Image in Ihre lokalen Ordner kopieren. Der übliche Ort für diese Dinge ist / usr / local / bin

Damit:

sudo mkdir -p /usr/local/bin
sudo cp /Volumes/FFmpeg\ 91200-g1616b1be5a/ffmpeg /usr/local/bin/
sudo chmod +x /usr/local/bin/ffmpeg

und alles sollte gut zu gehen sein. Deaktivieren von SIP nicht erforderlich.

Kein Homebrew oder ein anderer Paket-Handler erforderlich, um eine vorkompilierte Binärdatei zu installieren. Sie müssen sich jedoch mit UNIX vertraut machen.

David
quelle
2

Die Terminal-Shell von macOS sucht wie in Windows oder Linux in der $PATHUmgebungsvariablen nach Binärdateien.

Sie können Ihre $PATHVariable überprüfen , indem Sie Folgendes tun:

echo $PATH

Welche Ausgaben in Standard-MacOS der letzten Zeit:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Sie müssen entweder eine Kopie der Binärdatei in eines dieser Verzeichnisse einfügen (vorzugsweise / usr / local / bin, da es nicht SIP- geschützt ist) oder ein anderes Verzeichnis in Ihre $PATHUmgebungsvariable einfügen.

Die beste Vorgehensweise besteht im Allgemeinen darin, Ihre Anwendung an einem anderen Ort zu speichern (z. B. /lib) und nur einen Symlink in das bin-Verzeichnis einzufügen, der auf die Binärdatei selbst verweist. Dies gilt weniger für sich geschlossene binäre aber obligatorisch , wenn Sie eine ausführbare Datei ausgeführt werden soll , dass befindet sich innerhalb eines .app (zB /Applications/VLC.app/Contents/MacOS/VLC)

Zakinster
quelle
Auf macOS der kanonische Ort für selbst installierte Unix - Binärdateien ist /usr/localoder genauer gesagt /usr/local/bin,
nohillside