【问题标题】:Can't play .opus files with MediaPlayer in Kotlin无法在 Kotlin 中使用 MediaPlayer 播放 .opus 文件
【发布时间】:2019-07-28 19:07:38
【问题描述】:

我试图创建一个简单的 MediaPlayer,但是在播放 .opus 文件时它不起作用。我用一个 mp3 对其进行了测试,它可以工作(例如,它没有将作品重命名为 mp3)。我读过一些关于 .mkv(Matroska Container Format)的内容,但我不知道它到底是什么以及它是否可以帮助我。

在我的代码中我有这样的东西:

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 媒体播放器不存在 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:准备失败。:状态=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:尝试 在没有有效媒体播放器的情况下调用 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)

【问题讨论】:

标签: android kotlin android-mediaplayer opus


【解决方案1】:

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

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

那里的指示说可以使用 opus 编解码器播放 dot mkv 文件。点 m​​kv 文件是另一种类型的文件,另一种扩展名。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多