Installer ffmpeg à partir de dmg puis exécuter à partir d'un terminal, existe-t-il une meilleure façon?

11

À partir d'ici: https://ffmpeg.org/download.html#build-mac J'ai choisi des builds statiques 64 bits qui moi aussi à https://evermeet.cx/ffmpeg/

J'ai ensuite téléchargé ceci:

entrez la description de l'image ici

et l'ouvrir en utilisant ceci:

entrez la description de l'image ici

ce qui m'a donné ceci:

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]

Cependant, lorsque j'ouvre un terminal et que j'essaie ffmpegou man ffmpegou même ffmpeg -i filename.mp4 -vn filename.wav(à partir d' ici ) tout ce que je reçois est

-bash: ffmpeg: commande introuvable

Je dois être proche, y a-t-il un endroit pour lequel je dois maintenant définir un chemin ffmpeg? Je ne sais pas comment faire, ni quel chemin utiliser.

Y a-t-il une meilleure façon?

uhoh
la source

Réponses:

20

Le problème est à la bashrecherche ffmpegdans la liste des répertoires du $PATH. Certains de ces répertoires sont protégés par SIP et vous devrez donc désactiver SIP pour placer le fichier dans ces répertoires. Alternativement, vous pouvez l'installer en utilisant Homebrew.

Installez d'abord HomeBrew avec cette commande:

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

Installez ensuite ffmpegavec cette commande:

brew install ffmpeg

Homebrew installera ffmpeg dans un chemin non protégé par SIP , mais dans le $PATH, plus précisément il l' installera sous le /usr/local/binrépertoire.

Cela peut être fait manuellement avec des commandes manuelles (essentiellement faire manuellement ce que fait homebrew. Pour cette approche, consultez la réponse @davids. Mais je suggérerais homebrew pour plusieurs raisons. Son beaucoup plus facile à utiliser et plus rapide à installer une grande quantité d'outils. Vous peut également être mis à jour beaucoup plus rapidement. Homebrew facilite également l'installation des dépendances.

Edit: J'avais auparavant une partie de cette réponse avec des informations inexactes que j'ai depuis changé. Je pense que c'est actuellement exact. J'ai inclus la partie sur SIP parce que je pense qu'il est important de comprendre quelles sont les restrictions concernant le placement des commandes et pourquoi il n'y a pas qu'un seul chemin pour toutes les commandes.

JBis
la source
26

Vous êtes censé copier le programme de l'image disque vers vos dossiers locaux. L'endroit habituel pour ces choses est / usr / local / bin

Donc:

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

et tout devrait être bon pour aller. La désactivation de SIP n'est pas requise.

Pas besoin d'homebrew ou de tout autre gestionnaire de package pour installer un binaire précompilé. Vous devez cependant lire sur UNIX de base.

David
la source
2

Le shell terminal de macOS, comme sous Windows ou Linux, cherche dans la $PATHvariable d'environnement pour localiser les binaires.

Vous pouvez vérifier votre $PATHvariable en faisant:

echo $PATH

Quelles sorties dans macOS récent standard:

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

Vous devez soit mettre une copie du binaire dans l'un de ces répertoires (de préférence / usr / local / bin car il n'est pas protégé par SIP ), soit ajouter un autre répertoire dans votre $PATHvariable d'environnement.

La meilleure pratique consiste généralement à stocker votre application ailleurs (par exemple /lib) et à ne mettre qu'un lien symbolique dans le répertoire bin pointant vers le binaire lui-même. Cela est moins vrai pour les binaires autonomes, mais obligatoire si vous souhaitez exécuter un exécutable qui réside dans un .app (par exemple /Applications/VLC.app/Contents/MacOS/VLC)

zakinster
la source
Sur macOS, l'emplacement canonique pour les binaires Unix auto-installés est /usr/localou plus spécifiquement /usr/local/bin,
nohillside