Я не могу воспроизвести звук, полученный из хранилища Firebase - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь получить аудио из хранилища Firebase и играть с MediaPlayer. И на самом деле я могу сделать это, но проблема в том, что я не могу играть на некоторых аудио. Я понял, что он не может воспроизводить аудио, размер которых превышает 50 кб. Я могу играть аудио, размер которых меньше 50 кб.

Кстати, это мой первый вопрос здесь. Извините за ошибки.

Ошибка:

E / FLACExtractor: неподдерживаемая частота дискретизации 44000

E / GenericSource: initFromDataSource, источник не отслеживает!

E / GenericSource: не удалось выполнить инициализацию из источника данных!

E / MediaPlayerNative: ошибка (1, -2147483648)

E / MediaPlayer: Ошибка (1, -2147483648)

public class KelimeSecimActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener {
MediaPlayer mMediaplayer = new MediaPlayer();

private Button buttonBasla ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_kelime_secim);

                                    buttonBasla = findViewById(R.id.buttonBasla);

mMediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    fetchAudioUrlFromFirebase();




     buttonBasla.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        onPrepared(mMediaplayer);

        }
});
}

private void fetchAudioUrlFromFirebase() {
    final FirebaseStorage storage = FirebaseStorage.getInstance();
    // Create a storage reference from our app
    StorageReference storageRef = storage.getReferenceFromUrl("MY_URL");
    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(null);
                mMediaplayer.prepareAsync();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(getApplicationContext(),"Failed",Toast.LENGTH_SHORT).show();
                }
            });

}


@Override
public void onPrepared(MediaPlayer mp) {
    mp.start();
}

Как я уже сказал, нет проблем, если размер звука ниже 50 кб. На самом деле я не уверен, что это из-за размера. Но я перепробовал много файлов, и результат такой:

1 Ответ

0 голосов
/ 11 января 2019

Я могу воспроизвести проблему. Упомянутые вами файлы работают в других проигрывателях, но не работают в Android MediaPlayer.

Все файлы с проблемами кодируются с частотой 44000 Гц, используя libFLAC 1.1.3.

Все файлы работают на частоте 44100 Гц, используя libFLAC 1.1.2.

Соотношение размеров представляется совпадением. Например, En-us-you_re2.flac играет нормально. Это 166 КБ, но это 44100 Гц.

Ясно, что 44000 Гц - это действительная частота, но MediaPlayer просто не поддерживает ее. Возможно, вам повезет больше с exoplayer с расширением FLAC . В худшем случае вам, возможно, придется найти свою собственную библиотеку распаковки и выполнить преобразование самостоятельно.

...