Dividindo um arquivo de áudio em pedaços de um comprimento especificado

16

Eu tenho vários arquivos de áudio longos (80 minutos cada; m4a) e quero que eles sejam divididos em partes de 5 ou 10 minutos.

Vejo muitas perguntas para dividir um arquivo de áudio em pausas, tons etc., mas não consigo encontrar uma sobre essa operação simples. Alguém sabe uma maneira simples de fazer isso?

Obviamente, algo automático e a linha de comando estão bem - até preferidos.

Desde já, obrigado!

Andrew Cheong
fonte

Respostas:

20

Com o ffmpeg recente (faça o download de uma compilação estática aqui ):

ffmpeg -i in.m4a -f segment -segment_time 300 -c copy out%03d.m4a

Isso usa o muxer de segmento e copia os fluxos de bits. Se o seu arquivo tiver fluxos de áudio e vídeo, você poderá desativar o fluxo de vídeo com -vn.


Aqui está uma lista, você só precisa de Ruby e FFmpeg instalados:

ruby -e '(0..4500).step(300) { |x| system "ffmpeg -ss #{x} -i in.m4a -c copy -t 300 out-#{x}.m4a"}'

Simplesmente execute isso na mesma pasta onde in.m4aestá. Ele copiará o fluxo de bits de áudio, portanto, a execução disso provavelmente levará menos de alguns segundos.

Explicar:

  • 4800 segundos é a duração do arquivo de áudio (80 minutos × 60 segundos); portanto, nossa última divisão é de 4500 (4800 - 300 segundos).
  • Vamos de 0 a 4500 e dividimos a cada 300 segundos (5min × 60s).
  • O FFmpeg será iniciado no horário especificado por -ss
  • E ele será copiado pelo tempo especificado por -t
  • Ele gravará vários arquivos de saída chamados out-<x>.mp4, onde <x>é o horário de início em segundos.
slhck
fonte
Obrigado! O seu comando é para UNIX ou também funciona no Windows? Eu tenho uma instalação do Cygwin, por isso não deve importar, mas apenas pensando. Vou tentar quando chegar em casa.
Andrew Cheong
Isso funciona nativamente no Linux (e Unixes que possuem Ruby instalado), e também deve funcionar no Windows - você simplesmente precisa de Ruby e FFmpeg, mas não precisará do Cygwin para isso. Também existem executáveis Ruby Installer e FFmpeg para Windows. Agora, o comando FFmpeg pode ser automatizado sem Ruby, usando arquivos em lotes do Windows ou PowerShell, mas eu não sou usuário do Windows, por isso peguei o Ruby (porque ele vem com Linux e OS X). Talvez alguém com experiência em lote do Windows possa reescrever o comando Ruby acima?
slhck
Eu tenho o Cygwin porque não consigo me acostumar com a linha de comando do Windows. Acho que já tenho o ruby ​​e o ffmpeg instalados lá, então devo poder usar seu comando. Mas sim, uma versão do Windows pode ajudar alguém a visualizar esta pergunta. +1 por enquanto; aceitará quando eu tentar.
Andrew Cheong
2
Se, como eu, seu arquivo m4a incluir um fluxo de vídeo (no meu caso, uma única imagem), você precisará adicionar a -vnopção para selecionar apenas o fluxo de áudio. Se você deseja manter o fluxo de vídeo, precisará gerar um arquivo com uma extensão .mp4.
Rob Church
2

Eu mesmo estava procurando uma solução para isso. A maneira mais fácil de fazer isso é através do MP4Box :

mp4box -split 300 infile.m4a

Onde "300" é o tempo em segundos. O MP4Box grava automaticamente arquivos de saída numerados.

(Você não precisa instalar todo o grande aplicativo GPAC. Estes são os arquivos que você pode extrair do arquivo morto para que funcione: js.dll; libeay32.dll; libgpac.dll; MP4Box.exe; ssleay32.dll)

dfkt
fonte
2

Já faz um tempo desde que essa pergunta foi feita, mas depois de brincar com Ruby e ffmpeg, decidi que deveria haver uma maneira mais fácil de fazer isso no Windows, e descobri que existe.

Baixe e instale o Audacity

Crie um arquivo de texto em algum lugar em que você possa encontrá-lo e cole a seguinte string: (intervalos de 300 segundos, ou seja, 5 minutos, 10 minutos seriam 600 intervalos, etc ...)

0       300  
300     600  
600     900  
900     1200  
1200    1500  
1500    1800  
1800    2100  
2100    2400  
2400    2700  
2700    3000  
3000    3300  
3300    3600  
3600    3900  
3900    4200  
4200    4500  
4500    4800  
4800    5100  
5100    5400  
5400    5700  
5700    6000  
6000    6300  
6300    6600  
6600    6900  
6900    7200  
7200    7500  
7500    7800  
7800    8100  
8100    8400  
8400    8700  
8700    9000  
9000    9300  
9300    9600  
9600    9900  
9900    10200  
10200   10500  
10500   10800  
10800   11100  
11100   11400  
11400   11700  
11700   12000  
12000   12300  
12300   12600  
12600   12900  
12900   13200  
13200   13500  
13500   13800  
13800   14100  
14100   14400  
14400   14700  
14700   15000  

Apenas certifique-se de que o número de intervalos seja maior que o comprimento total dos seus arquivos de áudio. Criei este que dura mais de três horas, muito tempo para minhas necessidades, acrescente mais para atender às suas necessidades.

Importe o arquivo de áudio para o Audacity e faça o equilíbrio e as outras edições desejadas e clique em arquivo> rótulos> importar rótulos

Selecione seu arquivo de texto, selecione a faixa da etiqueta e a faixa de áudio ao mesmo tempo e clique em arquivo> Exportar vários.

Altere o tipo de arquivo para o qual deseja exportar e ajuste as configurações e selecione a pasta de destino.

Sempre altero o padrão de numeração para Numeração após prefixo de nome de arquivo e digite o nome do arquivo que quero na caixa e o programa adicionará os números, pressione Export e viola!

C. Hamilton
fonte
-1

Download Audacity - É uma ferramenta de áudio gratuita que pode fazer exatamente o que você precisa e é totalmente grátis e fácil de usar. http://audacity.sourceforge.net/

JohnnyVegas
fonte
2
Existe uma maneira de fazer o Audacity fazer isso automaticamente? Eu não gostaria de cortar manualmente vários arquivos em 16 pedaços, cada um selecionando pedaços de 5 minutos com o mouse, cortá-los, ir ao menu, salvar os arquivos, etc.
slhck
Eu já tenho o Audacity, por isso, se houver uma maneira automática, entre em contato!
Andrew Cheong