Instalando ffmpeg desde dmg y luego ejecutando desde una terminal, ¿hay una mejor manera?

11

A partir de aquí: https://ffmpeg.org/download.html#build-mac Elegí compilaciones estáticas de 64 bits que también a https://evermeet.cx/ffmpeg/

Luego descargué esto:

ingrese la descripción de la imagen aquí

y lo abrí usando esto:

ingrese la descripción de la imagen aquí

que me dio esto:

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]

Sin embargo, cuando abro un terminal y trato ffmpego man ffmpegincluso ffmpeg -i filename.mp4 -vn filename.wav(de aquí ) todo lo que se obtiene es

-bash: ffmpeg: comando no encontrado

Debo estar cerca, ¿hay un lugar donde ahora necesito definir un camino ffmpeg? No sé cómo hacer eso, ni qué camino usar.

¿Hay una mejor manera?

UH oh
fuente

Respuestas:

20

El problema está bashbuscando ffmpegen la lista de directorios en el $PATH. Algunos de estos directorios están protegidos por SIP y, por lo tanto, deberá deshabilitar SIP para colocar el archivo en estos directorios. Alternativamente, puede instalarlo usando Homebrew.

Primero instale HomeBrew con este comando:

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

Luego instale ffmpegcon este comando:

brew install ffmpeg

Homebrew instalará ffmpeg en una ruta no protegida por SIP , pero dentro de $PATH, más específicamente, lo instalará en el /usr/local/bindirectorio.

Esto se puede hacer manualmente con comandos manuales (básicamente haciendo manualmente lo que hace homebrew. Para este enfoque, consulte la respuesta @davids. Pero sugeriría homebrew por múltiples razones. Es mucho más fácil de usar y más rápido instalar una gran cantidad de herramientas. también puede actualizarse mucho más rápido. Homebrew también facilita la instalación de dependencias.

Editar: Anteriormente tuve una parte de esta respuesta con información inexacta, desde entonces la he cambiado. Creo que actualmente es exacto. He incluido la parte sobre SIP porque creo que es importante comprender qué restricciones existen con respecto a la colocación de comandos y por qué no hay una sola ruta para todos los comandos.

JBis
fuente
26

Se supone que debe copiar el programa desde la imagen del disco a sus carpetas locales. El lugar habitual para estas cosas es / usr / local / bin

Entonces:

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

y todo debería estar listo. No se requiere deshabilitar SIP.

No es necesario que homebrew ni ningún otro controlador de paquetes instale un binario precompilado. Sin embargo, debe leer sobre UNIX básico.

david
fuente
2

El shell de terminal de macOS, como en Windows o Linux, está buscando en la $PATHvariable de entorno para localizar archivos binarios.

Puede verificar su $PATHvariable haciendo:

echo $PATH

Qué salidas en macOS recientes estándar:

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

Debe colocar una copia del binario en uno de esos directorios (preferiblemente / usr / local / bin ya que no está protegido por SIP ) o agregar otro directorio en su $PATHvariable de entorno.

La mejor práctica generalmente es almacenar su aplicación en otro lugar (por ejemplo /lib) y solo poner un enlace simbólico en el directorio bin apuntando al binario. Esto es menos cierto para binarios autónomos, pero obligatorio si desea ejecutar un ejecutable que reside dentro de un .app (por ejemplo /Applications/VLC.app/Contents/MacOS/VLC)

zakinster
fuente
En macOS, el lugar canónico para los binarios de Unix autoinstalados es, /usr/localo más específicamente /usr/local/bin,
nohillside