[Video] ABR (Adaptive Bitrate Streaming)

clo승·2023년 7월 28일
0

ABR이란?

대역폭 별로 화질이 다른 미디어 파일을 읽도록 하여 네트워크 상태가 좋고 나빠짐에 따라 유동적으로 화질이 달라지는 것이다. 사용자 입장에서는 영상 시청 중 네트워크 상태가 나빠져도 끊김 없이 영상 시청을 할 수 있다.

Wi-Fi 환경과 휴대전화망 환경에 맞는 라이브 서비스를 동시에 제공하는 Adaptive Bitrate Streaming이 적용되어 있다면, 휴대전화망 환경의 라이브 서비스로 자동으로 옮겨감으로써 화면의 품질이나 해상도 등은 나빠지지만 끊기지 않고 계속 서비스를 이용할 수 있는 것이다.


HLS와 ABR

HLS에서 Adaptive Bitrate Streaming을 지원하기 위한 m3u8 파일과 ts 파일의 구조는 다음과 같다.

전체를 대표하는 m3u8 파일이 있고, 대표 파일 내에서 다시 각각의 비트레이트별 플레이 리스트 파일을 가리키게 한다. 각 비트레이트별 플레이리스트 파일은 다시 각자의 비트레이트에 해당하는 ts 파일들을 가리킨다.

variant.m3u8 파일의 내용은 다음과 같다.

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
a01a_L.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
a01a_M.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
a01a_H.m3u8


원본 파일을 화질별로 나누는 방법

ffmpeg를 이용하여 HLS를 설정하며 화질도 변경한다

// 고화질 파일
ffmpeg -i /Users/jungh/Downloads/a05a.mp4 -profile:v high -level 4.0 -s 1280x720 -start_number 0 -hls_time 10 -hls_list_size 0 -b:v 6000k -hls_segment_filename /Users/jungh/Downloads/a05a_high_%01d.ts /Users/jungh/Downloads/a05a_H.m3u8

// 중간화질 파일
ffmpeg -i /Users/jungh/Downloads/a05a.mp4 -profile:v main -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -b:v 800k -hls_segment_filename /Users/jungh/Downloads/a05a_medium_%01d.ts /Users/jungh/Downloads/a05a_M.m3u8

// 저화질 파일
ffmpeg -i /Users/jungh/Downloads/a05a.mp4 -profile:v baseline -level 3.0 -s 426x240 -start_number 0 -hls_time 10 -hls_list_size 0 -b:v 100k -hls_segment_filename /Users/jungh/Downloads/a05a_low_%01d.ts /Users/jungh/Downloads/a05a_L.m3u8

고화질 (High Quality):
비트레이트: 6000k (6 Mbps 이상)
해상도: 1280x720 (HD)
H.264 프로파일: high
H.264 레벨: 4.0
중간 품질 (Medium Quality):
비트레이트: 800k (0.8 Mbps)
해상도: 640x360 (360p)
H.264 프로파일: main
H.264 레벨: 3.0
저화질 (Low Quality):
비트레이트: 100k (0.1 Mbps)
해상도: 426x240 (240p)
H.264 프로파일: baseline
H.264 레벨: 3.0

주의사항 - 파일 이름을 a_%03d.ts으로 설정하여 001,002,003의 파일명으로 저장했으나, video.js에서 읽는 과정에서 뒷부분만 읽는 에러가 발생했다. 0,1,2,3의 파일 명을 배분하니 처음부터 잘 읽어옴을 확인 할 수 있었다.
파일을 읽어오는 video.js의 문제일 수도 있다.

연동하기


참고자료1
참고자료2
참고자료3
참고자료4

profile
무엇이든 해내는 사람

0개의 댓글