如何将耳机中可以听到的声音转换为文件或 C/C++ 程序中的变量?我想要类似图像帧缓冲区的东西。我的主要目标是将声音发送到另一台计算机,因此我还需要读写权限。有谁知道怎么处理?
我做了一个这样的测试录音:
arecord -d 4 out.wav
Run Code Online (Sandbox Code Playgroud)
你可以这样使用dd:
dd bs=1 if=out.wav | aplay
Run Code Online (Sandbox Code Playgroud)
或者使用带有 while 循环的非常不稳定的无缓冲流:
while read -n 2048 bytes; do
printf "$bytes" | aplay
done < out.wav
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用netcat将其重定向到套接字或端口。
通过扬声器播放的声音可能已经缓存在一个文件中。我不知道哪里该文件将被定位,但它也可能是可能tail -f或cat也管到不同的位置,netcat或者类似的东西。
例如使用ALSApcm:
还可以考虑查看 PulseAudio 的源代码或使用实时传输协议 (rtp):