flac: Saída para stdout (-c) quebra, o mesmo comando escrito para o arquivo (-o) funciona

0

Estou tentando gravar áudio usando arecord , codificá-lo para .flac usando a ferramenta flac e, em seguida, canalizá-lo através de mais alguns processos (gzip, gpg, mas irrelevantes aqui).

Se eu gravar o resultado de flac no arquivo usando o parâmetro -o , tudo funcionará bem:

arecord -t raw -f S16_LE -r16000 -d 10 -D sysdefault:CARD=1 | flac - -f --endian little --sign signed --channels 1 --bps 16 --sample-rate 16000 -o test.flac

Se eu usar o parâmetro -c e redirecionar a saída para um arquivo:

arecord -t raw -f S16_LE -r16000 -d 10 -D sysdefault:CARD=1 | flac - -f --endian little --sign signed --channels 1 --bps 16 --sample-rate 16000 -c > test.flac

... o arquivo resultante é reproduzido corretamente (o som funciona), mas o VLC não exibe um tamanho para a gravação de áudio, e o audacity inicia um processo de importação com um ETA de várias horas em constante crescimento e trava ao cancelar. / p>

A única diferença entre os dois comandos é -o test.flac vs -c > test.flac . Por que isso quebra o arquivo?

Se isso faz diferença: flac 1.3.2, arecord 1.1.3, executado no último raspbian em um Pi3 com microfone USB.

    
por malexmave 24.10.2017 / 15:23

1 resposta

2

Não é possível calcular o comprimento final através do pipe, por isso não pode escrevê-lo no cabeçalho do flac. Ele não quebra o arquivo, salva como livestream, que você não deveria saber quando será o fim, e o cabeçalho está no começo do arquivo.

    
por 24.10.2017 / 15:33