问题描述
我对长时间运行的 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
立即终止。