想要将无线电广播录制到单独的文件中。
receiver | sox -traw -r8k -es -b16 -c1 - -b16 -es -c1 -r48000 -t wav ~/myfolder/$(date +%H_%M_%S).wav silence 1 0.10 0.1% 1 1 0.1% : newfile : restart
我想要的输出:
- 15_02_47.wav
- 15_11_23.wav
我拥有的:
- 15_02_47001.wav
- 15_02_47002.wav
请帮忙
来自
man 1 sox
[强调我的]:似乎关闭此功能的唯一方法就是不使用
newfile
。在您的命令(和波形符)中,在启动
$(date +%H_%M_%S)
之前由 shell 展开。sox
该工具获取一个没有任何通配符的静态路径名,它可以动态解释(除非~/
扩展为包含%n
左右的内容,但显然这不会发生在您的情况下;如果发生了,情况会更糟)。如果您希望单个sox
进程输出到多个文件,那么该进程必须自己创建不同的名称;我认为没有办法进行sox
(重新)评估date
。我可以想到两种方法来完成你想要的事情:
一个接一个地运行多个
sox
进程,同时将输入流拆分到正确的位置。(使用类似的示例split
:here;但它通过计算字节数来分割,而不是通过检测静音来分割。)如果您设法做到这一点,那么就可以在开始之前date
对每个进行单独评估。sox
像您一样创建一堆文件,然后根据其创建时间(出生时间、btime)重命名每个文件。请注意,有些文件系统不支持 btime。