Sample 영상 m3u8 정보
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="1",DEFAULT=YES,URI="chunklist_b128000_ao_sfm4s_t64MQ==.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="2",DEFAULT=FALSE,URI="chunklist_b128000_ao_sfm4s_t64Mg==.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="3",DEFAULT=FALSE,URI="chunklist_b128000_ao_sfm4s_t64Mw==.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="4",DEFAULT=FALSE,URI="chunklist_b128000_ao_sfm4s_t64NA==.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="5",DEFAULT=FALSE,URI="chunklist_b128000_ao_sfm4s_t64NQ==.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="6",DEFAULT=FALSE,URI="chunklist_b128000_ao_sfm4s_t64Ng==.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=16500000,CODECS="avc1.42001e,mp4a.40.2",RESOLUTION=656x274,AUDIO="aac"
chunklist_b16500000_vo_sfm4s.m3u8
위와 같이 한 영상에 여러 오디오 채널을 묶는 방법을 찾는 중이다.
영상 하나에 멀티오디오로 구성된 영상을 플레이하기 위해서 playlist를 찾아야 한다.
ffprobe를 통한 영상 정보
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'mtest.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf58.20.100
Duration: 00:04:33.79, start: 0.000000, bitrate: 16644 kb/s
Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuvj420p(pc, progressive), 11520x1088, 15871 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 29.97 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:3(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:4(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:5(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:6(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
multiple audio 때문에 참조 중
HLS 내용 중에서 var_stream_map 을 이용하면 될것이라 보임
ffmpeg 3.4.6버전에서는 var_stream_map 옵션이 사용불가
https://ffmpeg.org/ffmpeg-formats.html
명령어 정리
./ffmpeg -i mtest.mp4 \
-map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 -map 0:5 -map 0:6 \
-c:v copy \
-c:a:0 copy -c:a:1 copy -c:a:2 copy -c:a:3 copy -c:a:4 copy -c:a:5 copy \
-var_stream_map "v:0 a:0,agroup:aac a:1,agroup:aac a:2,agroup:aac a:3,agroup:aac a:4,agroup:aac a:5,agroup:aac" \
-start_number 0 -hls_time 11 -hls_list_size 0 \
-f hls -master_pl_name mtest.m3u8 \
out_%v.m3u8
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'mtest.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf58.20.100
Duration: 00:04:33.79, start: 0.000000, bitrate: 16644 kb/s
Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuvj420p(pc, progressive), 11520x1088, 15871 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 29.97 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:3(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:4(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:5(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:6(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s
Metadata:
handler_name : SoundHandler
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aac",NAME="audio_0",DEFAULT=YES,URI="out_1.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aac",NAME="audio_0",DEFAULT=YES,URI="out_2.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aac",NAME="audio_0",DEFAULT=YES,URI="out_3.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aac",NAME="audio_0",DEFAULT=YES,URI="out_4.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aac",NAME="audio_0",DEFAULT=YES,URI="out_5.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aac",NAME="audio_0",DEFAULT=YES,URI="out_6.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=17458353,RESOLUTION=11520x1088
out_0.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=137927,CODECS="mp4a.40.2",AUDIO="group_aac"
out_1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=137927,CODECS="mp4a.40.2",AUDIO="group_aac"
out_2.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=137927,CODECS="mp4a.40.2",AUDIO="group_aac"
out_3.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=137927,CODECS="mp4a.40.2",AUDIO="group_aac"
out_4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=137927,CODECS="mp4a.40.2",AUDIO="group_aac"
out_5.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=137927,CODECS="mp4a.40.2",AUDIO="group_aac"
out_6.m3u8
Test한 결과를 보아하니 GROUP-ID를 통해서 오디오를 하나로 묶으면 동작하는것을 알게 되었다.
여러 playlist 형태에 따라 동작이 다양하니 같은걸 찾는다면 참고하면 좋을 것이다.
댓글 영역