无法在Kotlin中使用MediaPlayer播放.opus文件

时间:2019-03-07 01:15:44

标签: android kotlin android-mediaplayer opus

我试图创建一个简单的MediaPlayer,但是在播放.opus文件时却无法正常工作。我用mp3对其进行了测试,并且可以正常工作(例如,没有将作品重命名为mp3)。我已经读过一些有关.mkv(Matroska容器格式)的信息,但我不知道它到底是什么,是否可以帮助我。

在我的代码中,我是这样的:

var player : MediaPlayer = MediaPlayer()
var uri : Uri = Uri.parse(selectedFile.absolutePath)

    try {
        player.setDataSource(selectedFile.absolutePath)
        player = MediaPlayer.create(this, uri)
        player.prepare()
        player.start()
    }catch (e : Exception){
        Toast.makeText(this, "Error reading file", Toast.LENGTH_SHORT).show()
    }

我试图解决它时遇到了不同的错误,但这是我现在遇到的错误(恰好在MediaPlayer.create行中):

  

03-07 02:00:24.393 32251-32251 / com.package.app E / MediaPlayer-JNI:   QCMediaPlayer mediaplayer不存在03-07 02:00:24.393   32251-32251 / com.package.app D / MediaPlayer:无法打开文件   客户端,尝试服务器端03-07 02:00:24.413   32251-32274 / com.package.app E / MediaPlayer:错误(1,-2147483648)   03-07 02:00:24.413 32251-32251 / com.package.app D / MediaPlayer:创建   失败:       java.io.IOException:准备失败。:status = 0x1           在android.media.MediaPlayer._prepare(本机方法)           在android.media.MediaPlayer.prepare(MediaPlayer.java:1157)           在android.media.MediaPlayer.create(MediaPlayer.java:890)           在android.media.MediaPlayer.create(MediaPlayer.java:863)           在android.media.MediaPlayer.create(MediaPlayer.java:842)           在com.package.app.MainActivity.initializePlayer(MainActivity.kt:167)           在com.package.app.MainActivity $ onCreate $ 1.onClick(MainActivity.kt:111)           在android.view.View.performClick(View.java:4791)           在android.view.View $ PerformClick.run(View.java:19903)           在android.os.Handler.handleCallback(Handler.java:739)           在android.os.Handler.dispatchMessage(Handler.java:95)           在android.os.Looper.loop(Looper.java:135)           在android.app.ActivityThread.main(ActivityThread.java:5304)           在java.lang.reflect.Method.invoke(本机方法)           在java.lang.reflect.Method.invoke(Method.java:372)           在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:912)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)03-07   02:00:24.433 32251-32251 / com.package.app E / MediaPlayer:尝试   在没有有效Mediaplayer的情况下调用getDuration       错误(-38,0)03-07 02:00:24.433 32251-32251 / com.package.app I / ViewRootImpl:CPU Rendering VSync enable = true 03-07 02:00:24.443   32251-32251 / com.package.app E / MediaPlayer:错误(-38,0)

1 个答案:

答案 0 :(得分:0)

根据文档,MediaPlayer类不支持.opus文件

https://developer.android.com/guide/topics/media/media-formats

其中的指示表示可以使用作品编解码器播放点mkv文件。点mkv文件是另一种文件,另一种扩展名。

此外,仅5或更高版本的操作系统支持mkv文件。