web-dev-qa-db-ja.com

Firebase Storageビデオストリーミング

ビデオストリーミング機能を備えたアプリを開発しています。 firebaseデータベースとfirebaseストレージを使用しています。 Firebase Storageがビデオファイルを処理する方法に関するドキュメントを探していますが、実際にはあまり見つけることができません。

ドキュメントでは、Firebase Storageが他のGoogleアプリサービスと連携してCDNおよびビデオストリーミングを可能にすると言及していますが、すべての検索は行き止まりにつながるようです。何かアドバイス?

54
gcas

ビデオストリーミングにはいくつかのタイプがあると思いますが、ここで答えを変えることができます。

  • ライブストリーミング(イベントの発生時に購読者が視聴しています)
  • Youtubeスタイル(動画を投稿し、エンドユーザーが都合の良いときに視聴する)

Firebase StorageとFirebase Realtime Databaseを使用してライブストリーミングのPeriscopeスタイルアプリを構築したので、3秒のチャンクをアップロードしてRealtime Databaseを介して同期することを強くお勧めします。 (驚くほどうまく)動作していましたが、非常に優れたインターネット上で〜5秒のレイテンシがあり、最も効率的なソリューションでもありませんでした(結局、そのビデオをアップロードして保存しているだけでなく、トランスコーディングもありませんでした) 。ビデオ転送用に構築されたWebRTCスタイルを使用すること、およびストリームに沿ったシグナリングにリアルタイムデータベースを使用することをお勧めします。

一方、Firebase機能でモバイルYTを構築することは間違いなく可能です。ここでのコツは、ビデオをトランスコードすることです(ZencoderやBitmovinなどを使用、詳細は https://cloud.google.com/solutions/media/ )。解像度の異なる小さなチャンク(および異なる形式、iOSでは、たとえばストリーミングにHLSが必要です)。クライアントは、リアルタイムデータベースにチャンク情報(チャンク名、使用可能な解像度、チャンクの数)を保存でき、ビデオの進行に応じてストレージからそのチャンクをダウンロードできます。

35
Mike McDonald

Firebase StorageからビデオをSteamしたい場合、これが私が見つけた最良の方法です。これは、ビデオファイルのサイズによって異なります。 10〜30 MBのファイルのみをリクエストしているので、このソリューションはうまく機能します。 Firebase Urlを通常のURLとして扱うだけです:

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

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

ビデオをループする場合:

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

また、ビデオの開始前にプログレスバーを表示する場合は、次の操作を行います。

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;
    }
});

これは物事を行うのに最適な方法ではありませんが、良いビデオストリーミングサービスを見つけることができるまでは今のところうまくいきます。

20
grantespo

試しました: https://firebase.google.com/docs/storage

Cloud Storageは、写真やビデオなどのユーザー生成コンテンツを保存および提供する必要があるアプリ開発者向けに構築されています。

0
Kenneth Bregat