룬아님의 취중코딩

Exoplayer hls 네트워크 속도에 따라 높은 해상도에서 낮은 해상도로 낮추기 본문

개발/안드로이드 개발

Exoplayer hls 네트워크 속도에 따라 높은 해상도에서 낮은 해상도로 낮추기

룬아님 2020. 3. 25. 17:29

Exoplayer hls의 기본 설정은 낮은 해상도에서 시작을 한 이후에 네트워크 상태가 안정적이면 높은 해상도로 올리도록 설정이 되어 있다.
(예 : 360p 시작하여 720p로 올림)

넷플릭스도 위와 같은 로직으로 동영상을 재생한다.
하지만 동영상이 짧거나 크기가 작다면 굳이 360p에서 시작할 필요가 없다. 우선 720p에서 시작한 이후에 네트워크 상태가 좋지 않다면 360p로 내리는 방법도 있기 때문이다.

final long defaultMaxInitialBitrate = Integer.MAX_VALUE;
final DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter.Builder(this)
        .setInitialBitrateEstimate(defaultMaxInitialBitrate)
        .build();
TrackSelection.Factory trackSelectionFactory = new AdaptiveTrackSelection.Factory();

DefaultTrackSelector trackSelector = new DefaultTrackSelector(this, trackSelectionFactory);

player = new SimpleExoPlayer.Builder(this).setTrackSelector(trackSelector).setBandwidthMeter(defaultBandwidthMeter).build();

위와 같이 defaultMaxInitialBitrate을 MAX로 주고 BandwidthMeter를 초기화 한다면 제공하는 가장 높은 화질에서 부터 동영상을 받아오고 네트워크 상태에 따라 점점 해상도를 낮추는 로직을 구현할 수 있다.

 

https://stackoverflow.com/questions/53391740/android-exoplayer-adaptivetrackselection-need-to-start-video-with-high-quality

 

Android Exoplayer AdaptiveTrackSelection need to start video with high quality

I am using Exoplayer for streaming HLS video content. By default AdaptiveTrackSelection starts with low quality and as it detects good internet speed it switches to high quality. I want to start pl...

stackoverflow.com

 

반응형
Comments