Firebase De Stockage Vidéo En Streaming

je travaille sur une application qui a 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 firebase storage gère les fichiers vidéo, mais je ne trouve pas grand chose.

il est mentionné dans les documents que firebase storage fonctionne avec d'autres services de google app pour permettre le CDN et le streaming vidéo, mais toutes les recherches semblent conduire à une impasse. Tous les conseils?

36
demandé sur gcas 2016-06-16 20:12:37

2 réponses

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

  • Live streaming (abonnés regardent comme un événement qui se passe)
  • style Youtube (postez une vidéo et les utilisateurs finaux regardent à leur convenance)

ayant construit une application de type Périscope en direct utilisant Firebase Storage et la base de données en temps réel Firebase, je recommande fortement de ne pas le faire--nous avons téléchargé trois morceaux de seconde et les avons synchronisés via le En Temps Réel De La Base De Données. 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 téléchargez et stockez cette vidéo, en plus il n'y avait pas de transcodage). Je recommande d'utiliser un style WebRTC, construit pour le transport vidéo, et d'utiliser la base de données en temps réel pour la signalisation le long du flux.

de l'autre côté, il est certainement possible de construire mobile YT sur des caractéristiques de base de feu. L'astuce ici est va être en train de transcoder la vidéo (en utilisant quelque chose comme Zencoder ou Bitmovin, plus ici:https://cloud.google.com/solutions/media/) pour découper votre vidéo téléchargée en petits morceaux de différentes résolutions (et différents formats, iOS nécessite HLS pour Le streaming, par exemple). Votre client peut stocker des informations de morceaux dans la base de données en temps réel (nom du morceau, résolutions disponibles, nombre de morceaux), et peut télécharger ces morceaux de stockage à mesure que la vidéo progresse.

24
répondu Mike McDonald 2016-06-16 22:58:33

si vous voulez vaporiser une vidéo 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 10-30mb pour que cette solution fonctionne bien pour moi. Il suffit de traiter 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 souhaitez en boucle la vidéo:

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

Et si vous voulez afficher une barre de progression avant que la vidéo commence à faire ceci:

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 il fonctionne pour moi pour l'instant jusqu'à ce que je puisse trouver un bon service de streaming vidéo.

15
répondu grant 2017-03-10 20:18:15