如何在Raspberry Pi上使用C /libao/alsa通过USB声卡播放音频
How to play audio via a USB sound card using c++/libao/alsa on Raspberry Pi?
我从 aplay -l, lsusb
获取以下内容:
pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Device_1 [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
pi@raspberrypi:~ $ lsusb
Bus 001 Device 005: ID 046d:c31c Logitech, Inc. Keyboard K120 for Business
Bus 001 Device 008: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 001 Device 007: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 001 Device 006: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
Bus 001 Device 004: ID 1bcf:0005 Sunplus Innovation Technology Inc.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
我想通过libao通过CM108音频控制器播放我的MP3。我尝试了这些:
ao_initialize();
ao_option aoption;
ao_option *poption;
poption = &aoption;
poption->key = (char*)"dev";
poption->value = (char*)"hw:0";
dev = ao_open_live(driver, &format, poption);
while (mpg123_read(mh, buffer, buffer_size, &done) == MPG123_OK)
ao_play(dev, (char *)buffer, done);
因此,通过PI播放声音。我知道HW:0是PI的声卡。如果我想通过第一或第二个CM108音频控制器播放,我应该使用什么而不是HW:0?我已经尝试了HW:1和HW:2,它不起作用。
尝试按以下步骤启用使用ALSA的RPI的USB-SOND适配器启用音频录制和播放。因此,您可以测试您的USB声音适配器正常工作,因为输入和输出模块。我尚未在用上述库中提到的C 代码中提到的库之前对其进行测试,将尽快尝试一下。尝试通过C 代码在稍后的" HW:1"来尝试。
步骤:1.1(创建/编辑文件.ASOUNDRC
$vim .asoundrc
如果不存在文件,请创建;
$ touch .asoundrc
$vim .asoundrc
pcm.!default {
type asym
playback.pcm "hw:1,0"
capture.pcm "hw:1,0"
}
ctl.!default {
type hw
card 1
}
1.2(在文件alsa.conf;
的下面编辑以下行$sudo vim /usr/share/alsa/alsa.conf
defaults.ctl.card 0
defaults.pcm.card 0
to
$sudo vim /usr/share/alsa/alsa.conf
defaults.ctl.card 1
defaults.pcm.card 1
1.3(使用Alsamixer实用程序更改音频级别/设置
$alsamixer
1.4(命令记录音频
$arecord -D plughw:1 -f S16_LE -r 48000 -d 5 ./testSound.wav
1.5(命令播放录制的音频
$aplay --device=plughw:1,0 ./testSound.wav
相关文章:
- 如何使用 ALSA API 在应用程序中在单声道和立体声之间切换声音输出?
- 在C++的帮助下创建 ALSA 插件
- 当我使用 ALSA lib 的函数"snd_pcm_readi"时它崩溃了
- 如何将 cdparanoia 读取的 CD 音频数据移交给 ALSA 播放器?
- 如何在Raspberry Pi上使用C /libao/alsa通过USB声卡播放音频
- ALSA 的snd_pcm_get_chmap总是在 Ubuntu 18.04 上在我的默认设备(脉冲)上返回 NULL。
- 无法在 ALSA 树莓派 c 应用程序上配置硬件参数
- ALSA在中断之前服用1024个缓冲区
- Linux上有符号的16位ALSA PCM数据到U8的转换
- 如何在Raspberry Pi上用C++将接收到的UDP音频数据正确写入ALSA
- 在Raspberry Pi模拟输出上接收和播放原始PCM的ALSA配置
- 使用libavcodec解码音频,并使用libAO播放
- ALSA:无法从欠载运行中恢复,准备失败:管道破裂
- 在 c++ 中使用 alsa 的 dmix 插件进行音频混合
- Qt-libao未定义引用
- 嵌入式系统上的ALSA - readi -输入/输出错误和冻结
- 使用 ALSA 库捕获音频 - snd_pcm_open => 没有这样的文件或目录
- 在c++中使用ALSA捕获默认音频流
- 如何在Ubuntu中使用c++连接到ALSA服务器(在本例中为胆怯)
- ALSA:以共享方式打开PCM设备