0

J'utilise ce code:MediaPlayer radio stream android commence pas immédiatement ou ne démarre pas du tout

mediaPlayer.setDataSource("http://some online radio"); 
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      mediaPlayer.setOnPreparedListener(this); 
      mediaPlayer.prepareAsync(); 

et onPrepared méthode est:

if (mediaPlayer != null) { 
     mediaPlayer.start(); 
    } 

En général, le problème est: alors je cours ce code, la lecture ne commence pas tout de suite, mais environ 10 secondes plus tard. + certains flux ne commencent pas du tout, sur l'émulateur il fonctionne un peu mieux, que sur l'appareil, mais quand même. Cela dépend de la radio concrète, certains sont meilleurs, d'autres très mauvais. Je suppose que la matière est dans la préparation et la mise en mémoire tampon. Il peut être possible de créer un InputStream à partir de ce flux et d'écrire dans un fichier temporaire/tampon, et lire/lire ce fichier dans le MediaPlayer, mais comment l'implémenter est, pas encore clair .. Aide s'il vous plaît

Si vous il suffit de faire mp.prepare, puis mp.start - le résultat est le même

sur un PC Chrome, toutes les radios flux que j'ai essayé d'utiliser immédiatement commencer à jouer

Désolé pour mon anglais, je vous remercie.

Répondre

0

Il semble que le débit audio puisse être la clé ici: https://stackoverflow.com/a/12850965/3454741. Il n'y a pas de moyen facile de contourner cela, semble-t-il.

Si le streaming ne démarre pas du tout, cela peut être dû à une erreur, que vous pourriez détecter en utilisant MediaPlayer.setOnErrorListener().

+0

Merci pour votre réponse. c'est triste. Que penses-tu du chargement d'une file d'attente de fichiers mp3 temporaires, et de leur lecture, en utilisant sur completionListener. Mais comment faire chaque fichier une taille (512kb par exemple)? read (byte []) peut lire quelque chose de 0 à la taille d'un tableau bute entier, mais je ne veux pas de fichiers de taille nulle. –

+0

Je ne suis pas sûr si l'utilisation de MP3 permettrait de résoudre ce problème, vous pouvez essayer. Je ne comprends pas vraiment votre question au sujet de "les faisant une taille" ... Aussi, [la réponse juste au-dessus de celle que j'ai liée] (http://stackoverflow.com/a/30494887/3454741) recommande d'utiliser FFmpegMediaPlayer, qui semble mieux se comporter. –

+0

c'était si près de travailler. Sur l'émulateur, FFmpegMP fonctionne bien, mais sur ma méthode xiaomi arrêter provoque une erreur fatale ... –