当前位置: 首页 > 知识库问答 >
问题:

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

宇文温文
2023-03-14

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

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

注意:已授予READ\u EXTERNAL\u存储权限。

提前谢谢你。

下面是我在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)

共有1个答案

裴星洲
2023-03-14

尝试使用create()方法创建MediaPlayer对象。您可以这样做:

MediaPlayer mediaPlayer = MediaPlayer.create(context, myUri);
mediaPlayer.start();

无需调用prepare()方法(如果您使用create()实例化MediaPlayer对象),因为create()将隐式调用prepare()。

此链接肯定会帮助您:https://developer.android.com/reference/android/media/MediaPlayer.html

 类似资料:
  • 下面是我生成PDF的代码: 下面是我用来绘制多个字符串的代码: 此代码正常工作,但如果我将更改为,它将引发以下异常: 起初,我认为这是因为有些数据不存在,无法编写,但如果我不更新Voly,它就可以正常工作。然后我认为这是一个问题,当创建了一个新页面但流存在时,没有创建PDPageContentStream。 提前感谢您的帮助!

  • 我正在尝试将文件上传到 Azure Blob 存储,但在将文件推送到存储中时收到错误。 我使用java 11和Quarkus进行开发。在POM上,我添加了工件azure-storage-blob和azure-sdk-bom 法典: 恢复错误 io.net.cha.DefaultChannelPipeline] (vert.x-eventloop-thread-2) 一个 exceptionCaug

  • 我试图在我的JavaFX应用程序中播放音频文件,代码对我来说很好,但我遇到了错误 我认为问题出在第28行: "原因:java.lang.NullPointerExctive:无法调用"java.net.URL. toString()",因为"资源"在示例中为空。Main.start(Main.java:28)" 为什么资源为空?在我的文件结构中,我得到了资源包,但不管音频文件在哪里,错误都是一样的

  • 社区向导, 我真的很沮丧。谈到Spark、Hadoop等人,似乎没有什么是直截了当的。 在过去的几个小时里,我试图找到以下问题的解决方案: 版本: 操作系统:Windows 10 火花版本:2.4.6 Scala版本:2.11.12 Hadoop版本:2.7.1 Java版本:1.80_202(64位) 变量: SPARK\u主页:C:\SPARK 路径: %SPARK_HOME%\bin %HA

  • null:java.lang.nullPointerException at org.apache.solr.response.transform.childDocTransformer.transform(ChildDocTransformerfactory.java:136)at org.apache.solr.handler.component.realtimeGetComponent.pr

  • 任何Avro格式的文件写入尝试都会失败,堆栈跟踪如下。 我们正在使用Spark 2.4.3(使用用户提供的Hadoop)、Scala 2.12,并且我们在运行时使用任一Spark-shell加载Avro包: org.apache.sparkavro_2 或spark提交: 提交org.apache.sparkavro_2 spark会话报告已成功加载Avro包。 ... 在任何一种情况下,当我们尝