영상 플랫폼에서 일을 하다보니 m3u8 을 접할 기회가 많아졌다.
사실 우리도 모르게 많은 영상 플랫폼에서 m3u8 을 접하는데 유튜브,아프리카tv, 트위치 등 보통 많은
서비스들이 이를 채택하고 있다.
그 이유는 mp4로 재생할 경우에는 파일을 전부 다운로드 받아야 재생이 가능해서
4분짜리 영상을 앞부분 3초만 볼건데도 다운을 기다려야하고 불필요한 데이터도 낭비하게 한다.
그것을 m3u8 파일은 n초 간격으로 파일을 잘라서 보관하기 때문에 모두 다운받지 않고
필요한 만큼만 다운로드 받아서 볼 수 있게 해준다.
그러나 m3u8 파일을 재생하는 플레이어가 없다면 m3u8 파일은 일반적인 기기에서 실행하기 어렵다.
나같은 경우는 영상의 썸네일을 몇초 간격으로 추출할 필요가 있었는데 m3u8 파일은 특정 라이브러리를 쓰지 않으면
정상적으로 썸네일 추출이 쉽지 않다.
그래서 mp4 파일로 변환 후 추출하는 방식을 택했는데 아래가 ffmpeg 을 이용해서 m3u8을 mp4 파일로 변환하는 명령어다.
val command = StringBuilder()
.append(" -i ").append(m3u8Path)
.append(" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 ").append(outPath)
참고로 ffmpeg 은 ndk 설치를 하거나 라이브러리로 import 해야 사용할 수 있다.
반응형
'Android' 카테고리의 다른 글
[다시 만들어보는 클린아키텍쳐] build-logic 편 (0) | 2024.07.31 |
---|---|
[다시 만들어보는 클린아키텍쳐] 모듈분리 편 (1) | 2024.07.25 |
hilt에서 같은 타입의 객체에 대한 디펜던시를 주입할때 (0) | 2024.07.09 |
안드로이드 키보드 높이 구하기 (2) | 2024.04.29 |
Android Room Entity Relation (1) | 2023.12.02 |
라이브러리 배포 후 적용을 하려는데 NoClassDefFoundError ? (0) | 2023.11.16 |
eventFlow 방식으로 이벤트를 처리하고 있을 때 든 생각 (1) | 2023.07.05 |
MockK 를 사용해서 테스트 코드를 적어보자 (2) | 2023.05.14 |