Adicione cabeçalhos de comprimento ausentes ao arquivo flac criado por streaming

2

Como eu tenho aprendido recentemente , arquivos flac criados pela piping de dados flac codificados para STDOUT estão faltando certas partes do metadados, em particular informações sobre a duração da gravação.

É possível retroativamente adicionar esses dados sem decodificar para wav e recodificar os dados (os dados são muito grande para um arquivo wav , e o flac decodificará com facilidade para wav, mas depois lançará um erro e recusará codificar para flac depois)? Eu sei a duração exata da gravação, se isso for útil.

Para os curiosos: Isso é o que acontece quando decodifico e re-codifico uma gravação de áudio de 7 dias do flac para wav e vice-versa.

flac --decode test.flac 

flac 1.3.1, Copyright (C) 2000-2009  Josh Coalson, 2011-2014  Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type 'flac' for details.

test.flac: WARNING, cannot check MD5 signature since it was unset in the STREAMINFO
done         
test.flac: ERROR: stream is too big to fit in a single WAVE file

Agora eu tenho um arquivo wav que funciona bem no VLC e contém informações de comprimento adequadas. Tentando recodificar:

flac test.wav --best --output-name="test2.flac"

flac 1.3.1, Copyright (C) 2000-2009  Josh Coalson, 2011-2014  Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type 'flac' for details.

test.wav: ERROR: 'data' chunk has size of 0
    
por malexmave 02.11.2017 / 15:41

1 resposta

1

A única solução que encontrei é recodificar tudo usando sox:

sox test.flac test_full.flac --show-progress

Isto irá pegar a gravação completa, decodificá-la e recodificá-la novamente no flac. Altamente ineficiente, mas faz o trabalho. Se houver uma solução melhor que evite o processo de codificação de 10 minutos, sinta-se à vontade para adicionar outra resposta e eu a aceito em seu lugar.

    
por 14.06.2018 / 09:14

Tags