超时命令未超时

问题描述

我对长时间运行的 sox 录音超时有一些问题。

需要该命令,因为 sox 从进程中获取标准输出,但它不是永久的数据流(但会因静音而中断)。但是因为 sox 被告知总共要录制 30 秒,所以它会一直录制到音频文件有 30 秒的声音为止。所以我希望命令在 35 秒后超时,如果它之前没有完成。

bash 脚本中使用的命令:

超时 35 秒 sox [--some --sox --parameters] 修剪 0 30

现在的问题是给定的命令可能需要 35 秒到 10 分钟之间的任何时间,我不知道为什么。

花费的时间似乎完全随机,音频文件在 1s 到 13s 之间。

所以也许这里有人有想法,可能是如何排除故障等

解决方法

sox 中的 terminate signal handler 只是设置标志 user_abort,由 Callback for monitoring flow progress 每个缓冲区检查一次,所以 {{1 }} 等待缓冲区变满可以解释响应信号的长时间延迟。如果您指定较小的缓冲区大小,情况可能会有所改善,但这不是解决方案。

我现在注意到你写了 sox 从进程中获取标准输出。如果您sox 该进程而不是 timeout,则其输入源的关闭应导致 sox 立即终止。