Не могу воспроизвести файлы .opus с MediaPlayer в Kotlin - PullRequest
0 голосов
/ 07 марта 2019

Я пытался создать просто 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.39332251-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: подготовить не удалось .: 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.вызвать (собственный метод) в 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: рендеринг процессора VSync enable = true 03-07 02:00:24.443 32251-32251 / com.package.app E / MediaPlayer: Ошибка (-38,0)

1 Ответ

0 голосов
/ 07 марта 2019

Согласно документу класс MediaPlayer не поддерживает файлы .opus

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

Там указывается, что можно воспроизводить точечные файлы MKV с помощью кодека opus. Dot mkv файлы - это файлы другого типа, с другим расширением.

Более того, файлы mkv поддерживаются только в ОС 5 или более поздней версии.

...