Android 安卓5.0+;MediaPlayer在尝试播放OPUS文件时引发PreparedFailed异常

Android 安卓5.0+;MediaPlayer在尝试播放OPUS文件时引发PreparedFailed异常,android,android-mediaplayer,opus,Android,Android Mediaplayer,Opus,我正在尝试从我的android应用程序(目标为5.0+)播放一个.opus媒体文件。此文件的源是设备外部存储器 MediaPlayer继续抛出“java.io.IOException:Prepare failed.:status=0x1”。 请注意,我可以播放其他文件类型,如mp3和aac 注意:已授予读取外部存储权限 先谢谢你 下面是我在Android片段中的部分代码: public void playVoiceNote(VoiceNoteBO voiceNoteBO){ tr

我正在尝试从我的android应用程序(目标为5.0+)播放一个.opus媒体文件。此文件的源是设备外部存储器

MediaPlayer继续抛出“java.io.IOException:Prepare failed.:status=0x1”。 请注意,我可以播放其他文件类型,如mp3和aac

注意:已授予读取外部存储权限

先谢谢你

下面是我在Android片段中的部分代码:

    public void playVoiceNote(VoiceNoteBO voiceNoteBO){
    try{

        Uri myUri = Uri.fromFile(new File(voiceNoteBO.getFileName()));  //this resolves to the full path of the file.

        MediaPlayer mediaPlayer = new MediaPlayer();
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer.setDataSource(getActivity().getApplicationContext(), myUri);
        mediaPlayer.prepare();
        mediaPlayer.start();

    }catch(Exception e){
        //TODO
        e.printStackTrace();

    }
}
和堆栈跟踪:

06-04 18:31:46.129 1134-27920/? E/GenericSource: Failed to init from data source! 06-04 18:31:46.129 27425-27443/? E/MediaPlayer: error (1, -2147483648) 06-04 18:31:46.129 27425-27425/? W/System.err: java.io.IOException: Prepare failed.: status=0x1 06-04 18:31:46.130 27425-27425/? W/System.err: at android.media.MediaPlayer._prepare(Native Method) 06-04 18:31:46.130 27425-27425/? W/System.err: at android.media.MediaPlayer.prepare(MediaPlayer.java:1135) 06-04 18:31:46.130 27425-27425/? W/System.err: at com.frankyapps.privateread.prws.fragments.VoiceNotesFragment.playVoiceNote(VoiceNotesFragment.java:166) 06-04 18:31:46.130 27425-27425/? W/System.err: at com.frankyapps.privateread.prws.fragments.VoiceNotesFragment$1.onClick(VoiceNotesFragment.java:76) 06-04 18:31:46.130 27425-27425/? W/System.err: at com.frankyapps.privateread.prws.fragments.VoiceNotesFragment$RecyclerTouchListener.onInterceptTouchEvent(VoiceNotesFragment.java:217) 06-04 18:31:46.130 27425-27425/? W/System.err: at android.support.v7.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2261) 06-04 18:31:46.130 27425-27425/? W/System.err: at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2389) 06-04 18:31:46.130 27425-27425/? W/System.err: at android.view.View.dispatchTouchEvent(View.java:8471) 06-04 18:31:46.129 1134-27920/? E/GenericSource:无法从数据源初始化! 06-04 18:31:46.129 27425-27443/? E/MediaPlayer:错误(1,-2147483648) 06-04 18:31:46.129 27425-27425/? W/System.err:java.io.IOException:Prepare失败:状态=0x1 06-04 18:31:46.130 27425-27425/? W/System.err:at-android.media.MediaPlayer.\u prepare(本机方法) 06-04 18:31:46.130 27425-27425/? W/System.err:at-android.media.MediaPlayer.prepare(MediaPlayer.java:1135) 06-04 18:31:46.130 27425-27425/? W/System.err:com.frankyapps.privateread.prws.fragments.VoiceNotesFragment.playVoiceNote(VoiceNotesFragment.java:166) 06-04 18:31:46.130 27425-27425/? W/System.err:com.frankyapps.privateread.prws.fragments.VoiceNotesFragment$1.onClick(VoiceNotesFragment.java:76) 06-04 18:31:46.130 27425-27425/? W/System.err:com.frankyapps.privateread.prws.fragments.VoiceNotesFragment$RecyclerTouchListener.onInterceptTouchEvent(VoiceNotesFragment.java:217) 06-04 18:31:46.130 27425-27425/? W/System.err:at-android.support.v7.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2261) 06-04 18:31:46.130 27425-27425/? W/System.err:at-android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2389) 06-04 18:31:46.130 27425-27425/? W/System.err:at-android.view.view.dispatchTouchEvent(view.java:8471) 尝试使用create()方法创建MediaPlayer对象。 这就是你可以做到的:

MediaPlayer mediaPlayer = MediaPlayer.create(context, myUri);
mediaPlayer.start();
无需调用prepare()方法(如果您使用create()实例化MediaPlayer对象),因为create()将隐式调用prepare()


此链接肯定会对您有所帮助:

谢谢,但它仍然失败,出现了相同的异常,已经尝试过了。还要注意,我以前的代码正确地播放了aac和mp3文件!嗨,Elio,你在为哪个版本的android编码?你在哪个版本运行你的应用程序?嗨,Sneh,目标是5.0,在6.0上运行。你解决了这个问题吗?你能分享一下密码吗。