首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android > 4.0 :如何记录/捕获内部音频(如STREAM_MUSIC)?

Android > 4.0 :如何记录/捕获内部音频(如STREAM_MUSIC)?
EN

Stack Overflow用户
提问于 2012-12-27 13:09:23
回答 1查看 25.7K关注 0票数 39

几个月前,在Android (4.0)中,我开发了一个android内核模块,它拦截"pcmC0D0p"-module来获取所有系统音频。

我的目标是通过AirPlay将所有音频(或至少播放的音乐)传输到远程扬声器。

内核模块可以工作,但是在那里有几个问题(内核版本、根特权等)。所以我停止了这方面的工作。

现在,我们有了Android 4.1和4.2,我有了新的希望!

谁知道如何在Android中捕捉音频呢?

我有以下想法:

  1. 通过蓝牙连接到同一部手机,将路由设置为BT并获取“另一端”上的音频:这不应该有效
  2. 用内核模块截取音频,就像以前做的那样:硬核,让它工作,但不适用
  3. 杰克音频连接套件:遗憾的是,安卓使用的是"tinyALSA“,而不是"ALSA”。TinyALSA不支持像JACK这样的过滤器(但是这带来了内核模块的想法)
  4. 使用PulseAudio代替AudioFlinger,但这也不适用

编辑(忘记):

  1. 我从tinyALSA (Android上的ALSA )编译了"tinymix“(ALSA混频器的婴儿版),并试图将音频发送到麦克风中,但没有成功(对我来说不能理解)。这也需要生根:不适用。
  2. 我测试了OpenSL ES,但我不是一个C破解者,它的结尾是“我可以录麦克风,但没有更多”(也许我错了?)

我刚找到音频

支持实时音频路由的设备将允许将媒体音频流路由到受支持的目的地。这可以包括内部扬声器或设备本身的音频插孔,A2DP设备等等。 一旦启动,此路由对应用程序是透明的。在媒体流上播放的所有音频将被路由到选定的目标。

也许这在某种程度上有帮助?

我的想法不多了,但我想“解决这个问题”,也许有人能帮我?

编辑:

我在C&内核编码方面真的很新(但我成功地创建了一个交叉编译的音频拦截模块),但在PCM数据从用户空间(JAVA,C层)进入的时候,难道不可能听吗?到内核空间(tinyALSA,内核-模块),没有黑客和生根?

EN

回答 1

Stack Overflow用户

发布于 2013-07-03 10:07:12

您必须通过本地套接字服务器传递音频通信:

  1. 创建本地套接字服务器
  2. 通过本地套接字服务器将音频http流地址修改为path,例如用于地址 http://example.com/stream.mp3 -> http://127.0.0.1:8888/http://example.com/stream.mp3 8888是您的套接字端口。
  3. http://127.0.0.1:8888/http://example.com/stream.mp3 使用默认媒体播放器
  4. 将所有传入的请求读取到本地套接字服务器中的8888端口,对其进行分析并传递到example.com服务器。
  5. 从example.com读取响应并将其传递给本地客户端(媒体播放器)。在这里你可以捕捉音频流!
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14055272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档