0

저는 URL에서 온라인 라디오 방송국을 스트리밍하기로되어있는 Android 앱을 제작 중입니다.스트리밍 앱의 버퍼 시간을 줄이는 방법은 무엇입니까?

저는 현재 데모 작업 중이며 온라인 자습서에서 많은 도움을 받았지만 문제가 있습니다.

NEXT 버튼을 클릭하면 다른 URL의 오디오를 가져와 스테이션 변경의 효과를 얻으려고하는데 너무 많은 시간이 걸리고 작동하지 않는 경우가 대부분입니다.

은 내가 거의 즉시 시작하려면 95 %의 원인에 의해 시간을 줄일 수있는 방법은 다음 버튼

b_next.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       mediaPlayer.stop(); 
       mediaPlayer.reset(); 
       try { 
        mediaPlayer.setDataSource("http://stream.radioreklama.bg/veronika.opus"); 
        mediaPlayer.prepare(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       mediaPlayer.start(); 
      } 
     }); 

답변

1
의 다음 버튼을

코드가 클릭합니다

문제가되지 않을 수 있습니다 예를 들어 서버 측에서 느린 시작 시간이있을 수 있습니다.

어느 쪽이든 버퍼링을 모니터링하려면 MediaPlayer에서 'OnBufferingUpdateListener.onBufferingUpdate()'라고하는 콜백이 제공됩니다. MediaPlayer를 문서 (https://developer.android.com/reference/android/media/MediaPlayer.html#setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)) 발

는 :

은 시작 상태에서, 내부 플레이어 엔진은 OnBufferingUpdateListener가 setOnBufferingUpdateListener 통해 미리 등록되어 있으면 OnBufferingUpdateListener.onBufferingUpdate() 콜백 방법 제공된 사용자 (OnBufferingUpdateListener 호출 동안). 이 콜백을 통해 응용 프로그램은 오디오/비디오를 스트리밍하는 동안 버퍼링 상태를 추적 할 수 있습니다.

플랫폼간에 스트림 간 전환 속도를 높이기위한 일반적인 기술 중 하나는 다음 스트림을 미리 준비하는 것입니다.

귀하의 경우에는 초기화하고 준비된 상태로 이동하고 가능한 한 지점을 찾은 다음 다른 하나를 멈 추면 바로 재생할 두 번째 미디어 플레이어가 필요합니다.

실시간 스트림의 경우 동일한 방식으로 지점을 볼 수 없으므로 조금 더 어려워집니다. 두 번째 플레이어를 가지고 놀면서 볼륨을 낮춘 상태로 실험 해 볼 수는 있지만 사용자가 전환 할시기를 예측할 수있는 확실한 방법이 없다면 분명히 그렇게 효율적이지는 않습니다.