如何将任何内容通过管道传输到音频输出?

如何将任何内容通过管道传输到音频输出?

如何将任何数据传输到音频输出?例如,我想听一个文件——一个存档、一个驱动器备份、一个程序。或者我想听我的硬盘 - 我隐约记得大约 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软件包。

相关内容