Então, acabei descobrindo como fazer isso com o ffmpeg. No caso de alguém estar se perguntando em algum momento, veja como.
Btw: São 216 arquivos, todos em uma pasta, e parte do nome do arquivo é um número seqüencial. Isso facilitou um pouco o loop DOS.
A primeira coisa que fiz foi criar um arquivo de texto simples, chamado temps.txt , que tem apenas estas duas linhas:
file temp1.mp3
file temp2.mp3
Você verá o que é isso em um minuto.
Em seguida, escrevi um arquivo em lote que percorre todos os arquivos no diretório (com base na numeração seqüencial acima) e executa duas operações ffmpeg em cada:
FOR /L %%i IN (1,1,216) DO (
ffmpeg.exe -y -i OriginalFile%%i.mp3 -ss 00:03.81 -to 00:08.83 -acodec copy "temp1.mp3" -ss 00:13.95 -acodec copy "temp2.mp3"
ffmpeg.exe -y -safe 0 -f concat -i temps.txt -c copy NewFile%%i.mp3
)
A primeira operação pega os dois segmentos desejados e os copia para temp1.mp3 e temp2.mp3 (eu continuei reutilizando esses mesmos dois nomes de arquivos). O ffmpeg permite isolar ambas as seções em uma linha de comando, o que é legal. Além disso, você pode observar que a segunda parte tem apenas o carimbo de data / hora -ss
e nenhum carimbo -to
. Isso permite que apenas use o End of File como o segundo timestamp.
A segunda operação diz ao ffmpeg para procurar no arquivo temps.txt e concatenar os dois arquivos que estão listados lá. Reutilizar os nomes dos arquivos temporários é o motivo pelo qual eu pude ter apenas o arquivo estático temps.txt que eu criei acima.
Eu escrevi isso sem rodeios (codificando o número de arquivos no diretório, reutilizando arquivos temporários, usando o sinalizador -y nas linhas de comando), porque eu sabia exatamente o que tinha que fazer trabalhar com, e eu tinha um backup de qualquer maneira. Se você está redirecionando isso, você pode querer ser um pouco mais delicado sobre essas coisas.
Além disso, perdi todos os metadados neste processo. Há provavelmente uma maneira fácil de preservar isso, mas eu não me incomodei em descobrir isso. Fácil o suficiente para eu apenas adicionar novamente aos novos arquivos de uma só vez (usando MP3Tag , uma das maiores utilidades de todo o tempo).
Então, você tem isso.
Btw, alguns links que me ajudaram a descobrir isso:
- Comecei com ffmpeg - aparar arquivo de áudio sem recodificar
- Depois, mexer com os detalhes que referenciei Documentação do ffmpeg
- Para a concatenação, recebi muito esta resposta em uma pergunta sobre estouro de pilha. A questão era sobre vídeo, o que é muito mais complicado, mas essa resposta me disse tudo o que eu precisava saber sobre áudio também. Especificamente, usei o segundo método que essa resposta descreve.
- E, finalmente, eu realmente não usei este, mas há mais informações úteis sobre o comando concat em este wiki - incluindo instruções para gerar automaticamente um arquivo de lista no Windows ou no bash.
(Obrigado @barlop pela sugestão para adicionar esses.)