是否可以构建一个缓冲管道来保留来自标准 linux 工具(如 cat、dd 等)的数据(对于某些给定数量的字节或某些给定时间)?
例如收集定义数量的数据包、音频数据或其他东西。
例如。构建一个脚本delaybuffer
来做这样的事情:
arecord | delaybuffer 16000 | aplay
播放录制的音频延迟 16000 字节。
另一种方法是使用 dd (如果您的 dist 上不存在缓冲区)。
arecord | dd ibs=16000 iflag=fullblock oflag=dsync | aplay
我不太确定这些标志,可能有比一次爆出一个块更好的方法。
有一个名为的工具buffer
可以完成这项工作。(指向 Debian 软件包的链接- 可能在其他发行版中也可用。)。
缓冲区使用共享内存将可变输入数据速率转换为恒定输出数据速率。
下面给出了cdparanoia
在开始读取输出之前提取音频 CD 的轨道 7 的 4 秒时间障碍。可以作为命令行 cd 播放器使用。
cdparanoia 7 ~/temp.wav & sleep 4 ; tail -f -c +1 ~/temp.wav | aplay