如何建立延迟/缓冲管道?

时间:2012-04-24 11:36:05

标签: linux bash pipe

是否可以构建一个缓冲管道,用于保留来自标准linux工具(如cat,dd等)的数据(对于某些给定的字节数或某些给定时间)?

例如,收集定义数量的数据包,音频数据或其他内容。

EG。构建一个脚本delaybuffer来做类似的事情:

arecord | delaybuffer 16000 | aplay

播放延迟录制的音频16000字节。

3 个答案:

答案 0 :(得分:6)

另一种方法是使用dd(如果你的dist上不存在缓冲区)。

    arecord | dd ibs=16000 iflag=fullblock oflag=dsync | aplay

我不太确定旗帜,可能有更好的方法,而不是一次爆破一块。

答案 1 :(得分:5)

有一个名为buffer的工具可以完成这项工作。 (Link to the Debian package - 可能也可用于其他发行版。)。

  

缓冲区使用共享内存将可变输入数据速率转换为恒定输出数据速率。

答案 2 :(得分:0)

以下内容为cdparanoia提供了4秒钟的时间障碍,以在开始读取输出之前提取音频CD的音轨7。 可以作为命令行CD播放器很好地工作。

cdparanoia 7 ~/temp.wav & sleep 4 ; tail -f -c +1 ~/temp.wav | aplay