Como converter em lote arquivos de música com ffmpeg

Como converter em lote arquivos de música com ffmpeg

O FFMPEG está no centro de toneladas de concessionárias multimídia, mas o próprio utilitário não tem a capacidade de converter vários arquivos de uma só vez. Felizmente, o FFMPEG é escritor e você pode facilmente configurar algo rapidamente com o Bash.

Neste tutorial, você aprenderá:

  • Como configurar suas variáveis
  • Como construir o loop
  • Como retirar os nomes dos arquivos
  • Como montar tudo e correr
Batch Converter arquivos de áudio com FFMPEG.

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Qualquer distribuição com ffmpeg
Programas Ffmpeg
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular
  1. Configure suas variáveis

    A única maneira real de lidar com as conversões de arquivos em lote com o FFMPEG é através de um script Bash. Não precisa ser super complexo ou detalhado, mas você pode, se quiser. Este guia vai funcionar com algo muito mais simples que faz o trabalho.

    Primeiro, crie um arquivo para o seu script.



    toque em ffmpeg lote.sh

    Em seguida, abra -o com seu editor de texto favorito e configure -o como um script bash.

    #! /BIN/BASH

    Este script usará uma série de variáveis ​​para caminhos de arquivos, extensões e opções de FFMPEG. Dessa forma, é flexível o suficiente para que você possa passar por diferentes arquivos em diferentes locais, escolhendo seus formatos de arquivo à medida que avança.

    Existem cinco variáveis ​​que você precisará. Você precisará de um para cada diretório de entrada e o diretório de saída. Em seguida, você precisará de um conjunto para a extensão do arquivo de entrada e outro para a extensão de saída. Finalmente, você pode criar um que é um problema geral para suas opções de conversão. No total, deve parecer algo assim:

    srCext = $ 1 Destext = $ 2 srcdir = $ 3 Destdir = $ 4 Opts = $ 5
    cópia de

    Se você quiser modificá -lo, vá em frente. As extensões são necessárias, em vez de simplesmente puxá -las do arquivo, porque uma pasta pode conter mais de um tipo de arquivo. Se você preferir assumir que há apenas um tipo de arquivo em uma pasta, vá em frente e modifique o script para funcionar dessa maneira.

  2. Construir o loop

    Tudo neste script acontece através de um simples antes laço. Ele irá iterar em todos os arquivos com a extensão especificada no diretório especificado.

    para o nome do arquivo em "$ srcdir"/*.$ srcext; feito
    cópia de
  3. Despoja os nomes dos arquivos

    Para tornar o script verdadeiramente adaptável, você precisará retirar os caminhos e extensões de cada arquivo para obter o nome do arquivo como é. Dessa forma, o script poderá exportar os arquivos recém -convertidos com nomes idênticos, eliminando a necessidade de você especificar ou renomear individualmente arquivos.

    Primeiro, retire a extensão e atribua isso a uma nova variável.

    para o nome do arquivo em "$ srcdir"/*.$ srcext; fazer

    Em seguida, retire o caminho do nome do arquivo.

    Basename = $ BASEPATH ##*/

    Você pode tentar ecoar o resultado para ver o que está recebendo. Deve ser apenas o nome do arquivo.

    eco $ basename
  4. Junte tudo e corra

    Você está finalmente pronto para adicionar o trabalho real do FFMPEG. Esta parte é essencialmente apenas uma chamada simples para o FFMPEG, mas trabalhando com suas variáveis ​​no lugar de nomes de arquivos literais. Dê ao FFMPEG o nome completo do arquivo com o caminho como sua entrada. Em seguida, construa a saída usando o diretório de destino, o nome do arquivo despojado e a extensão do arquivo de destino. Inclua suas opções entre. As citações são necessárias para o Bash tratar cada variável como uma corda.

    ffmpeg -i "$ filename" $ ​​opts "$ destdir"/"$ basename"."$ Destext"

    Você pode adicionar uma mensagem após o loop, confrontando que os arquivos foram convertidos com sucesso. No total, seu script deve parecer algo assim:

    #! /bin/bash srcext = $ 1 Destext = $ 2 srcdir = $ 3 Destdir = $ 4 Opts = $ 5 para o nome do arquivo em "$ srcdir"/*.$ srcext; Faça Basepath = $ FileName%.* nome Basen = $ Basepath ##*/ ffmpeg -i "$ filename" $ ​​opts "$ destdir"/"$ basename".Conversão "$ Destext" Echo "de $ srcext para $ Destext Complete!"
    cópia de

    Não há muito, mas o script é suficiente para lidar com a maioria das situações. Agora, correr seria algo assim:

    ./ffmpeg lote.SH FLAC MP3/Home/UserName/Music/'Led Zeppelin'/'Led Zeppelin'//Home/Username/Music/'Led Zeppelin mp3'/"-AB 320K"

Conclusão

Depois de se acostumar, mesmo algo assim pode ser uma maneira extremamente útil de gerenciar seu áudio e até vídeos, arquivos. O FFMPEG é uma excelente ferramenta e, se você preferir o minimalismo, poderá obter o mesmo resultado que um programa gráfico inchado com um comando de linha única.

Tutoriais do Linux relacionados:

  • Mastering Bash Script Loops
  • Melhores distribuições de linux multimídia
  • Melhor tocador de música para Linux
  • Ubuntu 20.04 Instalação do FFMPEG
  • Loops aninhados em scripts de basquete
  • Coisas para instalar no Ubuntu 20.04
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Como criar um pacote Flatpak
  • Tutorial de depuração do GDB para iniciantes
  • Como obter e alterar os metadados de áudio no Linux