Подтвердить что ты не робот

Могу ли я использовать Firebase Storage для потоковой передачи музыки в Интернете?

Я хочу сохранить mp3 файлы в Firebase Storage, а затем передать его на Android-устройство. Все руководства по Firebase обсуждают загрузку и загрузку файла изображений.

Если есть другое облако, которое проще, чем Firebase для хранения и воспроизведения аудио для Android, пожалуйста, предложите.

4b9b3361

Ответ 1

  1. Firebase предоставляет StreamDownloadTask, как предложил Майк, для получения InputStream, но, к сожалению, MediaPlayer не принимает прямой поток. Теперь у нас есть 2 варианта, если мы строго хотим продолжить с InputStream, насколько я знаю -

    а. Запишите поток во временный файл и передайте его в медиаплеер. Лично я не рекомендую такой подход. Он включает в себя ненужную запись данных, и вам также необходимо поддерживать синхронизацию потоковых данных, записи файлов и воспроизведения мультимедиа.

    б. Создайте StreamProxy сервер как приложение новостей npr. Вы можете найти исходный код приложения здесь.

  2. Простой способ воспроизведения музыкального файла из Firebase - сначала получить 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();
            }
        }
    

Ответ 2

Как нам сделать файл mp3 без использования URL, то есть что я хочу сказать, создав ребенка? например; У меня есть файл "sound.mp3", и я хочу загрузить его на свое устройство, и я хочу его воспроизвести... Заранее спасибо.