과정

현재 FFMpeg을 이용하여 FLV → HLS 변환을 수행하면 아래처럼 파일이 생긴다.

#EXTM3U
#EXT-X-VERSION:7
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-MAP:URI="chunkList_1080p_0_0.mp4"
#EXTINF:2.000000,
chunklist_1080p_1.m4s
#EXTINF:2.000000,
chunklist_1080p_2.m4s
#EXTINF:1.816667,
chunklist_1080p_3.m4s

우리가 적용하고자 하는 LLHLS Playlist 예시는 아래와 같다. (치지직 플레이리스트 예시)

#EXTM3U
#EXT-X-VERSION:10
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-TARGETDURATION:10
#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,PART-HOLD-BACK=3.002000
#EXT-X-PART-INF:PART-TARGET=1.000000
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXT-X-MEDIA-SEQUENCE:5303
#EXT-X-DATERANGE:ID="nmss-daterange",START-DATE="2024-11-26T03:27:51.976Z"

#EXT-X-MAP:URI="720p_0_0_0.m4s?type=hls&filetype=.m4s&channel_id=9200876_hls_h264_720p_34249366&stream_id=1"
#EXT-X-PROGRAM-DATE-TIME:2024-11-26T06:24:35.960Z
#EXT-X-PART:DURATION=1.000000,URI="720p_3819704834_1732602275960_10603_0_5303_0.m4v?type=hls&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5303&partial_id=0&stream_id=1",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="720p_3819704834_1732602275960_10603_0_5303_1.m4v?type=hls&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5303&partial_id=1&stream_id=1",INDEPENDENT=YES
#EXTINF:2.000000,
720p_3819704834_1732602275960_10603_0_5303.m4v?type=hls&bitrate=439392&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5303&stream_id=1
#EXT-X-PROGRAM-DATE-TIME:2024-11-26T06:24:37.960Z
#EXT-X-PART:DURATION=1.000000,URI="720p_3193728134_1732602277960_10605_0_5304_0.m4v?type=hls&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5304&partial_id=0&stream_id=1",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="720p_3193728134_1732602277960_10605_0_5304_1.m4v?type=hls&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5304&partial_id=1&stream_id=1",INDEPENDENT=YES
#EXTINF:2.000000,
720p_3193728134_1732602277960_10605_0_5304.m4v?type=hls&bitrate=354297&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5304&stream_id=1
#EXT-X-PROGRAM-DATE-TIME:2024-11-26T06:24:39.960Z
#EXT-X-PART:DURATION=1.000000,URI="720p_2018714565_1732602279960_10607_0_5305_0.m4v?type=hls&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5305&partial_id=0&stream_id=1",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="720p_2018714565_1732602279960_10607_0_5305_1.m4v?type=hls&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5305&partial_id=1&stream_id=1",INDEPENDENT=YES
#EXTINF:2.000000,
720p_2018714565_1732602279960_10607_0_5305.m4v?type=hls&bitrate=485337&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5305&stream_id=1
#EXT-X-PART:DURATION=1.000000,URI="720p_1941393477_1732602281960_10609_0_5306_0.m4v?type=hls&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5306&partial_id=0&stream_id=1",INDEPENDENT=YES
#EXT-X-PRELOAD-HINT:TYPE=PART,URI="720p_1941393477_1732602281960_10609_0_5306_1.m4v?type=hls&filetype=.m4v&channel_id=9200876_hls_h264_720p_34249366&piece_id=5306&partial_id=1&stream_id=1"

LLHLS를 적용하려면 필수적인 태그가 있는데

플레이리스트 태그

4.4.2.1. EXT-X-INDEPENDENT-SEGMENTS #EXT-X-INDEPENDENT-SEGMENTS

4.4.3.7. EXT-X-PART-INF #EXT-X-PART-INF:PART-TARGET=1.000000

미디어 태그

4.4.4.9. EXT-X-PART #EXT-X-PART:DURATION=1.000000,URI="",INDEPENDENT=YES

4.4.5.3. EXT-X-PRELOAD-HINT #EXT-X-PRELOAD-HINT:TYPE=PART,URI=""

이를 추가하기 위해 시도한 방법은 아래와 같다.