Instalando o ffmpeg a partir do dmg e depois executando a partir de um terminal, existe uma maneira melhor?

11

A partir daqui: https://ffmpeg.org/download.html#build-mac Eu escolhi construções estáticas de 64 bits, o que também eu https://evermeet.cx/ffmpeg/

Eu então baixei este:

insira a descrição da imagem aqui

e abriu usando isso:

insira a descrição da imagem aqui

o que me deu o seguinte:

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]

No entanto, quando eu abrir um terminal e tentar ffmpegou man ffmpegou até mesmo ffmpeg -i filename.mp4 -vn filename.wav(de aqui ) tudo que eu vejo é

-bash: ffmpeg: comando não encontrado

Devo estar perto, existe um lugar para o qual agora preciso definir um caminho ffmpeg? Não sei como fazer isso, ou que caminho usar.

Existe uma maneira melhor?

uhoh
fonte

Respostas:

20

O problema é bashprocurar ffmpegna lista de diretórios no $PATH. Alguns desses diretórios são protegidos pelo SIP e, portanto, você precisará desativar o SIP para colocar o arquivo nesses diretórios. Como alternativa, você pode instalá-lo usando o Homebrew.

Primeiro instale o HomeBrew com este comando:

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

Em seguida, instale ffmpegcom este comando:

brew install ffmpeg

O Homebrew instalará o ffmpeg em um caminho não protegido pelo SIP , mas dentro do $PATH, mais especificamente, ele será instalado no /usr/local/bindiretório

Isso pode ser feito manualmente com comandos manuais (basicamente fazendo manualmente o que o homebrew faz. Para essa abordagem, consulte @davids answer. Mas eu sugiro o homebrew por várias razões. É muito mais fácil de usar e mais rápido instalar uma grande quantidade de ferramentas. O Homebrew também facilita a instalação de dependências.

Edit: Eu anteriormente tinha uma parte desta resposta com informações imprecisas que eu mudei desde então. Eu acredito que é atualmente preciso. Eu incluí a parte sobre o SIP porque acho importante entender quais restrições existem em relação à colocação de comandos e por que não existe apenas um único caminho para todos os comandos.

JBis
fonte
26

Você deve copiar o programa da imagem do disco para suas pastas locais. O local usual para essas coisas é / usr / local / bin

Assim:

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

e tudo deve estar pronto. Desabilitar o SIP não é necessário.

Não é necessário que o homebrew ou qualquer outro manipulador de pacotes instale um binário pré-compilado. Você precisa ler o UNIX básico.

david
fonte
2

O shell do terminal do macOS, como no Windows ou Linux, está procurando na $PATHvariável de ambiente a localização de binários.

Você pode verificar sua $PATHvariável fazendo:

echo $PATH

Quais saídas no macOS recente padrão:

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

Você precisa colocar uma cópia do binário em um desses diretórios (de preferência / usr / local / bin, pois não é protegido por SIP ) ou adicionar outro diretório em sua $PATHvariável de ambiente.

A melhor prática é geralmente armazenar seu aplicativo em outro local (por exemplo /lib) e colocar apenas um link simbólico no diretório bin apontando para o próprio binário. Isso é menos verdadeiro para o binário independente, mas obrigatório, se você deseja executar um executável que resida dentro de um .app (por exemplo /Applications/VLC.app/Contents/MacOS/VLC)

zakinster
fonte
No MacOS o lugar canônico para binários Unix auto-instalado é /usr/localou, mais especificamente /usr/local/bin,
nohillside