Nano Hash - криптовалюты, майнинг, программирование

Android ›=5.0 Ошибка подготовки MediaPlayer

У меня возникла проблема с 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)

Ответы:


1

Вот мой код и он работает, пожалуйста, попробуйте это

AssetFileDescriptor afd;
            // new music player object for new page
            mediaPlayerSound = new MediaPlayer();

        try {
            afd = getAssets().openFd("Audio/" + soundSource);
            mediaPlayerSound.setDataSource(afd.getFileDescriptor(),
                    afd.getStartOffset(), afd.getLength());

            mediaPlayerSound.prepare();
            mediaPlayerSound.start();

            mediaPlayerSound
                    .setOnCompletionListener(new OnCompletionListener() {

                        @Override
                        public void onCompletion(MediaPlayer mp) {
                            // TODO Auto-generated method stub
                        }
                    });

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
24.03.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..