web-dev-qa-db-ja.com

オンライン音楽ストリーミングにFirebase Storageを使用できますか?

Firebase Storageにmp3ファイルを保存し、それをAndroidデバイスにストリーミングします。 Firebase のすべてのチュートリアルで、画像ファイルのアップロードとダウンロードについて説明します。

Android向けにFirebaseよりも簡単に音声を保存およびストリーミングできるクラウドが他にある場合は、提案してください。

17
brijesh kumar
  1. Firebaseは、InputStreamを取得するために、マイクが提案したようにStreamDownloadTaskを提供します- MediaPlayerは、直接ストリームを受け入れません。私が知る限り、InputStreamを継続したい場合、2つのオプションがあります。

    a。 一時ファイルにストリームを書き込み、メディアプレーヤーに渡します。個人的には、推奨しませんこのアプローチ。これには不要なデータ書き込みが含まれます。また、ストリーミングデータ、ファイル書き込み、メディアプレイの間で同期を維持する必要があります。

    b。 nprニュースアプリの実行中にStreamProxyサーバーを作成します。 App here のソースコードを見つけることができます。

  2. Firebaseから音楽ファイルを再生する簡単な方法は、最初にstorage referenceを使用してダウンロードURLを取得し、そのURLをdataSourceとしてメディアプレーヤーに渡すことです。以下はコードスニペットです-

    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