SoundPool 中的声音不会在 android 中加载

Posted

技术标签:

【中文标题】SoundPool 中的声音不会在 android 中加载【英文标题】:Sounds in SoundPool does not load in android 【发布时间】:2016-09-02 16:52:47 【问题描述】:

我在为我的游戏加载声音时遇到问题。或者,更确切地说,一些声音。加载R.raw.successR.raw.fail 似乎没有问题。但不会加载任何注释。以下是我的加载代码:

SoundPool soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 1);  
int[] sounds = new int[6];        
sounds[0] = soundPool.load(getApplicationContext(), R.raw.note_c, 1);  
sounds[1] = soundPool.load(getApplicationContext(), R.raw.note_d, 1);  
sounds[2] = soundPool.load(getApplicationContext(), R.raw.note_e, 1);  
sounds[3] = soundPool.load(getApplicationContext(), R.raw.note_g, 1);  
sounds[4] = soundPool.load(getApplicationContext(), R.raw.note_a, 1);  
sounds[5] = soundPool.load(getApplicationContext(), R.raw.note_ctwo, 1);  
success_sound = soundPool.load(getApplicationContext(), R.raw.success, 1);  
fail_sound = soundPool.load(getApplicationContext(), R.raw.fail, 1);

加载文件的顺序似乎并不重要。只有failsuccess 加载没有问题。声音工作了很长一段时间,但在我正在处理的最后一个补丁中,声音停止加载。更改文件名也无法解决此问题。

已经尝试过广泛地“谷歌搜索”各种形状和形式的错误,但无济于事。我在 LogCat 中得到以下输出:(最后两行是成功和失败的声音加载没有问题。)

com.example.application E/WVMExtractor: Failed to open libwvm.so: dlopen failed: library "libwvm.so" not found
com.example.application E/NdkMediaExtractor: sf error code: -1010
com.example.application E/SoundPool: Unable to load sample
com.example.application E/NdkMediaExtractor: sf error code: -1010
com.example.application E/SoundPool: Unable to load sample
com.example.application E/NdkMediaExtractor: sf error code: -1010
com.example.application E/SoundPool: Unable to load sample
com.example.application E/NdkMediaExtractor: sf error code: -1010
com.example.application E/SoundPool: Unable to load sample
com.example.application E/NdkMediaExtractor: sf error code: -1010
com.example.application E/SoundPool: Unable to load sample
com.example.application E/NdkMediaExtractor: sf error code: -1010
com.example.application E/SoundPool: Unable to load sample
com.example.application I/OMXClient: Using client-side OMX mux.
com.example.application I/OMXClient: Using client-side OMX mux.

当声音应该播放时,我得到以下输出:W/SoundPool: sample 1 not READY

【问题讨论】:

【参考方案1】:

问题可能出在您的资产(音频文件)

我在 LG G4 设备上的一些视频文件 (.mov) 遇到了同样的问题 (E/NdkMediaExtractor: sf error code: -1010)。 (在三星 S7、华为 P9 等设备上没有问题)

转换所有文件后:

for f in *.mov; do ffmpeg -i "$f" -c copy -movflags +faststart "$f%.mov.mp4"; done

视频文件在任何地方都正确加载。

所以,我给你的建议是:尝试使用你的音频文件格式 - 将它们转换为其他格式可能会有所帮助。

【讨论】:

以上是关于SoundPool 中的声音不会在 android 中加载的主要内容,如果未能解决你的问题,请参考以下文章

如何停止 SoundPool 中的所有声音?

Android中的音频处理------SoundPool,MediaRecorder,MediaPlayer以及RingStone总结

如何在 soundPool (Android) 中逐渐加载声音?

为啥我的 SoundPool 声音第一次在 Android 上没有播放?

Android 编程 - 如何从广播接收器播放 SoundPool 声音?

Android SoundPool 不播放声音