Android 安卓可以';你不能用soundpool播放一些wav文件吗?

Android 安卓可以';你不能用soundpool播放一些wav文件吗?,android,audio,Android,Audio,一些.wav文件我不能用soundpool播放。我什么也听不见。有些文件播放得很好。为什么? 代码 我在声音池和文件格式方面有很多问题,这可能对你有帮助 基本上,我改为使用MediaPlayer,没有其他问题。我发现使用运行Jellybean 4.1.2的LG Optimus F3的.WAV资源文件时,其MediaPlayer库无法解码: 比特率超过256kbps的文件,以及 持续时间小于.075秒的文件 无论哪种情况,logcat中的症状都是: V/SoundPool﹕ load: fd=49

一些.wav文件我不能用soundpool播放。我什么也听不见。有些文件播放得很好。为什么?

代码


我在声音池和文件格式方面有很多问题,这可能对你有帮助


基本上,我改为使用MediaPlayer,没有其他问题。

我发现使用运行Jellybean 4.1.2的LG Optimus F3的.WAV资源文件时,其MediaPlayer库无法解码:

  • 比特率超过256kbps的文件,以及
  • 持续时间小于.075秒的文件
  • 无论哪种情况,logcat中的症状都是:

    V/SoundPool﹕ load: fd=49, offset=123932, length=536, priority=1
    V/SoundPool﹕ create sampleID=3, fd=50, offset=536, length=123932
    V/SoundPool﹕ doLoad: loading sample sampleID=3
    V/SoundPool﹕ Start decode
    V/MediaPlayer﹕ decode(50, 123932, 536)
    V/SoundPool﹕ close(50)
    E/SoundPool﹕ Unable to load sample: (null)
    
    上述错误不会生成致命异常,而是会导致SoundPool稍后尝试使用这些“null”声音,这反过来会导致手机锁定和/或丢失帧降低比特率并使用Audacity的“添加静音”效果来延长声音文件的时间解决了此问题。

    与上述症状相反,成功的声音池加载在logcat中如下所示:

    V/SoundPool﹕ load: fd=55, offset=765700, length=3534, priority=1
    V/SoundPool﹕ create sampleID=7, fd=56, offset=3534, length=765700
    V/SoundPool﹕ doLoad: loading sample sampleID=7
    V/SoundPool﹕ Start decode
    V/MediaPlayer﹕ decode(56, 765700, 3534)
    V/SoundPool﹕ close(56)
    V/SoundPool﹕ pointer = 0x5f464000, size = 6976, sampleRate = 8000, numChannels = 2
    
    如果您正在加载多个声音(这是SoundPool的目的),请注意您的
    sampleID
    值,因为它们会告诉您哪个声音文件加载失败,第一个加载的声音文件是
    sampleID=1
    ,依此类推。这有助于我区分“坏”和“好”.WAV文件


    请注意,我在LG和三星的其他几个运行Android Kitkat的平台上没有遇到这个问题,它们成功地加载了更高的比特率和短声音文件。

    日志文件中有错误吗?我在Android中遇到了一些奇怪的.wav文件问题。我的解决方案是将它们转换成.mp3格式。您使用的是三星Galaxy S/Tab吗?正如@xandy所说,我发现你不能用这些设备播放流式WAV或OGG音频。我还把它们转换成了Mp3。我没有收到任何错误,转换成Mp3解决了这个问题。我在HTC Sensation XE,Android 4.03上用Wav实现了。规格为:编解码器:PCM S16 LE(araw)///通道:2///采样率:44.1kHz///每个采样16位///
    V/SoundPool﹕ load: fd=55, offset=765700, length=3534, priority=1
    V/SoundPool﹕ create sampleID=7, fd=56, offset=3534, length=765700
    V/SoundPool﹕ doLoad: loading sample sampleID=7
    V/SoundPool﹕ Start decode
    V/MediaPlayer﹕ decode(56, 765700, 3534)
    V/SoundPool﹕ close(56)
    V/SoundPool﹕ pointer = 0x5f464000, size = 6976, sampleRate = 8000, numChannels = 2