2

저는 작은 동영상 (최대 10 초)을 녹화하고 재생할 수있는 작은 앱을 개발했습니다. 이 앱은 6Mbps의 속도로 비디오를 캡처합니다. 빠른 비디오 재생을 보장하기 위해 HLS (http 라이브 스트리밍)를 구현하려고합니다. 그러나 나는 앱이 항상 가장 낮은 비트 전송률로 스트림을 픽업하고 10 초 후에 만 ​​최상의 사용 가능한 스트림 (네트워크 대역폭에 기반)으로 전환한다는 것을 알아 냈습니다.안드로이드의 HLS 적응 형 스트리밍은 10 초 후에 만 ​​스트림을 변경합니까?

나는 안드로이드 미디어 플레이어, exoplayer 등과 같은 다른 미디어 플레이어를 테스트했지만 동작은 일관성이 있습니다. 비디오는 정확히 10 초 후에 만 ​​스트림을 변경합니다. 이것은 안드로이드에서 hls의 기본 구현입니까? 또는 나는 무엇인가 놓치고 있냐? 내가 테스트에 사용 된 M3U8는 bipbopall.m3u8에 나와있는 재생 목록의 내용을 보면, 세그먼트 지속 시간이 10 초입니다 것을 볼 수 있습니다 http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

 localUrl = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"; 
     vidView.setVideoPath(localUrl); 
     Log.i("GenericRequest", "VideoUrl " + localUrl); 
     vidView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
      vidView.start(); 
      } 
     }); 

답변

6

입니다. 이것은 아마도 10 초 후에 스위치를 보는 이유를 설명합니다.

플레이어는 bipbopall.m3u8에 나열된 첫 번째 재생 목록 (이 경우 가장 낮은 비트 전송률의 스트림)을 다운로드하고 첫 번째 세그먼트 재생을 시작합니다. 이후 추가 대역폭이 사용 가능하므로 더 높은 비트 전송률의 스트림으로 전환합니다.

세그먼트 기간이 다른 경우 전환이 다른 시간에 발생하는 것 같습니다.