问题标签 [audiotrack]

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 投票
2 回答
7722 浏览

android - Android - 将多个静态波形混合到一个 AudioTrack 中

我正在制作一个类,它采用一组频率值(即 440Hz、880Hz、1760Hz)并播放它们如何组合成一个 AudioTrack。我不是一个健全的程序员,所以这对我自己来说很难写,我相信对于一个有经验的健全的程序员来说这是一个相对容易的问题。下面是 play 方法中的一些代码:

现在,此代码只是播放音乐会 A (440Hz)。这是为了测试这段代码是否有效。现在,我需要获取一堆频率,执行某种计算,并写入样本数据。

0 投票
3 回答
2593 浏览

java - AudioTrack 没有播放完整的缓冲区

我试图以 600hz 播放 10 秒的声音,但我得到 600hz 的时间不超过 3 秒。有人可以指出我做错了什么吗?

调试行返回的位置

始终如一。

注意 play.length = 442368。

经过一些更多的实验,缓冲区总是 play.length 的一半,但声音本身只持续 3-5 秒,不管缓冲区有多大。

0 投票
0 回答
278 浏览

android - Android AudioTrack 缓冲不足时如何获得通知?

我试图弄清楚如果 AudioTrack 对象缓冲不足,我如何获得回调或其他东西,以便我可以暂停播放直到它重新填充。我猜这对我以外的其他人会有用!

我能想到的唯一方法是在每次写入缓冲区后调用 Systemclock.elapsedRealtime() 并将其与我写入 AudioTrack 的毫秒数进行比较,我认为这会给我缓冲区中剩余的数量. 但是测量的时间差(显示在日志中)随着时间的推移逐渐增加或减少,而不是保持不变。谁能明白为什么?

这就是我所拥有的。首先初始化:

然后写一个缓冲区:

0 投票
1 回答
21537 浏览

android - 通过耳机播放音乐时通过扬声器播放声音

AudioTrack通过耳机进行流式传输。我必须只SoundPool向内置扬声器发送一个,而不会中断AudioTrack耳机的播放。有黑帮大佬吗?

0 投票
1 回答
1614 浏览

android - Android中使用AudioTrack类连续合成静态波形

下面是我的play()方法的代码,它简单地生成一组任意频率并将它们混合成一个音调。

问题是它只播放一瞬间 - 我需要连续播放它。我将不胜感激有关如何使用 Android 中的 AudioTrack 类不断生成声音的建议。我相信它与MODE_STREAM常数有关,但我不太清楚如何。

这是 AudioTrack 类文档的链接:

http://developer.android.com/reference/android/media/AudioTrack.html

编辑:我忘了提到一个重要方面,它不能循环。由于有时会混合多达 50 多个频率,因此听起来会很不稳定,因为所有频率峰值都没有最小的公分母 - 或者它离波形太远而无法存储为一个声音。

0 投票
2 回答
7782 浏览

android - AudioTrack Android 从原始文件夹播放声音

AudioTrack是否可以从资源文件夹 raw播放 wav 文件?它尝试了很多方法来引用我的 Android 项目中的原始文件,但我遇到了很多异常。

这就是我现在所拥有的,但是当我按下按钮时,没有声音播放。

0 投票
1 回答
1229 浏览

android - Android 2.3 AudioTrack 问题(obtainbuffer 超时 - cpu 挂钩?)

我正在编写一个音频流应用程序来缓冲 AAC 文件块,将这些块解码为 PCM 字节数组,并将 PCM 音频数据写入 AudioTrack。有时,当我尝试跳到另一首歌曲、调用 AudioTrack.pause() 或 AudioTrack.flush() 时,会收到以下错误:

然后会发生一瞬间的音频继续播放。我尝试从 sdcard 读取一组 AAC 文件并得到相同的结果。我期待的行为是音频立即停止。有谁知道为什么会这样?我想知道它是否是 Android 2.3 的音频延迟问题。

编辑:AAC 音频包含一个 ADTS 标头。标头 + 音频有效负载构成了我所说的 ADTSFrame。它们一次一帧地馈送到解码器。从 C 层返回到 Java 层的结果 PCM 字节数组被馈送到 Android 的 AudioTrack API。

编辑 2:我今天得到了我的 nexus 7(Android 4.1 操作系统)。将相同的应用程序加载到设备上。根本没有这些问题。

0 投票
1 回答
8540 浏览

android - AudioTrack - 如何知道声音何时开始/结束?

我正在使用音轨以流模式播放不同的声音。我想知道是否有办法知道每个声音何时/结束播放。

我像这样创建音轨:

并在后台线程中启动它:

我在可运行文件中写出这样的每个声音:

是否可以使用任何 AudioTrack API(如 setNotificationMarkerPosition、setLoopPoints 或 setPositionNotificationPeriod)来完成此操作?它们是如何工作的?

每个声音可以是不同的持续时间。我认为这是关键。

我不完全理解这些 API 的文档。每一帧都与样本相同吗?如何为每个声音的开始/结束位置指定一个标记?

谢谢,

0 投票
1 回答
1651 浏览

android - 用于播放钢琴声音的 Android AudioTrack 类

我试图实现一个钢琴应用程序,用户可以在显示器上显示的虚拟钢琴上演奏。由于低延迟,我尝试使用 AudioTrack 类,这会带来很多麻烦。我的问题是快速播放声音。目前我使用按钮来测试它。如果我快速按下按钮,我会得到这个例外:

我在静态模式下使用 AudioTrack。每次我喜欢播放声音时,我都必须使用 new AudioTrack(....) 创建一个新的 AudioTrack 对象,然后 write(...) 和 play(....)

我认为它不能足够快地实例化,因此例外......

这是代码:声音存储在不同异步任务类的哈希图中

如果有人可以帮助解决这个问题,那就太好了,也许使用流模式而不是静态模式,其中声音被预处理或空字节缓冲区被写入音轨,然后单击按钮,哈希图声音被流式传输到音轨。

0 投票
1 回答
401 浏览

android - android音轨不会输出超过一定频率

我已经为 android 创建了一个应用程序,它创建和存储一个音调,然后使用 android 音轨类播放它。问题是:在我的手机上,我只能播放频率高达约 11kHz 的音调,而在我的 PC 上运行的虚拟手机(完全相同的代码)上,我可以获得高达约 14kHz 的频率。什么可能导致此中断?

使用市场上的音源应用程序,我的手机可以产生高达 20kHz 的信号,所以我知道这不是硬件问题。

谢谢。