Quero converter todos os arquivos * .flac em * .mp3 na pasta específica.
Isto é o que eu tentei, mas não funciona:
# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60
Como conseguir meu objetivo?
bash
shell-script
ffmpeg
Kevin Dong
fonte
fonte
Respostas:
Tente o seguinte:
fonte
$(basename "${i/.flac}")
para lidar com espaços?for
loop: IFS = $ '\ n'$(basename "${i/.flac}").mp3
para"$(basename "${i/.flac}").mp3"
(colocando aspas)Uma solução simples de 1 liner:
find -name "*.flac" -exec ffmpeg -i {} -acodec libmp3lame -ab 128k {}.mp3 \;
http://lewisdiamond.blogspot.ca/2012/01/converting-flac-to-mp3.html
Observe que isso será aplicado recursivamente no diretório fornecido. Ou seja, se você executar isso na sua pasta Música, ele converterá todos os flacs das subpastas e produzirá um .mp3 ao lado. Você também pode fazê-lo sem o ffmpeg usando diretamente flac e lame (ou seja, leia w / flac, pipe to lame, faça a saída para um arquivo .mp3), conforme mostrado no link.
fonte
-maxdepth 1
que penso na resposta de X Tian para limitar a recursividade.find -name "*.flac" -exec bash -c 'ffmpeg -i "{}" -y -acodec libmp3lame -ab 128k "${0/.flac}.mp3"' {} \;
Se você tiver alguns espaços em branco nos nomes dos arquivos:
fonte
Peguei tudo o que encontrei aqui (e talvez em alguns outros sites) e criei uma pequena ferramenta para não apenas criar mp3s de flacs recursivamente, mas também preservar caminhos relativos para criá-los em outros lugares com suporte a multithread.
ah, e sim, entendi, eu não usei ffmpeg nesse caso, porque meu OSMC não forneceu pacotes para ffmpeg, apenas avconv, mas como você já está aqui, acho que sabe, é "basicamente" o mesmo - pelo menos para a parte mais importante. Apenas substitua o comando "avconv" por "ffmpeg". Minhas primeiras execuções foram com a caixa ffmpeg e as mesmas opções.
Eu não sou um hacker do bash, mas o gerenciei como meu primeiro bashscript com as demandas fornecidas, e talvez alguém se beneficie. Estou aberto a sugestões do seu lado, mas até agora funciona para mim.
meu script para girar as 4 instâncias, uma para cada núcleo, é assim:
E o script de trabalho como este:
que pode ser encontrado em https://github.com/erdnuesse/flac-to-mp3
Atenciosamente, Kay
fonte
Eu trabalhei na resposta do @ Ketan usando avconv, pois o ffmpeg não funciona bem por aqui.
Isso converte
flac
arquivos em uma pasta emmp3
arquivos e move-os para uma pasta "mp3" existente. Os arquivos serão nomeados no modelo "original_name.flac.mp3"fonte
fonte
O GNU Parallel é feito para este tipo de tarefas:
Ele executará os trabalhos em paralelo (um trabalho por núcleo da CPU) e verifique se a saída no terminal não está misturada.
Para saber mais, passe 15 minutos lendo o capítulo 1 + 2: https://zenodo.org/record/1146014
fonte
{.}.mp3 :::
construção faz? Ou consulte a seção do manual que explica isso?FTW paralelo (sem dúvida, você tem mais de um núcleo - por que não usá-los?):
fonte
Por exemplo, se você tiver vários arquivos avi:
fonte
Se puder ajudar ... Escrevi um pequeno script bash para fazer isso ... Você precisa ter o ffmpeg / flac instalado.
Como funciona:
São necessários 2 argumentos:
Produz:
fonte
Para converter recursivamente em mp3 todos os arquivos flac ou wav em pastas aninhadas, usei este comando:
Ele criará uma pasta chamada "mp3" dentro da pasta com arquivos flac ou wav e, dentro da pasta mp3, salvará os arquivos mp3 relativos com uma taxa de bits de 320kbps, sem manter a extensão antiga do arquivo no nome.
fonte
O nome do arquivo é "wav2mp3"
fonte
para um in * .flac
fazer OUTF =
echo "$a" | sed s/\.flac$/.mp3/g
ffmpeg -i "$ a" -acodec libmp3lame "$ OUTF"
feito
fonte
Sei que isso chega muito tarde, mas, para memória, veja meu script "batchaudiocvt" no sourceforge. É um script de shell (bastante grande) projetado para conversão em massa eficiente de arquivos de áudio, entre muitos formatos. Em particular, faz o possível para converter as tags comuns.
fonte