![通过外接USB声卡进行播放和同步录音](https://linux22.com/image/4718/%E9%80%9A%E8%BF%87%E5%A4%96%E6%8E%A5USB%E5%A3%B0%E5%8D%A1%E8%BF%9B%E8%A1%8C%E6%92%AD%E6%94%BE%E5%92%8C%E5%90%8C%E6%AD%A5%E5%BD%95%E9%9F%B3.png)
我有一个外部 USB 声卡(在我的例子中是 TerraTec Aureon 7.1 USB)。我使用 3.5 毫米插孔电缆将耳机输出连接到线路输入。我有兴趣在文件系统上开始播放 MP2 音频文件,并通过此循环,至少以 WAV 格式录制它。
现在,机器是 Ubuntu 12.04.05 LTS,带有 linux 3.2.0-77-x64 内核。这是一个服务器安装,所有多媒体内容都被删除了。我必须手动安装 alsa-base、alsa-utils、sox、libsox-fmt-all、ffmpeg 编解码器等。
我正在尝试做的事情是使用 alsa-utils 中的“aplay”和“arecord”,但收效甚微,如下所示:
# aplay -v -f S16_LE -D hw:1,0 -c2 -r 48000 original.mp2 &
# arecord -v -f S16_LE -D hw:1,0 -c2 -r 44100 output.wav
我认为它根本不起作用,因为记录似乎无限期地进行,直到我执行 CTRL-C 或其他操作。我是否在某些语法上出错了,或者它不是我需要的工具?在这种情况下,是否有更有用、更好的工具来管道播放和同时录制?
不管怎样,我最大的问题是声卡似乎还没有完全配置。我从 /proc/asound/cards 获得了“hw:1,0”地址,但我不确定它是否正常,因为 aplay 不会向电话输出输出任何内容(我通过插入耳机进行测试)。我有以下输出:
# cat /proc/asound/cards
1 [USB ]: USB-Audio - Aureon 7.1 USB
Aureon 7.1 USB at usb-0000:00:14.0-1, full speed
但如果我执行 lsusb 我会得到以下信息:
# lsusb
......
Bus 003 Device 002: ID 0ccd:00b1 TerraTec Electronics GmbH
......
我无法理解这种不匹配,或者也许它们不应该匹配?无论如何,我必须将我的用户添加到“音频”组并重新启动系统以使该卡出现在 /proc/asound/cards 列表中。请注意,该系统是服务器,因此没有可用的内部音频芯片组。
任何帮助表示赞赏!谢谢!
答案1
OP 发表评论:
我刚刚找到了解决方案:播放问题是由于 aplay 和 arecord 只能使用 .wav 或 RAW 文件类型,而我输入的是 MP2 文件。另外:arecord 时间可以使用 -d 参数编写脚本,以持续与 aplay 输入相同的长度。