web-dev-qa-db-fra.com

Puis-je utiliser Firebase Storage pour la diffusion de musique en ligne?

Ce que je veux, c'est enregistrer des fichiers mp3 sur Firebase Storage, puis les diffuser sur un appareil Android. Tous les tutoriels sur Firebase discutent du téléchargement et du téléchargement du fichier image.

S'il existe un autre cloud plus facile que Firebase pour stocker et diffuser de l'audio pour Android, veuillez suggérer.

17
brijesh kumar
  1. Firebase fournit StreamDownloadTask comme Mike l'a suggéré, pour obtenir InputStream mais malheureusement = MediaPlayer n'accepte pas un flux direct. Maintenant, nous avons 2 options si nous voulons strictement continuer avec InputStream, autant que je sache -

    une. Écrivez un flux dans le fichier temporaire et transmettez-le au lecteur multimédia. Personnellement, je ne recommande pas cette approche. Il comprend l'écriture de données inutiles et vous devez également maintenir synchronisation entre les données en streaming, l'écriture de fichiers et la lecture de médias.

    b. Créer serveur StreamProxy comme application de nouvelles npr. Vous pouvez trouver le code source de l'App ici .

  2. Un moyen simple de lire un fichier musical à partir de Firebase consiste à récupérer d'abord le URL de téléchargement en utilisant référence de stockage et à transmettre cette URL au lecteur multimédia en tant que source de données. Ci-dessous est l'extrait de code -

    public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener {
    
            private MediaPlayer mMediaplayer;
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                mMediaplayer = new MediaPlayer();
                mMediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                fetchAudioUrlFromFirebase();
            }
    
            private void fetchAudioUrlFromFirebase() {
                final FirebaseStorage storage = FirebaseStorage.getInstance();
                // Create a storage reference from our app
                StorageReference storageRef = storage.getReferenceFromUrl("PATH_OF_YOUR_AUDIO_FILE");
                storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        try {
                            // Download url of file
                            final String url = uri.toString();
                            mMediaplayer.setDataSource(url);
                            // wait for media player to get prepare
                            mMediaplayer.setOnPreparedListener(MainActivity.this);
                            mMediaplayer.prepareAsync();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
    
                    }
                })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Log.i("TAG", e.getMessage());
                            }
                        });
    
            }
    
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();
            }
        }
    
13
Rahul