De que ferramentas de linha de comando eu preciso para concatenar vários arquivos de áudio e produzi-los como um ogg (e / ou mp3)?
Se você puder fornecer o comando completo para concatenar e enviar para ogg, isso seria incrível.
Editar : os arquivos de entrada (no meu caso, atualmente) estão em wma
formato, mas, idealmente, deve ser flexível o suficiente para suportar uma ampla variedade de formatos populares.
Edit2 : Apenas para esclarecer, não quero mesclar todos os wma
s em um determinado diretório, apenas concatenar 2 ou 3 arquivos em um.
Obrigado pelas soluções propostas, mas todas parecem exigir a criação de arquivos temporários, se possível, eu gostaria de evitar isso.
linux
command-line
audio
hasen
fonte
fonte
mktemp -d /tmp/descriptive_name.XXXXXX
para criar um diretório temporário com um nome informativo, processar todos os meus arquivos temporários lá e depois rm -r o diretório temporário.*.wma
em uma linha de comando, certamente funcionará para uma lista menor como1.wma 2.wma 3.wma 4.wma
(deixando de fora 5.wma, 6.wma & 7.wma), simplesmente listando-as assim (em vez de usar*.wma
).Respostas:
Aqui está minha sugestão: Use mplayer e oggenc conectado a um pipe nomeado.
Use
mplayer
para decodificar o áudio. Ele pode reproduzir uma ampla variedade de formatos de áudio (e vídeo) e também pode reproduzir vários arquivos.Use
oggenc
para codificar o áudio para Ogg Vorbis.Para eliminar a necessidade de um arquivo temporário, use um canal nomeado para transferir os dados entre o codificador e o decodificador.
Colocando isso em um script:
Explicado:
-really-quiet -slave -nolirc
Existem opções para desativar as mensagens e impedir que ele leia o teclado ou o controle remoto.-vc null -vo null
Existem opções para desativar a codificação e saída de vídeo. A-ao
opção direciona a saída do áudio no formato WAV para o canal de gravação nomeado.Itens a serem deixados para melhorar: finalizar o script mais cedo se um dos comandos falhar (usar
set -e
), mas ainda assim limpar adequadamente o fifo (prender os sinais necessários).fonte
O SoX pode lidar com um grande número de formatos de áudio, dependendo de quais bibliotecas são compiladas, e pode concatenar arquivos com uma linha de comando simples
Acredito que isso funcione apenas se os arquivos de áudio de origem tiverem o mesmo número de canais, mas não testei isso.
Até onde eu sei, o SoX não oferece suporte a arquivos .wma, portanto, converter pelo menos esses arquivos com algo como ffmpeg primeiro é provavelmente inevitável.
fonte
Eu usaria ffmpeg . Para converter wma para ogg vorbis, tente:
ou mp3:
você precisará de um lame instalado para o mp3 convert.
sudo apt-get install lame libmp3lame0
Cat, então converter parece não funcionar bem, embora você possa encontrar muitas referências na web dizendo que pode fazer algo como
cat *.wma | ffmpeg -i - -acodec ...
- isso não funciona na minha máquina - apenas o primeiro arquivo é processado. Existe um codec de 'cópia' para ffmpeg, mas não faz muita diferença.Fazendo a conversão com ffmpeg primeiro, então cat * .ogg> output.ogg funcionou para mim.
fonte
-acodec libvorbis
para evitar o codificador interno do ffmpeg.Para concatenar e transcodificar arquivos de áudio, este é o fluxo de trabalho que você deseja seguir:
O processamento nessas etapas realiza a concatenação nos dados WAV, que é o mais fácil de lidar e o menos com perdas. E como você deseja transcodificar de qualquer maneira, precisará decodificar para WAV em algum lugar do processo; pode muito bem tirar proveito disso.
Aqui estão os passos que eu recomendo. Usaremos
ffmpeg
para decodificação,sox
concatenação eoggenc
codificação. Você pode substituir outras ferramentas por qualquer etapa -mencoder
e outras funcionam bem como decodificador, e qualquer ferramenta que codifique Ogg pode ser usada como codificador - embora eu ache que você será pressionado a encontrar uma ferramenta melhor do quesox
a concatenação.find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(isso é executado
ffmpeg -i infile.wma outfile.infile.wma
em cada arquivo WMA no diretório atual)sox outfile* all.wav
(note que
outfile
é o mesmo prefixo que fornecemos aos arquivos de saída na etapa 1)oggenc all.wav all.ogg
você provavelmente deseja algumas configurações de qualidade aqui, mas isso fornecerá padrões de qualidade decentes. Não obtive resultados de que gosteiffmpeg
, mas você pode preferir, por isso incluí um exemplo com o ffmpeg abaixo.Observe que o
sox
comando não funcionará corretamente, a menos que todos os arquivos WAV tenham o mesmo formato - se alguns tiverem 22kHz e 44.1kHz, por exemplo, você precisará identificá-los porsox
meio de opções da linha de comando e especificar qual formato deseja output in. Não conheço nenhuma ferramenta de linha de comando capazsox
de executar a etapa de concatenação. Você poderia enviar para um formato PCM bruto na etapa 1 e usá-lacat
na etapa 2, mas isso só funcionaria se eles estivessem no mesmo formato e você precisaria ser extremamente específico para o seu decodificador e codificador. formato que eles deveriam esperar.Codificação com ffmpeg: Muitas postagens na rede reclamam que o codificador Vorbis interno do ffmpeg não é muito bom. Se sua versão for criada com suporte a libvorbis, use-o
-acodec libvorbis
. Exemplo de linha de comando:fonte
Não funciona para arquivos .ogg, mas o mp3wrap pode concatenar vários arquivos .mp3 em um único arquivo. Então, na linha de comando, você poderia fazer algo assim
Isso usará o ffmpeg para converter todos os arquivos .wma em .mp3 e mesclar todos os arquivos .mp3 em um único arquivo.
fonte
O Mencoder pode concatenar e transcodificar vídeos sem arquivos temporários ( exemplo trivial aqui ). Há um script flutuando em algum lugar chamado aconvert que engana o mencoder para fazer somente áudio (o que normalmente se recusa a fazer). Essas duas coisas combinadas parecem satisfazer suas necessidades.
Edit: Encontrei aconvert.sh. Infelizmente, ele foi projetado apenas para converter um arquivo de áudio. Mas aqui está o código de qualquer maneira, caso alguém queira usá-lo para criar uma linha de comando que converta vários arquivos de áudio.
fonte
Pode não ser exatamente o que você precisa, mas deve ajudar http://bitzenbytes.com/index.php?name=PNphpBB2&file=viewtopic&t=6538&postdays=0&postorder=asc&sid=f87b364ddbae3ddd9417f5d10fae870c
fonte
Pensei em dar minha resposta. Essa provavelmente não é a maneira mais elegante, mas fez o que eu queria.
Etapa 1: converter para ogg (usos
mplayer
,pacpl
eruby
, todos disponíveis nos repositórios Debian gratuitos. I)Etapa 2: concatenar arquivos ogg
fonte
cat file list… | ffmpeg -f mp3 -i – -acodec copy outfile.mp3
funcionou muito bem para mim com MP3s: imagino que funcionaria com outros formatos também. Os créditos vão para Lindylex .fonte