android - 示例 1 未就绪 - Android 2.1 中的 Soundpool

标签 android soundpool

伙计们,我有一个音频文件,我正在从 sdcard 中读取它。单击一个按钮,我正在播放 sdcard 中的音频文件。它成功播放了音频文件 6 到 7 次,但之后它显示 无法加载(空)样本 1 未就绪

我正在使用 Android 2.1,即 API 7。

String path="/sdcard/var/audio.mp3"

sound1 = mSoundPool.load(path,1);
mSoundPool.play(sound1, 1, 1, 1, time - 1, 1);

soundpool 提示我无法加载(空)示例 1 未准备好是什么意思? 我该如何解决这个问题,请帮助我,我已经苦苦挣扎了很长时间。

最佳答案

我在处理 wav 文件时遇到过类似的问题。让我们开始丢弃一些东西:

这不是等待的问题,尽管在其他情况下可能是这样。请注意,您发布了两条不同的错误消息,就像一条消息一样:

  1. 无法加载(空)
  2. sample 1 未准备好

当您尝试将示例加载到 SoundPool 时会出现第一个错误,当您尝试播放它时会出现第二个错误。但在这种情况下,第二个错误显然是第一个错误的结果:如果尚未加载样本,则无法准备好。

所以你应该在第一个错误之前集中注意力。

它也与 MediaPlayer 无关,因为您使用的是 AFAIK 不同的 SoundPool。

所以问题的根源可能是,应该按顺序丢弃:

  1. 文件不存在。
  2. 文件在那里,但由于某种原因无法读取。
  3. 文件在那里,并且是可读的,但它已损坏或不是音频文件。
  4. 文件在那里,它是可读的,它是一个未损坏的音频文件,但 SoundPool 不喜欢它。

这是我的最后一个案例。由于某种原因,SoundPool 无法加载实际上适用于我使用过的所有其他播放器的 wav 样本。所以我只是结束了使用另一个格式不同的文件。这是有问题的文件的格式,正如我的 GNU/LiNUX 机器上的 mplayer 所说:

Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 96000 Hz, 1 ch, s16le, 1536.0 kbit/100.00% (ratio: 192000->192000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)

这里是另一个有效的文件:

Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 22050 Hz, 2 ch, s16le, 705.6 kbit/100.00% (ratio: 88200->88200)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)

有很多不同之处,但关键是第二个有效,所以我干脆放弃第一个并进入第二个。知道这一点后,如果我需要第一个声音样本,我只需要使用 Audacity 等音频编辑器调整其速率和 channel 即可解决问题。

为什么它不仅在第一种情况下有效?谁知道呢,但如果我能这么容易地解决它...谁会在乎呢?

问候,

关于android - 示例 1 未就绪 - Android 2.1 中的 Soundpool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537798/

相关文章:

android - SoundPool play()... 在线程或主 UI 线程中更好?

android - Alarmmanager和Soundpool-Android

java - SoundPool puse 只能工作一次

android - 在android中获取网关IP地址

java - MVVM 数据绑定(bind)验证

android studio中未指定android sdk

android - 为什么我的 SoundPool 声音不能在 Android 上第一次播放?

android - AudioTrack : AudioFlinger could not create track, 状态:-32

android - 使用 Android : which version to use? 检索 GPS 坐标

android - 我应该使用 Camera2 还是 Camera APIs for Android?