alsa_aplay 不在 Android 上录制

2024-01-02

我刚刚开始研究 android,我试图了解 android 音频子系统(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

但是,创建的输出文件似乎是空白的(在 wav 文件头之后)。

od -x foo.wav

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

我还发现alsa_amixer是段错误。

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_ctlinit 也会抛出错误,但会继续执行一些默认配置

Unknown hardware: "ICH" "Sigmatel STAC9700,83,84" "AC97a:83847600" "0x8086" "0x0000"
Hardware is initalized using a guess method

当我检查 alsa 使用的当前配置时alsa_ctl store -f cur_config.txt it has capture switch: true and capture volume: value.0 = 8 & value.1 = 8

的输出alsa_amixer scontrols

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

知道为什么我无法录制吗?

[UPDATE]

vbox 中的默认音频控制器是ICH AC 97。我把它改为Intel HD Audio并尝试了同样的事情并且成功了。现在我可以录制声音了。这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 0xf8080000
snd_timer 12553 1 snd_pcm, Live 0xf805f000
snd_page_alloc 4893 2 snd_hda_intel,snd_pcm, 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”写入

这可能是因为某些驱动程序问题吗?

[更新结束]


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

alsa_aplay 不在 Android 上录制 的相关文章

随机推荐

  • tibco 对组织有何用处以及为何使用它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对学习 tibco 很感兴趣 我在 youtube 上找到了一些不错的视频 但所有这些都只是教程 没有一个视频回答为什么在组织中使用 tibc
  • 在哪里将 Google 分析代码添加到 php 网站

    将 Google 分析代码添加到 PHP 网站时 我是否仅将代码添加到索引页面 创建的每个页面或仅添加到客户旅程中的前端页面 最佳实践是什么 感谢您提前回复 您想要分析的所有页面 请在前面的页面上添加代码 最佳实践是创建一个文件 analy
  • 如何根据多态关联类型(Rails)应用不同的验证规则?

    我有 Rails 多态模型 我想根据关联类 类名位于 type例如以下设置中的列 class Comment belongs to commentable polymorphic gt true end class Post has man
  • 应用程序创建的线程如何被视为与应用程序的 ContentProvider 不同的应用程序?

    我有一个应用程序 当收到通知时ContentObserver更改为ContentProvider 尝试在后台线程上查询提供程序 这会导致SecurityException被抛出 8 10 15 54 29 577 3057 3200 com
  • 如何防止我的打包函数被 ls() 列出? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我成功构建并安装了 R 包 加载后 其中的所有函数都导出到全局环境 并且可以从ls 我怎样才能防止这种情况 让它们像 CRAN 上
  • 如何防止后台附件:固定;我的网站滞后?

    我正在使用背景附件 固定 在我的网站上 但它导致 Chrome 对某些用户来说滞后 有没有办法既能达到同样的效果又不会造成延迟 自从我删除它以来 延迟已经停止了 但我更喜欢我网站的外观 它实际上是一个已知错误 https code goog
  • 来自列表/字典/列表的 Pandas DataFrame

    我有一些这种形式的数据 a table a field apple pear table b field grape berry 我想创建一个如下所示的数据框 field table 0 apple a 1 pear a 2 grape b
  • 在 Java 中使用 JTable 显示 MySQL 数据库中的记录

    我想连接一个JTable to a ResultSet来自 MySQL 数据库 这样我就可以查看数据 我正在寻找一些描述此任务的链接或代码片段 我正在使用 Netbeans IDE 下面的类将完成将数据从 MySQL 数据库读取到数据库时所
  • 如何使用带有按钮的角度材质选择(没有表单字段)

    我想使用有角的材料mat select组件没有mat form field 我希望它在概念上类似于本机选择元素 有办法实现吗 一个简单的方法是使用mat menu并在单击按钮时更新触发器 使用 mat menu 组件的演示 https st
  • vb6: 当尝试在另一个项目中使用时,错误控件 xxx 的类 xxx 不是加载的控件类

    在一个 vb6 项目中 我创建了一个用户控件并放入了一个表单 当我尝试在另一个项目中使用该表单 与我的控件一起 时 IDE 给出错误 控件 xxx 的类 xxx 不是加载的控件类 我在网络上进行了研究 但没有找到解决方案 谢谢 首先 您需要
  • 使用 PHP 进行视频编辑

    是否可以使用 PHP 将声音录制到上传的视频上 你可以使用 MLT 库和我的课程 您可以从此链接下载https github com 1fer mlt https github com 1fer mlt Features 剪切和合并视频 通
  • AVQueuePlayer 的预缓冲

    有谁知道如果AVQueuePlayer开始缓冲下一个AVPlayerItem当前项目何时即将结束播放 我知道文档中没有任何内容表明这一点 我主要是问是否有人观察到这种行为 好的 我再次查看了这个问题并编写了一些代码来检查AVQueuePla
  • FFmpeg 和黑白转换 [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 如何使用将视频转换为黑白ffmpeg 去饱和 Use the 色调滤镜 https ffmpeg org ffmpeg filters
  • 如何在 Spring Web 应用程序中实现文件夹上传?

    我想在我的网络应用程序中实现类似于 Google Drive 风格的文件 目录上传 我认为这是解释我想要的最好的例子 所以我想上传 单个文件 多个选定的文件 选定的文件夹 其中包含的所有文件 在客户端我想我必须使用 HTML5 我错了吗 但
  • jQuery DateTimePicker 在输入模糊时减去一小时

    我有一个奇怪的恼人的问题 This jQuery 日期时间选择器 https xdsoft net jqplugins datetimepicker 输入减去 1 小时blur 仔细看 选择日期 然后选择时间 在您将焦点移出输入字段之前 它
  • DropDownListFor 从模型中默认选择的项目

    我有一个绑定到模型成员的 DropDownListFor 以及可供选择的项目列表 与该成员的绑定有效 但我似乎无法弄清楚如何在页面加载时显示模型的当前值 View Html DropDownListFor model gt model Me
  • 如何消除同名类型和模块的歧义?

    我正在尝试使用 K roly L rentey 的基于B树OrderedSet https github com lorentey BTree在一个项目中 但是 我遇到了一个问题 我无法声明不合格OrderedSet
  • Angular DI:将价值代币注入工厂提供者

    是否可以将 InjectionToken 注入工厂提供程序 目前 我已经编码 export const HOST TOKEN new InjectionToken
  • 为什么 PyTorch 模型在模型内部采用多个图像尺寸?

    我在 PyTorch 中使用简单的对象检测模型 并使用 Pytorch 模型进行推理 当我在代码上使用简单的迭代器时 for k image path in enumerate image list image imgproc loadIm
  • alsa_aplay 不在 Android 上录制

    我刚刚开始研究 android 我试图了解 android 音频子系统 alsa 是如何工作的 我正在 windows 7 64 位 上运行的虚拟盒中运行 android 映像 我正在摆弄 alsa utils 来录制声音 我试过alsa