我有一些问题的时间安排一个长期运行的sox录音。
之所以需要这个命令,是因为sox是从进程中得到标准输出的,但它不是一个永久的数据流(但是有中断和沉默)。但是,当sox被告知要总共录制30秒时,它会记录到音频文件有30秒的声音为止。所以我希望命令在35s之后超时,如果它之前没有完成的话。
在bash脚本中使用的命令:
超时值35s sox一些sox参数纵倾030
现在的问题是,给定的命令可能需要35s到>10分钟之间的任何东西,而我不知道为什么。
它似乎完全随机花费多长时间,而音频文件是介于1s和13s之间。
所以也许这里的人有一个想法,可能是如何排除故障等等。
发布于 2021-06-25 19:30:56
终止信号处理程序 in sox只设置标志user_abort,每个缓冲区由用于监视流程进度的回调检查一次,因此等待缓冲区满的sox可以解释用于响应信号的长时间延迟。如果指定一个小缓冲区大小,这种情况可能会有所改善,但这不是一个解决方案。
我现在注意到你写的sox从一个过程中得到了稳定的结果。如果您timeout该进程而不是sox,则其输入源的关闭将导致sox立即终止。
不幸的是,这不是一个合适的解决方案,因为“主进程”(sox从sox获得的标准输出)运行24/7,不应该被中断。
您可以将cat连接到输入,然后连接到timeout 35 cat | sox …。
https://stackoverflow.com/questions/68097866
复制相似问题