У меня возникла проблема с MediaPlayer на устройствах Android SDK >= 21 с воспроизведением потокового мультимедиа (видео и аудио в формате mp4/mp3). Как и ожидалось, на старых устройствах все работает нормально. Я просмотрел некоторые темы и обнаружил, что это может быть случай NuPlayer, который является экспериментальной заменой AwesomePlayer, но это не решает мою проблему, даже после замены его обратно на AP.
Я застрял, поэтому я ценю любую помощь.
Мой код:
new AsyncTask() {
@Override
protected Void doInBackground(String... paths) {
if (mPlayer == null) {
mPlayer = new MediaPlayer();
} else {
mPlayer.reset();
}
if (mPlayer != null && mPlayer.isPlaying()) {
mPlayer.start();
}
String source = paths[0];
try {
mPlayer.setDataSource(source);
mPlayer.prepare();
mPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
Моя трассировка стека выглядит следующим образом:
03-23 16:19:19.582: D/MediaPlayer(8241): Couldn\'t open file on client side, trying server side
03-23 16:19:53.902: E/MediaPlayer(8241): error (1, -2147483648)
03-23 16:19:53.905: D/MediaPlayer(8241): create failed:
03-23 16:19:53.905: D/MediaPlayer(8241): java.io.IOException: Prepare failed.: status=0x1
03-23 16:19:53.905: D/MediaPlayer(8241): at android.media.MediaPlayer._prepare(Native Method)
03-23 16:19:53.905: D/MediaPlayer(8241): at android.media.MediaPlayer.prepare(MediaPlayer.java:1125)
03-23 16:19:53.905: D/MediaPlayer(8241): at android.media.MediaPlayer.create(MediaPlayer.java:866)
03-23 16:19:53.905: D/MediaPlayer(8241): at android.media.MediaPlayer.create(MediaPlayer.java:839)
03-23 16:19:53.905: D/MediaPlayer(8241): at android.media.MediaPlayer.create(MediaPlayer.java:818)
03-23 16:19:53.905: D/MediaPlayer(8241): at myapp.FrameVideo$6.doInBackground(FrameVideo.java:609)
03-23 16:19:53.905: D/MediaPlayer(8241): at myapp.FrameVideo$6.doInBackground(FrameVideo.java:1)
03-23 16:19:53.905: D/MediaPlayer(8241): at android.os.AsyncTask$2.call(AsyncTask.java:288)
03-23 16:19:53.905: D/MediaPlayer(8241): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
03-23 16:19:53.905: D/MediaPlayer(8241): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
03-23 16:19:53.905: D/MediaPlayer(8241): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
03-23 16:19:53.905: D/MediaPlayer(8241): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
03-23 16:19:53.905: D/MediaPlayer(8241): at java.lang.Thread.run(Thread.java:818)