일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- espresso
- 안드로이드개발레벨업교과서
- searchview
- high order function
- fragment
- 뷰변경 감지
- ActivityTestRule
- 코틀린
- viewholder
- 테마 아이콘
- 고차함수
- 스와이프
- 코딜리티
- recyclerview
- Fragment에서 Activity의 함수 사용하기
- 안드로이드스튜디오
- Fragment 수동 추가
- 안드로이드13
- Error:Execution failed for task ':app:mergeDebugResources'
- 생명주기
- IntentTestRule
- ui test
- binding adapter
- 구분선
- Android
- 재사용
- adapter
- 안드로이드
- 리사이클러뷰
- LayoutManger
Archives
- Today
- Total
룬아님의 취중코딩
Exoplayer hls 네트워크 속도에 따라 높은 해상도에서 낮은 해상도로 낮추기 본문
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를 초기화 한다면 제공하는 가장 높은 화질에서 부터 동영상을 받아오고 네트워크 상태에 따라 점점 해상도를 낮추는 로직을 구현할 수 있다.
반응형
'개발 > 안드로이드 개발' 카테고리의 다른 글
Terminal로 딥링크 테스트 하는 방법 (0) | 2020.09.02 |
---|---|
Viewpager adapter를 이용하여 setUserVisibleHint 호출하기 (0) | 2020.04.21 |
material 1.0.0 에서 1.1.0 올릴 때 SnackBar의 변경점 (0) | 2020.03.17 |
material 1.0.0 에서 1.1.0 올릴 때 Chip의 변경점 (0) | 2020.03.13 |
java.lang.IllegalArgumentException: This component requires that you specify a valid android (0) | 2020.03.12 |
Comments