Encontrei algo para vídeos, que se parece com isso.
ffmpeg -i * -c:v libx264 -crf 22 -map 0 -segment_time 1 -g 1 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*9)" -f segment output%03d.mp4
Tentei usá-lo para um arquivo de áudio, mas apenas o primeiro arquivo continha áudio real, os outros ficaram em silêncio, exceto que era bom, criou um novo arquivo de áudio a cada segundo. Alguém sabe o que modificar para fazer isso funcionar com arquivos de áudio ou outro comando que pode fazer o mesmo?
Respostas:
Isso funcionou para mim quando eu tentei em um arquivo mp3.
Onde
-segment_time
é a quantidade de tempo que você deseja por cada arquivo (em segundos).Referências
fonte
mp3
porm4a
Para dividir um grande arquivo de áudio em um conjunto de faixas com diferentes comprimentos, você pode usar o seguinte comando:
Por exemplo, eu quebrei um único arquivo .opus da trilha sonora original do Inception em subarquivos usando este arquivo de texto que contém nome de início, fim e nome:
Eu escrevi este pequeno
awk
programa para ler o arquivo de texto e criarffmpeg
comandos a partir de cada linha:Aqui está uma
python
versão mais detalhada do programa chamadasplit.py
, onde agora o arquivo de trilha original e o arquivo de texto que especificam as sub-trilhas são lidos na linha de comando:Você pode facilmente criar
ffmpeg
chamadas cada vez mais complicadas modificando o modelo de comando e / ou adicionando mais campos a cada linha do arquivo track_list.fonte
subprocess.call(command)
é opython
analógico para osystem(command)
inawk
, o que permite enviarffmpeg
comandos ao shell. Editei meu post para incluir umapython
implementação flexível que ilustra uma maneira de você fazer isso.echo
para realmente executar os comandos.source="source audio file.m4a"; i=0; t1=0:00; for end_time in 1:24 5:40 14:48 19:33 35:11 40:00 46:08 51:58 ''; do i=$((i+1)); t0=$t1 t1=$end_time; echo ffmpeg -i "$source" -acodec copy -ss $t0 ${t1:+-to} $t1 $(printf "track%02d.%s" $i ${source##*.}); done
A linha a seguir dividirá um arquivo de áudio em vários arquivos, cada um com 30 segundos de duração.
Altere 30 (que é o número de segundos) para o número que desejar.
fonte
resposta do slm :
não funcionaria para mim sem o
-map 0
adicional:fonte
A solução fornecida não funcionou para mim. Acredito que isso se deva a uma versão mais antiga do
ffmpeg
meu sistema.De qualquer forma, eu queria fornecer uma solução que funcionasse para mim. Você também pode personalizar os cronômetros para permitir a sobreposição de áudio, se desejar.
Output file #0 does not contain any stream
ffmpeg -i your_audio_file.mp3 -acodec copy -t 00:00:30 -ss 00:00:00 split_audio_file.mp3
divida seus arquivos de áudio em incrementos de 30 segundos
fonte