我刚刚开始在Android上工作,我正在尝试了解Androidaudio子系统(ALSA)如何工作。 我运行在windows-7(64位)上运行的虚拟框中的Android图像。
我正在摆弄alsa-utils录制声音。 我试过alsa_aplay -C -f S16_LE -c 2 -r 44100 -d 5 foo.wav它说的是这样的: Recording WAVE foo.wav : Signed 16 bit little endian,rate 44100,stereo
但是,创build的输出文件似乎是空白的(在wav文件头之后)。
od -x foo.wav
为什么ALSA示例使用循环播放/捕获?
ALSA:以共享模式打开PCM设备
你如何在单声道做ALSA?
具有调制解调器PCM接口的Alsa
0000000 4952 4646 7574 000d 4157 4556 6d66 2074 0000020 0010 0000 0001 0002 ac44 0000 b110 0002 0000040 0004 0010 6164 6174 7550 000d 0000 0000 0000060 0000 0000 0000 0000 0000 0000 0000 0000 * 3272560 0000 0000 0000 0000 0000 0000 3272574
Simple mixer control 'Master',0 Capabilities: pvolume pswitch pswitch-joined penum Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Segmentation fault
alsa_ctl init也会抛出一个错误,但会继续执行一些默认configuration
UnkNown hardware: "ICH" "Sigmatel STAC9700,83,84" "AC97a:83847600" "0x8086" "0x0000" Hardware is initalized using a guess method
当我使用alsa_ctl store -f cur_config.txt检查alsa使用的当前configuration时,它具有capture switch: true和capture volume: value.0 = 8 & value.1 = 8
Simple mixer control 'Master',0 Simple mixer control 'Master Mono',0 Simple mixer control '3D Control - Switch',0 Simple mixer control '3D Control Sigmatel - Depth',0 Simple mixer control 'PCM',0 Simple mixer control 'PCM Out Path & Mute',0 Simple mixer control 'Surround Phase Inversion',0 Simple mixer control 'Line',0 Simple mixer control 'CD',0 Simple mixer control 'Mic',0 Simple mixer control 'Mic Boost (+20dB)',0 Simple mixer control 'Mic Select',0 Simple mixer control 'Video',0 Simple mixer control 'Phone',0 Simple mixer control 'Beep',0 Simple mixer control 'Aux',0 Simple mixer control 'Mono Output Select',0 Simple mixer control 'Capture',0 Simple mixer control 'Mix',0 Simple mixer control 'Mix Mono',0 Simple mixer control 'External Amplifier',0 Simple mixer control 'Sigmatel 4-Speaker Stereo',0 Simple mixer control 'Sigmatel ADC 6dB Attenuate',0 Simple mixer control 'Sigmatel DAC 6dB Attenuate',0
任何想法,为什么我不能logging?
[UPDATE]
vBox中的默认audio控制器是ICH AC 97 。 我将其更改为Intel HD Audio并尝试相同的事情,它的工作。 现在我能够录制声音。 lsmod | grep snd 在这两种情况下lsmod | grep snd输出是:
**`ICH AC 97`** snd_intel8x0 19446 3 - Live 0xf80e9000 snd_ac97_codec 76811 1 snd_intel8x0,Live 0xf80bf000 ac97_bus 730 1 snd_ac97_codec,Live 0xf809a000 snd_pcm 47290 3 snd_intel8x0,snd_ac97_codec,Live 0xf8080000 snd_timer 12553 1 snd_pcm,Live 0xf805f000 snd_page_alloc 4893 2 snd_intel8x0,snd_pcm,Live 0xf804f000 **`Intel HD Audio`** snd_hda_codec_idt 37680 1 - Live 0xf8108000 snd_hda_intel 16006 3 - Live 0xf80de000 snd_hda_codec 49045 2 snd_hda_codec_idt,snd_hda_intel,Live 0xf80ba000 snd_hwdep 3844 1 snd_hda_codec,Live 0xf809c000 snd_pcm 47290 3 snd_hda_intel,snd_hda_codec,Live 0xf805f000 snd_page_alloc 4893 2 snd_hda_intel,Live 0xf804f000
ls /dev/snd输出也不同:
**ICH AC 97** controlC0 pcmC0D0c pcmC0D0p pcmC0D1c timer **Intel HD** controlC0 hwC0D0 pcmC0D0c pcmC0D0p pcmC0D1c pcmC0D1p timer
我试着比较strace -f alsa_aplay -C foo.wav ,但找不到有用的东西。 唯一的区别是,在ioctl调用之后,在第一种情况下(使用ICH AC 97)写入“0000”,其中作为一些有意义的数据用“Intel HD Audio”
这可能是因为一些驱动程序问题?
[更新结束]
谢谢,Vikram
在Linux上的Java声音:如何从TargetDataLine足够快地捕获跟上?
使用ALSA在只播放声卡上捕获播放
ALSA“default”vs“hw:0,0”
除了44.1kHz以外,WAV文件已经混乱了
ALSA:我怎样才能通过耳机和扬声器发送audio
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。