ffmpeg -ss 00:00:00 -i 'input.mp3' -to 00:25:00 -c copiar output.mp3
Percebi durante o script que esse script específico funciona para arquivos mp3, mas não para arquivos .wav. O que acontece é que ele copia (estranhamente) para um arquivo .mp3 de 25 minutos, mas corta intrinsecamente o áudio no final. Parece esticar o áudio real além do limite de 25 minutos por algum motivo, portanto, ocorre o corte. Isso não acontece com arquivos .wav. Pesquisando nas man pages me deparei com isso abaixo:
-ss posição (entrada/saída) Quando usado como opção de entrada (antes de -i), busca neste arquivo de entrada a posição. Observe que na maioria dos formatos não é possível buscar exatamente, então o ffmpeg buscará o ponto de busca mais próximo antes da posição. Quando a transcodificação e -accurate_seek estiverem ativados (o padrão), esse segmento extra entre o ponto de busca e a posição será decodificado e descartado. Ao fazer a cópia do fluxo ou quando -noaccurate_seek for usado, ele será preservado.
Minha pergunta é, primeiro, parece que .mp3 não é um formato suportado exatamente pelo que procura, mas parece que arquivos .wav são suportados dado o que aconteceu. É por isso que cortou o áudio? Em segundo lugar, existe alguma documentação sobre formatos suportados que tenham tempos -ss 100% precisos? Não consigo encontrar isso em nenhuma das páginas de manual. Talvez exista documentação, mas se existir, acho que deveria ter sido listada nessa seção. Esta é uma documentação ruim no ffmpeg e deve ser atualizada! Informações vagas que não são úteis.
Os únicos formatos perfeitamente pesquisáveis são os formatos não compactados. Ou seja, wav e pcm. Todos os formatos compactados são codificados em “quadros” (porque é assim que a compactação funciona). Usando a cópia do codec, você só pode copiar quadros inteiros. Cada codec usa um número diferente de amostras por quadro.