3

I am getting error when trying to play mp**3 file from my **resource folder in Android application

i have created raw folder in res folder this is sample code through which i am playing

MediaPlayer mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.b);
mediaPlayer.start();

LOG :

09-02 10:44:07.854: INFO/AndroidRuntime(441): NOTE: attach of thread 'Binder Thread #3' failed
09-02 10:44:08.003: DEBUG/AudioSink(34): bufferCount (4) is too small and increased to 12
09-02 10:44:08.224: WARN/AudioFlinger(34): write blocked for 117 msecs, 44 delayed writes, thread 0xb3f0
09-02 10:44:08.283: INFO/ActivityManager(59): Displayed activity com.soundtest/.SoundTestActivity: 511 ms (total 511 ms)
09-02 10:44:13.052: ERROR/MP3Extractor(34): Unable to resync. Signalling end of stream.

i am missing something or what??

4

3 回答 3

3

在我决定将 mp3 文件从资产复制到 SD 后,错误消失了。当我的数据源设置为 SD 存储而不是资产的 uri 时,它工作正常。

于 2012-09-28T23:59:33.633 回答
1

你能试一下吗:

AssetFileDescriptor afd = ctx.getResources().openRawResourceFd(params[0]);

try
{   
    //final MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.reset();
    mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
    mediaPlayer.prepare();
    mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer arg0) {
            mediaPlayer.seekTo(0);
            mediaPlayer.start();
        });
    }
});
afd.close();
于 2011-09-02T08:41:45.017 回答
0

将mp3转换为ogg,错误就会消失。我测试了两个文件。ogg 播放不如 mp3 流畅,但日志中没有显示任何错误。


嘿,在我测试了这样的警告之后:WARN/AudioFlinger(33): write blocked for 76 ms, 7773 delayed writes, thread 0xb3f0

我再次测试了 mp3 文件,但没有出现错误。

我相信是权限丢失触发了错误,而不是文件格式。

据我了解,prepare() 会制作音乐文件的图像,以便播放器可以一次又一次地同步播放。但是如果我们没有设置权限,写被阻塞,读(再次播放)和写变得不同步。所以它是“无法重新同步”。

但我不明白为什么每次播放音乐时它都会一遍又一遍地写。我误解了吗?

en,至于 ogg 文件,我也不知道为什么它可以避免错误。

但没关系,我相信我得到了正确的答案。它是添加这些权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
于 2011-11-24T12:34:16.437 回答