2 votes

Impossible de lire l'audio dans le stockage firebase envoyé depuis l'application Android

J'utilise le stockage firebase pour télécharger de l'audio depuis mon application Android, puis télécharger et lire dans mon application. Le fichier audio est téléchargé, mais lorsque je le joue à partir du stockage firebase, il s'affiche dans un format vidéo comme l'image ci-dessous et ne lit pas l'audio. Je définis également les métadonnées comme audio/mp3.

J'ai essayé de faire des recherches à ce sujet dans la documentation de firebase et dans google mais je n'ai pas réussi à résoudre mon problème.

video format

Uri file = Uri.fromFile(new File(fileName));
 //filename is audio stored in my phone's local storage.

StorageMetadata metadata = new StorageMetadata.Builder()
            .setContentType("audio/mp3")
            .build();

// Upload the file and metadata

 UploadTask uploadTask = storageReference.child("audio/audio.mp3").putFile(file, metadata);

uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
        double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
    }
}).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle unsuccessful uploads
    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        // Handle successful uploads on complete
        // ...
        Task<Uri> uri = taskSnapshot.getStorage().getDownloadUrl();
        while(!uri.isComplete());
        Uri url = uri.getResult();

        Toast.makeText(MainActivity.this, "Upload Success, download URL " +
                url.toString(), Toast.LENGTH_LONG).show();
    }
});

Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()) {
            throw task.getException();
        }

        // Continue with the task to get the download URL
        return storageReference.getDownloadUrl();

    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            Uri downloadUri = task.getResult();

        } else {
            // Handle failures
            // ...
        }
    }
});

Je veux que l'audio soit sauvegardé correctement dans le stockage firebase et qu'il soit ensuite diffusé dans mon application. Toute aide sera appréciée. Je vous remercie.

1voto

OlgaPp Points 13

Votre problème peut avoir été causé par Enregistreur de médias . J'ai compris que le format de sortie devait être réglé sur CAA . Le navigateur sera alors en mesure de le lire. J'ai rencontré ce problème lorsque j'ai essayé d'utiliser React JS pour lire de l'audio capturé par MediaRecorder dans Android, et j'ai essayé différents formats (.3gp, .mp4, .wav), mais c'est le seul qui a fonctionné. Je pense qu'il y en a d'autres.

Ainsi :

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

0voto

Kan Partha Points 1

Essayez comme ceci,

metadata = new StorageMetadata.Builder()
        .setContentType("audio/mpeg")
        .build();

uploadTask = storageRef.child("audio/"+file.getLastPathSegment()).putFile(file,metadata);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X