现代相当于阅读“/dev/audio”的内容是什么?

现代相当于阅读“/dev/audio”的内容是什么?

最近,我值得信赖的家用电脑在 10 年后死机了。随后的升级(从 SuSE 10 到 OpenSuSE 12.3)对我来说是一种文化冲击 - 我收集的方便的快捷方式和实用程序都不再起作用了。今天我试图让声音输入再次工作。

我曾经通过声卡的线路输入录制当地广播电台的深夜节目,通过一个很小的小实用程序,该实用程序除了 open /dev/audio、执行一些 ioctl 之外什么也不做,然后从中读取字节(并将其写入 WAV 文件)与 libsndfile)。没什么花哨的,只是一个微小的“自动记录”实用程序,可以记录 N 秒的声音,并且可以运行cron,没有前端,不需要 X,实际上不需要我登录。 (最初改编自 xawtv 的record.c。)

现在这不再起作用了。虽然我的声卡已配置,但我无法再使用此工具录制声音 - 事实上,似乎不再有/dev/sound!据我所知,即使在 2004 年,它也是一个勉强支持的遗留功能,而所有酷人都应该针对更奇特、更强大的 ALSA 界面进行编程。

目前从声音设备快速获取输入的推荐方法是什么?我可以以某种方式重新启用/dev/sound模拟吗?我想第三方程序也可以做到这一点,只要它不需要我提供 X 会话或在半夜按下按钮。

答案1

事实证明,声音堆栈开发人员已经预见到了我,并专门针对像我这样的情况编写了一个解决方法 - 我只是一开始找不到它。

奥斯完全执行所需的操作:它预加载libaoss.so,然后运行另一个命令行,然后该命令行将看到 a/dev/dsp并能够 ioctl/读/写它。所以而不是,例如

autorecord -a -t -d 300 -o violin_concerto 

/usr/bin/aoss autorecord -a -t -d 300 -o violin_concerto 

让过时的工具像以前一样工作。

另一种方法是加载相应的模拟内核模块,这将创建一个实际的 /dev/dsp甚至是/dev/audio

# modprobe snd_pcm_oss
# modprobe snd_seq_oss
# modprobe snd_mixer_oss

(当然,负责任的、面向未来的事情应该是长大,学习ALSA和pulseaudio编程,并将那些旧工具移植到现代的、更复杂的声音API上。但是这些天,我已经没有时间了我曾经做过的工具锻造。)

相关内容