web-dev-qa-db-fra.com

Firebase Storage Streaming vidéo

Je travaille sur une application dotée d'une fonctionnalité de streaming vidéo. J'utilise la base de données firebase et le stockage firebase. J'essaie de trouver de la documentation sur la façon dont le stockage firebase traite les fichiers vidéo, mais je ne trouve pas grand-chose.

Il est mentionné dans la documentation que le stockage firebase fonctionne avec d'autres services d'applications Google pour permettre la diffusion en continu de CDN et de vidéos, mais toutes les recherches semblent aboutir à une impasse. Aucun conseil?

54
gcas

Je pense qu'il y a plusieurs types de streaming vidéo, ce qui pourrait changer notre réponse ici:

  • Diffusion en direct (les abonnés regardent l'événement se produire)
  • Style Youtube (postez une vidéo et regardez les utilisateurs finaux à leur convenance)

Ayant construit une application de style Periscope en streaming en direct à l'aide de Firebase Storage et de la base de données en temps réel Firebase, je le déconseille vivement - nous avons transféré des morceaux de deux secondes et les avons synchronisés via la base de données Realtime. Bien que cela ait fonctionné (étonnamment bien), il y avait une latence d'environ 5 secondes sur un très bon Internet, et ce n'était pas non plus la solution la plus efficace (après tout, vous mettez en ligne et stockez cette vidéo, sans transcodage). . Je recommande d'utiliser un style WebRTC, conçu pour le transport vidéo, et d'utiliser la base de données Realtime pour la signalisation le long du flux.

De l’autre côté, il est certainement possible de construire un mobile YT sur les fonctionnalités de Firebase. Le truc ici consiste à transcoder la vidéo (en utilisant quelque chose comme Zencoder ou Bitmovin, plus ici: https://cloud.google.com/solutions/media/ ) pour diviser votre vidéo importée en morceaux plus petits de résolutions différentes (et de formats différents, iOS nécessite HLS pour la diffusion en continu, par exemple). Votre client peut stocker des morceaux informations de la base de données en temps réel (nom du bloc, résolutions disponibles, nombre de morceaux), et peuvent télécharger ces morceaux depuis Stockage au fur et à mesure que la vidéo progresse.

35
Mike McDonald

Si vous voulez faire passer une vidéo à la vapeur à partir de Firebase Storage, c’est le meilleur moyen que j’ai trouvé. Cela dépendra de la taille de votre fichier vidéo. Je ne demande que des fichiers de 10 à 30 Mo afin que cette solution fonctionne bien pour moi. Traitez simplement l’URL Firebase comme une URL régulière:

String str = "fire_base_video_URL";
Uri uri = Uri.parse(str);

videoViewLandscape.setVideoURI(uri);
progressBarLandScape.setVisibility(View.VISIBLE);
videoViewLandscape.requestFocus();
videoViewLandscape.start();

Si vous voulez boucler la vidéo:

videoViewLandscape.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
    }
});

Et si vous souhaitez afficher une barre de progression avant le début de la vidéo, procédez comme suit:

videoViewLandscape.setOnInfoListener(new MediaPlayer.OnInfoListener() {
    @Override
    public boolean onInfo(MediaPlayer mp, int what, int extra) {
        if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
            progressBarLandScape.setVisibility(View.GONE);
            return true;
        }
        else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START){
            progressBarLandScape.setVisibility(View.VISIBLE);
            return true;
        }
        return false;
    }
});

Ce n'est pas la meilleure façon de faire les choses, mais cela fonctionne pour moi jusqu'à ce que je puisse trouver un bon service de streaming vidéo.

20
grantespo

Avez-vous essayé: https://firebase.google.com/docs/storage

Le stockage en nuage est conçu pour les développeurs d'applications qui doivent stocker et diffuser du contenu généré par l'utilisateur, tel que des photos ou des vidéos.

0
Kenneth Bregat