问题标签 [audioflinger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
522 浏览

android - 尝试在 audioflinger (AOSP) 中打开输出文件

我正在尝试从 av/services/audioflinger/AudioStreamOut.cpp 中编写一个简单的日志文件,用于测试自定义 ROM。我需要它在 Nexus 5X(牛头)上工作。

我的权限被拒绝(ERRNO 为 13)。

我尝试通过添加以下内容来修改 frameworks/base/data/etc/platform.xml:

还是没有变化。我怎样才能让它工作?或者文件系统中是否还有其他地方应该使用像audioflinger这样的系统服务来写入文件?

更新:

我刚刚找到了一个适用于模拟器的解决方案 - 在 Android N 中,写入 /data/misc/audioserver。

当我使用 ADB shell 时,它告诉我这个特定的文件夹有“audioserver”组,这就是它起作用的原因。

我从这个链接找到了这个文件夹:https ://source.android.com/devices/audio/debugging.html

但是这个文件夹在 Nexus 5X 上似乎无法访问——即使使用 su root 也无法使用 shell 访问它。

0 投票
2 回答
1333 浏览

java - SoundPool“AudioFlinger 无法创建音轨,状态:-12”

我有一个带有单个按钮的 Android 应用程序。单击按钮时,应用程序开始播放(循环)使用 SoundPool 加载的声音。再次单击该按钮时,声音停止,然后再次开始。

但问题是声音只每隔一次播放一次。

  • 单击第一次 -> 声音开始播放
  • 单击第二次-> 声音停止但不再开始
  • 第三次点击 -> 声音开始播放
  • 第 4 次单击 -> 声音停止但不开始播放
  • 等等...

当声音不播放时,logcat 中会出现此错误:

当我删除循环(将 -1 更改为 0)时,一切正常!

我正在播放的声音是一个 MP3 文件,大小为 71.6 KiB。

我已经在运行 Android 4.1.2(不工作)的 Sony Xperia U 上对此进行了测试。但在我的 Huawei Honor 6 (Android 6.0) 中一切正常,包括循环!

我究竟做错了什么?


这是我的代码:

编辑:

我不允许在这里上传原始声音,但这里有另一个声音可以做同样的事情。除了现在声音只在第一次点击时播放;以下所有点击只会使其静音并吐出上述错误。

声音在这里:sound01.mp3

0 投票
1 回答
1129 浏览

android - 如何从 REMOTE_SUBMIX 中排除 STREAM_SYSTEM

我正在编写一个应用程序来使用 REMOTE_SUBMIX 录制来自设备的音频。根据这个PAGE,据说

某些流被排除在远程子混音之外,包括 STREAM_RING、STREAM_ALARM 和 STREAM_NOTIFICATION。这些流将继续像往常一样在本地呈现。

现在我也想排除 STREAM_SYSTEM,但我找不到在 AOSP 源代码或任何配置文件中定义此策略/策略的位置。

有谁知道这方面的任何线索?非常感谢。

0 投票
1 回答
907 浏览

java - AudioFlinger 无法创建轨道,状态:-12

我正在尝试使用 audioTrack 播放音频流,所以我创建了这样的 audioTrack:

当我完成时,我像这样调用停止:

在某些设备中,当我经常创建和停止时,我得到了这个:

AudioFlinger 无法创建轨道,状态:-12。

我在 StackOverflow 中搜索过这个问题很多次,但是所有的答案都是关于 soundpool 的,而且我没有使用 soundpool

任何帮助将不胜感激!(我是中国人,我的英语不好)

0 投票
0 回答
1068 浏览

java - 类 com.google.android.gms.location.ActivityRecognitionResult 扩展的类 com.google.android.gms.internal.zzbfm 无法访问

我目前正在尝试设置一个我没有编写的名为 GoNote 的 android 应用程序。代码库大约有一年的历史,并使用 React Native。但是,存在仅限 Android 和仅限 iOS 的依赖项。

只是让项目在 Android Studio 中同步和构建时遇到了很多麻烦。现在我能够编译应用程序,但在单击 IDE 的开始按钮后遇到了一个致命错误,Android UI 给了我一个“GoNote 不断停止”对话框。我用 Oreo 和 Nougat 尝试了不同的设备(Pixel、Nexux 6、Nexus S),结果相同。我真的不知道还能做什么。日志是巨大的,我很难弄清楚什么是重要的,什么不是。

当我尝试点击应用程序图标时,我注意到 Logcat 中的以下日志:

0 投票
0 回答
172 浏览

android - AudioRecord::processAudioBuffer() 音频缓冲区来自哪里?

我查看了录制语音程序并在 AudioRecord::processAudioBuffer() 中被阻止,这是代码

我试图找出 ClientProxy.mBuffers 数据的填充位置以及 audioflinger 如何将解码后的语音数据传递给 ClientProxy.mBuffers,但我迷失在 audioclient 代码中。

有人可以带我出去吗?谢谢!

0 投票
1 回答
1896 浏览

android - AudioTrack:AudioFlinger 无法创建轨道,状态:-32

我有一个应用程序播放短声音 <5 秒,但有时音频没有播放(没有声音),音频文件是 ogg,比特率为 128kbps,采样率为 44100hz,我尝试在谷歌上搜索但没有找到解决方案,这是未播放音频时的日志

什么状态 -32 是什么意思,有人知道吗?

编辑:最后我知道错误代码32是什么意思如何知道'errno'是什么意思?

但什么可能导致错误 32 (Broken Pipe) ?

0 投票
1 回答
220 浏览

audio - LibGDX:AudioFlinger 无法创建轨道,状态 -12

我最近在我的 LibGDX 游戏中添加了声音。它的设置使我需要的所有声音都加载到 中AssetManager,当我需要从getSound(String name)方法中播放它们时,我会检索它们。

当你玩的时候它工作得很好,但最终它会停止播放一些,有时是大部分。我可以优先考虑最近播放的那些,并在需要时停止那些较旧的,但 LibGDX 似乎并没有让你对它们有太多的控制权。

发生这种情况时我得到的日志错误 E/AudioTrack: AudioFlinger could not create track, status: -12 E/SoundPool: Error creating AudioTrack

它通常一次播放很多,一次可能会播放大约 10-20 个小声音,具体取决于具体情况,所以我很确定这就是问题所在。我在这里读过关于使用SoundPool.

另外,我对所有的声音都使用了 ogg 文件,而且它们都不是很大。谢谢!

0 投票
2 回答
1269 浏览

android - 在 AudioFlinger 中捕获音频数据并保存到原始 PCM 文件

经过一番研究,我发现这可以在Android的libaudioflinger中捕获音频数据。

我认为音频数据正在这里写入 HAL:

完整代码:https ://android.googlesource.com/platform/frameworks/av/+/lollipop-release/services/audioflinger/Threads.cpp#2118

所以,我想将 mSinkBuffer + 偏移量保存到一个文件中(我预计它将是原始 PCM 音频文件)。我使用这些流将其写入文件:

该文件已成功写入,并且其中包含数据。但是,当我使用 aplay 或 ffplay 播放 PCM 文件 (audiodata.raw) 时,我得到的唯一声音是噪音。

我担心aplay的配置。所以我打印了一些 libaudioflinger 的日志:

我不知道我做错了什么。请帮我!

提前谢谢你!

0 投票
1 回答
267 浏览

android - Audio filnger 中的混音器线程是如何创建的,以及 app 和 audio flinger 混音器之间的映射是如何完成的?

我正在尝试在源代码中映射这个拱门。当我检查源代码时,音频抛掷器创建了多个线程,如直接输出线程、混音器线程、卸载线程等。

但是我不知道应该在哪里更改配置以创建多个混音器线程以及如何在应用程序和混音器线程之间映射数据,如下图所示。

只是提到这个拱门的来源是来自 - https://source.android.com/devices/automotive/audio

在此处输入图像描述