如何将任何数据传输到音频输出?例如,我想听一个文件——一个存档、一个驱动器备份、一个程序。或者我想听我的硬盘 - 我隐约记得大约 7 年前读过一些关于这是可能的内容,但现在找不到任何内容。
因此,文件、磁盘读取、甚至网络连接——我希望能够监听任何内容。我知道这对于 Linux 来说绝对是可能的。我该怎么做?使用 Lubuntu 20.04
答案1
我发现将东西管道化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.
alsa-utils
它可以作为debian/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
答案2
这是可能的/dev/dsp
,它是 OSS 的一部分,而 OSS 已经很长时间没有成为 Linux 内核的一部分了。它曾经像cat some_file >/dev/dsp
或一样简单some_program >/dev/dsp
。
PulseAudio 提供padsp
.
padsp
启动指定的程序并将其对 OSS 兼容音频设备(/dev/dsp
和辅助设备)的访问重定向到 PulseAudio 声音服务器。
(来源)
例子:
随机数据
</dev/urandom padsp tee /dev/dsp >/dev/null
常规文件
</etc/fstab padsp tee /dev/dsp >/dev/null
网络活动
sudo tcpdump | padsp tee /dev/dsp >/dev/null
块设备
sudo cat /dev/sda | padsp tee /dev/dsp >/dev/null
在我的 Ubuntu 18.04.4 LTS 中,padsp
来自该pulseaudio-utils
软件包。