java - SoundPool 中的声音无法在 Android 中加载

标签 java android soundpool

我在加载游戏声音时遇到问题。或者更确切地说,是一些声音。加载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:示例 1 未就绪

最佳答案

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

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

转换所有文件后:

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

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

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

关于java - SoundPool 中的声音无法在 Android 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39297363/

相关文章:

android - 在 react-native 项目中找不到 metro-config node_modules

android - 防止由于方向改变而导致android中的状态改变

java - ListView不显示Fragment中的数据

android - 单击按钮播放随机声音

android - Alarmmanager和Soundpool-Android

java - 类型不匹配 : cannot convert from org. json.JSONObject 到 org.json.simple.JSONObject

java - Tomcat没有自动部署war文件

java - 如何从旧版本的 spring mvc 3.0.5 使用/集成 spring security

android - 使用 Android 的 SoundPool 类播放音频文件序列

java - 如何在 UDDI 中测试我们的 Java Web 服务