MP3Extractor(34):无法重新同步。信号流结束

时间:2011-09-02 05:31:27

标签: android android-mediaplayer

尝试播放mp ** 3文件时出错 来自 Android 应用

中的**资源文件夹

我在res文件夹中创建了原始文件夹 这是我正在玩的示例代码

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

日志:

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.

我错过了什么或什么?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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();

答案 2 :(得分:0)

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


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

我再次测试mp3文件,错误不会显示出来。

我认为失败的权限会触发错误,而不是文件格式。

在我的理解中,prepare()将制作音乐文件的图像,以便玩家可以同步一次又一次地播放。但是如果我们没有设置权限,写入被阻止,并且读取(再次播放)和写入变得不同步。所以它“无法重新同步”。

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

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

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

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

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