2011-11-01 61 views
2

我试图通过带负载的ID在soundpool中打开一个mp3,也试图通过文件描述符来做到这一点。为什么我的mp3会被压缩?

我总是得到相同的异常:

This file can not be opened as a file descriptor; it is probably compressed 

为什么我的MP3被压缩?

这里是的Soundpool代码:

mySoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
try { mySoundPool.load(this, R.raw.drum, 1); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Log.e(TAG, "", e); 
    } 

回答

1

MP3是一种压缩文件格式,让您的MP3文件已经压缩。作为wikipedia说:

MP3,是使用有损 数据压缩的形式

This Stackoverflow question建议你应该使用在Android WAV或OGG的支持专利的数字音频编码格式,并提供了一种替代播放MP3的方式。

SoundPool API docs确实意味着支持MP3,所以我不确定这里出了什么问题。我建议您尝试使用其他一些MP3文件进行测试,并测试将现有的MP3转换为WAV/OGG格式以进行测试。

您需要将其重命名为Android资源不包含文件扩展名。请确保您检查res \ raw中的另一个文件是否具有相同的名称,但具有不同的文件扩展名,因为这可能会导致问题。

+0

那么为什么它不与soundpool玩?我认为soundpool除了mp3吗? – panthro

+0

发布您的代码。 –

+0

已发布代码 – panthro

相关问题