如何将任何东西通过管道传输到音频输出?

Ром*_*оян 8 linux pipe audio

如何将任何数据通过管道传输到音频输出?例如,我想听一个文件——一个档案、一个驱动器备份、一个程序。或者我想听听我的硬盘——我依稀记得大约 7 年前读过一些关于这可能的东西,但现在找不到任何东西。

所以,文件、磁盘读取,甚至网络连接——我希望能够收听任何东西。我知道这在 Linux 上绝对是可能的。我该怎么做?使用 Lubuntu 20.04

Ste*_*art 14

我发现管道的东西aplay运作良好。

journalctl | aplay 听起来并不漂亮,但效果出奇地好。

下面是一个例子aplay(1)

aplay -c 1 -t raw -r 22050 -f mu_law foobar
              will play the raw file "foobar" as a 22050-Hz, mono, 8-bit, Mu-Law .au file.
Run Code Online (Sandbox Code Playgroud)

它可以作为alsa-utilsdebian/ubuntu 软件包的一部分找到。

这是一个我喜欢的 1-liner,它将一个小的 C 程序回显到 gcc 中,并运行编译后的版本,将它传送到 aplay。结果是一首令人惊讶的 15 分钟重复歌曲。

echo "g(i,x,t,o){return((3&x&(i*((3&i>>16?\"BY}6YB6$\":\"Qj}6jQ6%\")[t%8]+51)>>o))<<4);};main(i,n,s){for(i=0;;i++)putchar(g(i,1,n=i>>14,12)+g(i,s=i>>17,n^i>>13,10)+g(i,s/3,n+((i>>11)%3),10)+g(i,s/5,8+n-((i>>10)%3),9));}"|gcc -xc -&&./a.out|aplay
Run Code Online (Sandbox Code Playgroud)

  • `这是我喜欢的 1-liner [...]` Sooo ......你被封锁多久了?-) (16认同)

Kam*_*ski 11

是可能的/dev/dsp,它是 OSS 的一部分,它很长时间没有成为 Linux 内核的一部分。它曾经像cat some_file >/dev/dsp或一样简单some_program >/dev/dsp

PulseAudio 提供padsp.

padsp启动指定的程序并将其对 OSS 兼容音频设备(/dev/dsp和辅助设备)的访问重定向到 PulseAudio 声音服务器。

来源


例子:


在我的 Ubuntu 18.04.4 LTSpadsp中来自pulseaudio-utils包。

  • 这是一种非常迂回的方式,可以通过管道进入“pacat”来做同样可以做的事情。 (3认同)