Cómo lanzar los archivos de música para convertir con ffmpeg

Cómo lanzar los archivos de música para convertir con ffmpeg

FFMPEG está en el núcleo de toneladas de utilidades multimedia, pero la utilidad en sí no tiene la capacidad de convertir múltiples archivos a la vez. Afortunadamente, FFMPEG es scriptable, y puede configurar fácilmente algo rápidamente con Bash.

En este tutorial aprenderás:

  • Cómo configurar tus variables
  • Cómo construir el bucle
  • Cómo eliminar los nombres de los archivos
  • Cómo ponerlo todo junto y correr
Batch Convertir archivos de audio con FFMPEG.

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Cualquier distribución con FFMPEG
Software Ffmpeg
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado
  1. Configura tus variables

    La única forma real de manejar las conversiones de archivos por lotes con FFMPEG es a través de un script bash. No necesita ser súper complejo o detallado, pero puede, si le gusta esa cosa de las cosas. Esta guía va a funcionar con algo mucho más simple que hace el trabajo.

    Primero, cree un archivo para su script.



    toque FFMPEG-Batch.mierda

    A continuación, ábralo con tu editor de texto favorito y configúrelo como un script bash.

    #! /bin/bash

    Este script usará una serie de variables para rutas de archivos, extensiones y opciones FFMPEG. De esta manera, es lo suficientemente flexible como para que pueda pasarlos diferentes archivos en diferentes ubicaciones, eligiendo sus formatos de archivo a medida que avanza.

    Hay cinco variables que necesitarás. Necesitará uno para cada uno de los directorio de entrada y el directorio de salida. Luego, necesitará un conjunto para la extensión del archivo de entrada y otro para la extensión de salida. Finalmente, puede crear uno que sea una captura general para sus opciones de conversión. En total, debería verse algo así:

    srcext = $ 1 portext = $ 2 srcdir = $ 3 Destdir = $ 4 opts = $ 5
    Copiar

    Si quieres modificarlo, ve por delante. Las extensiones son necesarias, en lugar de simplemente sacarlas del archivo porque una carpeta puede contener más de un tipo de archivo. Si prefiere asumir que solo hay un tipo de archivo en una carpeta, siga adelante y modifique el script para funcionar de esa manera.

  2. Construir el bucle

    Todo en este guión sucede a través de un simple delantero bucle. Iterará a través de cada archivo con la extensión especificada en el directorio especificado.

    para el nombre de archivo en "$ srcdir"/*.$ srcext; hacer hecho
    Copiar
  3. Despojar los nombres de los archivos

    Para que el script sea realmente adaptable, necesitará eliminar las rutas y extensiones de cada archivo para obtener el nombre del archivo como es. De esta manera, el script podrá exportar los archivos recién convertidos con nombres idénticos, eliminando la necesidad de que especifique o cambie el nombre de archivos.

    Primero, quite la extensión y asigne eso a una nueva variable.

    para el nombre de archivo en "$ srcdir"/*.$ srcext; hacer

    Luego, elimine la ruta del nombre del archivo.

    Basename = $ BasePath ##*/

    Puedes intentar hacer eco del resultado para ver lo que estás obteniendo. Debería ser solo el nombre del archivo en sí.

    Echo $ Basename
  4. Ponlo todo junto y corre

    Finalmente estás listo para agregar el trabajo real de FFMPEG. Esta parte es esencialmente una simple llamada a FFMPEG, pero trabajando con sus variables en lugar de nombres de archivos literal. Dale a FFMPEG el nombre de archivo completo con la ruta como su entrada. Luego, construya la salida utilizando el directorio de destino, el nombre de archivo despojado y la extensión del archivo de destino. Incluya sus opciones entre. Las citas son necesarias para que Bash trate a cada variable como una cadena.

    ffmpeg -i "$ nombre de archivo" $ opts "$ Destdir"/"$ Basename"."$ Derext"

    Puede agregar un mensaje después del bucle, confrontando que los archivos se convirtieron correctamente. En total, su guión debería verse algo así:

    #! /bin/bash srcext = $ 1 portext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5 para el nombre de archivo en "$ srcdir"/*.$ srcext; hacer basepath = $ nombre de archivo%.* basename = $ BasePath ##*/ ffmpeg -i "$ FileName" $ ​​Opts "$ Destdir"/"$ Basename".Conversión de "$ Destrext" Done Echo "de $ Srcext a $ Destrext Complete!"
    Copiar

    No hay mucho, pero el guión es suficiente para manejar la mayoría de las situaciones. Ahora, ejecutarlo se vería algo así:

    ./ffmpeg-batch.sh flac mp3/home/username/music/'led zeppelin'/'led zeppelin'//home/username/music/'led zeppelin mp3'/"-ab 320k"

Conclusión

Una vez que se acostumbra, incluso algo como esto puede ser una forma extremadamente útil de administrar su audio, e incluso videos, archivos. FFMPEG es una herramienta excelente, y si prefiere el minimalismo, puede obtener el mismo resultado que un programa gráfico hinchado con un comando de línea única.

Tutoriales de Linux relacionados:

  • Mastering Bash Script Loops
  • Las mejores distribuciones multimedia Linux
  • El mejor reproductor de música para Linux
  • Ubuntu 20.04 Instalación de FFMPEG
  • Bucles anidados en guiones Bash
  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cómo crear un paquete Flatpak
  • Tutorial de depuración de GDB para principiantes
  • Cómo obtener y cambiar los metadatos de audio en Linux