0

에서 시작되지 않습니다MediaPlayer를 안드로이드 스트림 라디오를 즉시하지 시작하거나이 코드 사용하는 모든

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

onPrepared 방법은 다음과 같습니다 일반적으로

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

을,이 문제는 다음과 같습니다 그럼 실행 이 코드는 재생이 바로 시작되지 않지만 약 10 초 후에 시작됩니다. + 일부 스트림은 전혀 시작되지 않지만 에뮬레이터에서는 장치보다 조금 더 효과적이지만 작동합니다. 그것은 콘크리트 라디오에 달렸고, 어떤 것은 더 좋았고, 다른 것은 매우 나빴습니다.

나는 그 문제가 준비와 완충에 있다고 가정한다. 이 스트림에서 InputStream을 만들고 임시 파일/버퍼에 쓰고이 파일을 MediaPlayer에서 읽고 재생할 수는 있지만 구현 방법은 아직 명확하지 않습니다. 도와주세요

다만 다음 mp.startmp.prepare을 수행하고 - 결과는 크롬의 PC에 동일한

이며, 모든 라디오는 내가 당신을 감사합니다, 내 영어에 대한

죄송 재생을 시작 즉시 사용하려한다는 스트리밍합니다.

답변

0

오디오 비트 전송률이 여기에 핵심 인 것처럼 보입니다 : https://stackoverflow.com/a/12850965/3454741. 이 문제를 해결하는 쉬운 방법은 없습니다.

스트리밍이 전혀 시작되지 않으면 약간의 오류가있을 수 있습니다.이 오류는 MediaPlayer.setOnErrorListener()을 사용하여 잡을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그 슬픈. completionListener를 사용하여 임시 mp3 파일의 큐를로드하고 재생하는 방법에 대해 어떻게 생각하십니까? 그러나 모든 파일을 하나의 크기 (예 : 512kb)로 만드는 방법은 무엇입니까? read (byte [])는 0에서 전체 bute 배열 크기까지 읽을 수 있지만 0 크기의 파일은 원하지 않습니다. –

+0

MP3를 사용하면이 문제를 해결할 수 있는지 확실하지 않습니다. 시도해 볼 수 있습니다. 난 정말 "하나의 크기"에 대한 귀하의 질문을 이해하지 못합니다 ... 또한, [내가 연결 한 위의 대답] (http://stackoverflow.com/a/30494887/3454741) FFmpegMediaPlayer를 사용하는 것이 좋습니다 더 잘 행동하는 것 같습니다. –

+0

그것은 일하기에 아주 가깝습니다. 에뮬레이터에서 FFmpegMP는 정상적으로 작동하지만 치명적인 오류를 일으키는 제 xiaomi 메소드 중지시 ... –