flac:输出到 stdout (-c) 中断,写入文件 (-o) 的相同命令有效

flac:输出到 stdout (-c) 中断,写入文件 (-o) 的相同命令有效

我正在尝试使用 录制音频arecord,使用该工具将其编码为 .flac flac,然后通过更多进程(gzip、gpg,但此处不相关)将其传输。

flac如果我使用参数将结果写入文件-o,则一切正常:

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

如果我改为使用-c参数并将输出重定向到文件:

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

...生成的文件可以正常播放(声音有效),但 VLC 不显示音频录制的长度,并且 audacity 开始导入过程,预计到达时间稳定增加几个小时,并挂在取消状态。

两个命令之间的唯一区别是-o test.flacvs -c > test.flac。为什么这会破坏文件?

如果有区别的话:flac 1.3.2,arecord 1.1.3,在带 USB 麦克风的 Pi3 上的最新 raspbian 上运行。

答案1

它无法通过pipe计算最终长度,因此无法将其写入flac的标头。它不会破坏文件,它会保存为直播,您不应该知道直播何时结束,并且标题位于文件的开头。

相关内容