2016-09-29 2 views
7

내가 원하는 것은 Firebox Storage에 mp3 파일을 저장 한 다음 Android 장치로 스트리밍하는 것입니다. Firebase의 모든 자습서에서 이미지 파일 업로드 및 다운로드에 대해 논의합니다.온라인 음악 스트리밍을 위해 Firebase Storage를 사용할 수 있습니까?

안드로이드 용 오디오를 저장하고 스트리밍하는 데 Firebase보다 쉬운 다른 클라우드가있는 경우 제안하십시오.

+0

네, 중포 기지 스토리지에 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 를 얻기 위해, 제안했다으로 중포 기지는 StreamDownloadTask을 제공하지만 불행히도 MediaPlayer를은 직접 스트림을 허용하지 않습니다. 이제 내가 아는 한 InputStream을 계속 사용하려면 2 가지 옵션이 있습니다. -

    a. 임시 파일에 스트림을 작성하고 미디어 플레이어로 전달합니다. 개인적으로 나는이 방법을 추천하지 않습니다. 불필요한 데이터 쓰기이 포함되어 있으며 동기화을 스트리밍 된 데이터, 파일 쓰기 및 미디어 재생간에 유지해야합니다.

    b. StreamProxy 서버를 npr 뉴스로 생성 응용 프로그램. App here의 소스 코드를 찾을 수 있습니다. 중포 기지에서 음악 파일을 재생하는

  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(); 
         } 
        } 
    
관련 문제