Installando ffmpeg da dmg e poi girando da un terminale, c'è un modo migliore?

10

Da qui: link Ho scelto le build statiche a 64 bit che anch'io sono link

Ho quindi scaricato questo:

enter image description here

e lo ha aperto usando questo:

enter image description here

che mi ha dato questo:

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]

Tuttavia quando apro un terminale e provo ffmpeg o man ffmpeg o anche ffmpeg -i filename.mp4 -vn filename.wav (da qui ) tutto ciò che ottengo è

-bash: ffmpeg: command not found

Devo essere vicino, c'è un posto in cui ora devo definire un percorso per ffmpeg ? Non so come farlo, o quale percorso usare.

C'è un modo migliore?

    
posta uhoh 06.06.2018 - 04:38
fonte

3 risposte

18

Il problema è bash sta cercando ffmpeg nell'elenco delle directory in $PATH . Alcune di queste directory sono protette da SIP e pertanto è necessario disabilita SIP per inserire il file in queste directory. In alternativa, puoi installarlo usando Homebrew.

Prima installa HomeBrew con questo comando:

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

Quindi installa ffmpeg con questo comando:

brew install ffmpeg

Homebrew installerà ffmpeg in un percorso non protetto da SIP , ma all'interno di $PATH , più precisamente installerà nella directory /usr/local/bin .

Questo può essere fatto manualmente con i comandi manuali (fondamentalmente facendo manualmente ciò che fa l'homebrew. Per questo approccio controlla @davids answer. Ma suggerirei homebrew per più motivi È molto più facile da usare e più veloce da installare una grande quantità di strumenti.È anche possibile aggiornare molto più velocemente. Homebrew rende anche l'installazione delle dipendenze più facile.

Modifica: non sono sicuro del motivo per cui si ottengono così tanti downvotes. In precedenza avevo una parte di questa risposta con informazioni inaccurate che ho cambiato da allora. Credo che sia attualmente preciso. Se non sei d'accordo puoi commentare qui sotto o modificarlo se necessario. Ho incluso la parte relativa a SIP perché penso che sia importante capire quali restrizioni ci siano riguardo al posizionamento dei comandi e perché non c'è un solo percorso per tutti i comandi.

    
risposta data 06.06.2018 - 04:45
fonte
25

Dovresti copiare il programma dall'immagine del disco nelle tue cartelle locali. Il solito posto per queste cose è / usr / local / bin

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

e tutto dovrebbe andare bene. Disabilitare SIP non richiesto.

Nessuna necessità per l'homebrew o qualsiasi altro gestore di pacchetti di installare un binario precompilato. Però devi leggere su UNIX di base.

    
risposta data 06.06.2018 - 07:06
fonte
2

La shell del terminale di macOS, come in Windows o Linux, sta cercando nella variabile di ambiente $PATH per individuare i binari.

Puoi controllare la tua variabile $PATH facendo:

echo $PATH

Quali output in macOS recenti standard:

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

Devi mettere una copia del binario in una di quelle directory (preferibilmente / usr / local / bin dato che non è SIP -protected) o aggiungi un'altra directory nella tua variabile di ambiente $PATH .

La prassi migliore è generalmente quella di archiviare la tua applicazione altrove (ad esempio /lib ) e di inserire solo un link simbolico in la directory bin che punta al binario stesso. Questo è meno vero per il binario auto-contenuto, ma obbligatorio se vuoi eseguire un eseguibile che risiede in un file .app (ad esempio /Applications/VLC.app/Contents/MacOS/VLC )

    
risposta data 06.06.2018 - 08:35
fonte

Leggi altre domande sui tag