2016-09-29 17 views
7

私が望むのは、Firebase Storageにmp3ファイルを保存し、それをAndroidデバイスにストリーミングすることです。 Firebaseのすべてのチュートリアルで、画像ファイルのアップロードとダウンロードについて説明します。オンライン音楽ストリーミングにFirebase Storageを使用できますか?

アンドロイド用のオーディオをストリーミング保存してストリーミングするのがFirebaseより簡単なクラウドがある場合は、お勧めします。

+0

はい、firebaseストレージにmp3ファイルを保存し@hakimもコンテンツ – hakim

+0

をストリーミング私の答えを提案することが可能である - 以下は、コードスニペットです。どうやって? –

+1

少なくともそれを最初に試してみてください。問題がある場合に備えて、すぐに尋ねることができます。ここでは、GCストレージにファイルをアップロードすることができます。 https://firebase.google.com/docs/storage/android/upload-filesを使用して音楽を再生/ストリーミングするhttps://developer.android.com/guide/topics/media/mediaplayer.html#mediaplayer – hakim

答えて

5
  1. マイクのInputStream を取得するために、提案しているようFirebaseはStreamDownloadTaskを提供しますが、残念ながらMediaPlayerのは、ダイレクト・ストリームを受け入れません。今度は 私が知っている限り、私が厳密にInputStreamを続けたいのなら2つの選択肢があります -

    a。 テンポラリファイルにストリームを書き込み、それをメディアプレーヤーに渡します。個人的には、私はこのアプローチをお勧めしません。これには不要なデータ書き込みが含まれており、同期のストリームデータ、ファイル書き込みとメディア再生の間にも維持する必要があります。

    b。 StreamProxyサーバーをnprニュースとして公開しています。 App hereのソースコードがあります。 Firebaseから音楽ファイルを再生するには

  2. 簡単な方法は、最初ストレージ参照を使用してダウンロードURLを取得し、データソースとしてメディアプレーヤーにそのURLを渡すことです。

    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(); 
         } 
        } 
    
関連する問題