Mediaplayer возвращает ошибку (-1, 1004) при попытке прочитать аудио по URL, хранилище Firebase - PullRequest
0 голосов
/ 23 марта 2020

Добрый вечер, дорогой всем, я использую Android studio и recyclerview для отображения списка аудио, записанных в хранилище Firebase. аудиозаписи, а также их отображение в окне реселлера прошли хорошо, но когда дело доходит до воспроизведения звука, возвращается ошибка (-1, 1004). Также ссылка моего аудио воспроизводится в chrome, но когда я пытаюсь воспроизвести ссылку непосредственно с setDataSource, чтение не проходит и возвращает меня (-1, 1004). Я попытался прочитать эту ссылку http://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3 напрямую с setDataSource, и это сработало. Проблема со звуковыми ссылками Firebase? большинство решений предлагают go для Exoplayer, но я в конце проекта, это последнее, что я скучаю. Спасибо, что отреагировали

Голос и код лекции: publi c void play_songs () {mediaPlayer = new MediaPlayer ();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

        mediaPlayer.setAudioAttributes(new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_MEDIA)
                .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                .setLegacyStreamType(AudioManager.STREAM_MUSIC)
                .build());

    } else {
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    }

    try {
        //

        // URL de test  : http://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3
        Toast.makeText(context, link, Toast.LENGTH_SHORT).show();
        Log.d("VERIFIONS link ", "CHANGEONS MESSAGE" + link);
        mediaPlayer.setDataSource(link);
        Log.d("APRES SETSOURCE ", "APRES SETSOURCE" );
        //mediaPlayer.prepare();
        mediaPlayer.prepareAsync();
        Log.d("APRES PREPARE ASYNC", "APRES PREPARE ASYNC" );
        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                //seekbar.setMax(mp.getDuration());
                int tailleduseekbarre = mp.getDuration();
                Log.d("DANS ON PREPARE", "DANS ON PREPARE" );
                mp.start();
                Log.d("APRES MP START ", "APRES MP START" );

                Log.d(" TAG DURATION", " VRIFIONS LA DUREE " + mp.getDuration());
                Log.d(" TAG tailleduseekbar", " VRIFIONS LA DUREE tailleduseekbar" + tailleduseekbarre);

            }
        });
        mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
                Toast.makeText(context, " Media player Error", Toast.LENGTH_SHORT).show();
                return false;
            }
        });


        PlayCycle();

        seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                if (mediaPlayer != null && fromUser) {
                    mediaPlayer.seekTo(progress);

                    //CurrentTimer.setText(progress);

                    //Log.d(" AFFICHE", "PROGRSSIONS"+ String.valueOf(progress));
                }

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    } catch (IOException e) {

        e.printStackTrace();
        Log.d("Prepare failed.: status", " ALORS" + equals(e.getMessage()));
        Log.d("Catch De play song", "message " + e.getMessage());
    }

}

Я получил аудио ссылки, выполнив :

private void UploadFile(){
    int mtn = i++ ;
    final StorageReference ref2 = storageReference.child("/Audio/").child(audionamePlus);

     Uri uri = Uri.fromFile(new File(outputfile));
    ref2.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            Toast.makeText(FriendList.this, "Vocal saved into db storage", Toast.LENGTH_SHORT).show();
            ref2.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {

                    String oui = getCurrentUser().getUid();
                    Log.d(TAG, "onSuccess: uri= " + uri.toString());
                    String link = uri.toString();
                    //String audioname = "audio2.mp3";
                    DocumentReference docRef2 = db.collection("AUDIO CHAT").document(oui);
                    String doId = docRef2.getId();
                    Log.d(" TAG DURATION2", " VRIFIONS LA DUREE22 " + tailleduseekbarre);
                    Audio_modele audio = new Audio_modele(doId, audionamePlus, elapsedMillis, link, tailleduseekbarre);
                    AudioHelper.getAudioCollection().add(audio).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                        @Override
                        public void onSuccess(DocumentReference documentReference) {
                            Toast.makeText(FriendList.this, " SAVE ", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            });

        }
    });

}

Помощь !!

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...