Existe alguma maneira de converter um monte de arquivos .ogg em cerca de 30 pastas em uma pasta que contém essas pastas em arquivos .mp3 e colocá-los em outra pasta usando o comando ffmpeg
? Os métodos anteriores que eu tentei levaram ao mesmo erro: "* .ogg não existe esse arquivo ou diretório"
Se possível, você poderia me dizer como? Não consigo encontrar nada relacionado a essa pergunta específica.
Edit: Eu tentei editar o comando e agora está me dando este erro: (isso vale para todos os arquivos na pasta)
/Users/Macbook/Downloads/Minecraft+Sound+Pack+1.13/step/wood6.ogg~/Downloads/Minecraft\ Sounds/step/wood6.mp3: No such file or directory
Eu usei isso:
$ for file in ~/Downloads/Minecraft+Sound+Pack+1.13/step/*.ogg
> do
> fullfilename=$(basename "${file}")
> filename="${fullfilename%.*}"
> ffmpeg -i "$file""~/Downloads/Minecraft\ Sounds/step/$filename.mp3"
> done
Eu acho que está tentando vincular os dois diretórios.
macos
bash
automation
mp3
The Muffin Man
fonte
fonte
ffmpeg -i file_name.ogg file_name.mp3
Respostas:
Não é surpreendente como esses pequenos problemas criam um monte de soluções :-)
Faça o download do arquivo ZIP e execute
Isso substituirá todos os
.ogg
arquivos pela.mp3
versão, excluindo o.ogg
arquivo no processo. Você ainda tem os dados originais no arquivo ZIP, se necessário.-type f
garante que apenas os arquivos sejam correspondidos (caso contrário, um diretório nomeadofoo.ogg
também seria passadoffmpeg
para processamento)-execdir
opção executa o seguinte comando no diretório em que o arquivo foi encontrado (portanto, não precisamos nos preocupar com a remoção dos nomes dos caminhos)-execdir
só podemos executar um comando, iniciamos um novo shell e passamos o conjunto de comandos via-c
ffmpeg -v 8 -i "$1" "${1%.*}.mp3" && rm -- "$1" && echo "$1"
é o comando real sendo executado, com o nome do arquivo a ser convertido como$1
sh {}
são os parâmetros passados para o script de shell como$0
e$1
respectivamente.sh
é necessária apenas por razões sintáticas (você pode colocar qualquer palavra lá, algumas pessoas usam,_
por exemplo),{}
é substituída pelo arquivo encontrado atualmente\;
termina a-execdir
parte (na verdade termina;
, mas precisa ser escapado do bash, quem o interpretaria como um terminador de comando)PS: Se você quiser ver os detalhes,
ffmpeg
remova a-v 8
peça.fonte
Usando a lógica básica no post, Sugestões para um conversor de áudio em lote? , basta fazer um
for/do
loop aninhado simples para percorrer cada um de seus diretórios. Supondo que, na melhor das hipóteses, os diretórios tenham apenas um diretório filho e os arquivos sejam bastante limpos (nada além.ogg
disso), esse script converterá automaticamente os arquivos para você.Script Logic
Basicamente, ele irá percorrer cada arquivo em cada diretório, processando-o através da
ffmpeg
conversão de.ogg
para.mp3
manter a estrutura de diretórios do original. Há duas variáveis que você precisa definir:base_dir
- o ponto inicial de onde os arquivos estão localizadosnew_base_dir
- o diretório em que você deseja que todos os arquivos terminem.Se você não deseja manter a estrutura de diretórios, basta reescrever a
ffmpeg
linha para ler:fonte
ogg
extensão. Eu poderia ter adicionado a verificação de erros para o diretório e o arquivo, mas isso é apenas para a lógica do script.Como exemplo, tenho um monte de
.ogg
arquivos no meuDownloads
diretório, então ... para converter em lote um monte de.ogg
arquivos em um determinado diretório para.mp3
arquivos no mesmo diretório, fiz o seguinte no Terminal :Isso criou um
.mp3
arquivo para cada.ogg
arquivo que tenho no meu diretório Downloads .Portanto, usando o caminho do diretório, faça o seguinte:
Dito isso, e considerando que você lida com um pacote de arquivos de som baixado da Internet, Minecraft + Sound + Pack + 1.13.zip, que contém 131 diretórios , alguns aninhados com 3 ou mais de profundidade e 1406
.ogg
arquivos, dos quais alguns dos nomes de arquivos são do mesmo modo, eu lidaria com a situação com as seguintes condições em mente.Minecraft+Sound+Pack+1.13.zip
arquivo da Internet.Com isso feito, usei o seguinte exemplo de script bash para converter cada
.ogg
arquivo na estrutura de pastas hierárquicas em um.mp3
arquivo no mesmo local. Em seguida, exclua os.ogg
arquivos, pois ainda tenho o arquivo zip original.s="..."
como ou se necessário e, como regra geral, gosto de usar$HOME
no lugar de~
.Observe que é assim que escolho lidar com a situação no momento e há muitas maneiras diferentes de escrever um script. No entanto, acredito que alcança o objetivo final de manter intacta a estrutura de pastas hierárquicas dos 131 diretórios com os 1406
.mp3
arquivos convertidos .A propósito ... No meu antigo MacBook Pro, (Retina, 15 polegadas, início de 2013) Intel Core i7 de 2,8 GHz, foram necessários pouco menos de 9 minutos para processar os
.ogg
arquivos 1406 .fonte
find
resultados (mesmo que não seja interrompido pelo problema específico) :-)ls
que normalmente é abatida e analisarfind
é a recomendação sobre ela. Eu direi que, para outro cenário específico do tipo único, eu usaria novamente o que eu publiquei porque foi testado várias vezes e funcionou sem problemas e eu só não queria dedicar tempo para formular a linha de comando necessária em conjunto com-execdir
efind
e passar pelo teste que eu achei mais fácil para testar a direção que eu fui. No entanto, não há dúvida de que sua resposta é o melhor caminho a percorrer entre eles, mas não o único!