Transcoder API ๊ฐœ์š”

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ๊ธฐ๋Šฅ, ์šฉ์–ด, ์œ ์šฉํ•œ ๊ฐœ๋…์„ ํฌํ•จํ•˜์—ฌ Transcoder API์˜ ๊ธฐ์ˆ ์  ๊ฐœ์š”๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Transcoder API๋Š” Google Cloud์—์„œ ํŠธ๋žœ์Šค์ฝ”๋”ฉ ์ž‘์—…์„ ์ œ์ถœ, ๋ชจ๋‹ˆํ„ฐ๋ง, ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” REST ๋ฐ RPC API๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Transcoder API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ œ์ถœํ•˜๋ ค๋ฉด ๋จผ์ € ๋ฏธ๋””์–ด ์• ์…‹์„ Cloud Storage์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์ด ์ฒ˜๋ฆฌ๋˜๋ฉด Transcoder API๋Š” ๊ฒฐ๊ณผ ๋ฏธ๋””์–ด๋ฅผ ๋‹ค์‹œ Cloud Storage์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ง•

Transcoder API์—์„œ๋Š” ๋‹ค์Œ ๊ธฐ๋Šฅ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

MP4 ๋ฐ MPEG-DASH ํ‘œ์ค€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ The Move Picture Expert Group ์›น์‚ฌ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. HLS ํ‘œ์ค€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ HTTP ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฝ˜ํ…์ธ  ์•”ํ˜ธํ™”์— ์ง€์›๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ์ฝ˜ํ…์ธ  ์•”ํ˜ธํ™”์— ์ง€์›๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ ์ปจํ…Œ์ด๋„ˆ DRM ์‹œ์Šคํ…œ ์•”ํ˜ธํ™” ์Šคํ‚ค๋งˆ
HLS TS ClearKey aes128
HLS TS FairPlay sampleAes
HLS fMP4 FairPlay mpegCenc cbcs๋งŒ ํ•ด๋‹น
MPEG-DASH fMP4 Widevine mpegCenc cenc ๋˜๋Š” cbcs
MPEG-DASH fMP4 PlayReady mpegCenc cenc ๋˜๋Š” cbcs

์•ก์„ธ์Šค ์ œ์–ด

Transcoder API ์•ก์„ธ์Šค ์ œ์–ด ๋ชจ๋ธ์€ Google์˜ Identity and Access Management๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. IAM์˜ ์„ธ๋ถ„ํ™”๋œ ๊ถŒํ•œ์„ ํ†ตํ•ด ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…๊ณผ ์‚ฌ์šฉ์ž๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ๋„

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ํŠธ๋žœ์Šค์ฝ”๋”ฉ ์ž‘์—…๋ณ„ ํ•œ๋„๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ž‘์—… ํ•œ๋„
์ตœ๋Œ€ ์ž…๋ ฅ ๋„ˆ๋น„4096px
์ตœ๋Œ€ ์ž…๋ ฅ ๋†’์ด4096px
์ตœ๋Œ€ ์ถœ๋ ฅ ๋„ˆ๋น„4096px
์ตœ๋Œ€ ์ถœ๋ ฅ ๋†’์ด2160px
์ด ์ถœ๋ ฅ ํฌ๊ธฐ400GB
์ตœ๋Œ€ EditList ๊ธฐ๊ฐ„24์‹œ๊ฐ„
์ตœ๋Œ€ ๋™์˜์ƒ ์ŠคํŠธ๋ฆผ ์ˆ˜70
์ตœ๋Œ€ ์˜ค๋””์˜ค ์ŠคํŠธ๋ฆผ ์ˆ˜50
์ตœ๋Œ€ ํ…์ŠคํŠธ ์ŠคํŠธ๋ฆผ ์ˆ˜50
์ตœ๋Œ€ mux ์ŠคํŠธ๋ฆผ ์ˆ˜100
์ตœ๋Œ€ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์ˆ˜100
์ตœ๋Œ€ ์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ ์ˆ˜10

๊ฐœ๋…

์ด ์„น์…˜์—์„œ๋Š” ๋™์˜์ƒ ํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ์ค‘์š” ๊ฐœ๋…๊ณผ Transcoder API์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋™์˜์ƒ ํŒŒ์ผ์˜ ๊ตฌ์„ฑ์š”์†Œ

๊ฐ ๋™์˜์ƒ ํŒŒ์ผ์—๋Š” ์ „์ฒด ํŒŒ์ผ์˜ ๋ž˜ํผ์ธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Transcoder API๋Š” MuxStreams๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ปจํ…Œ์ด๋„ˆ์—๋Š” ํŒŒ์ผ์— ๋Œ€ํ•œ ๋™์˜์ƒ, ์˜ค๋””์˜ค, ์ž๋ง‰ ํ…์ŠคํŠธ ์ถ”์  ์ธ์ฝ”๋”ฉ์„ ์ •์˜ํ•˜๋Š” ElementaryStreams ์ง‘ํ•ฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์˜์ƒ ๋ฐ ์˜ค๋””์˜ค๋Š” ์ฝ”๋ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์••์ถ•๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ ๋™์˜์ƒ ์••์ถ•์—๋Š” H.264๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์˜ค๋””์˜ค ์••์ถ•์—๋Š” AAC๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค MP4 ์ปจํ…Œ์ด๋„ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์˜์ƒ ํŒŒ์ผ์˜ ๊ตฌ์„ฑ์š”์†Œ ๋ฐ ์˜ˆ์‹œ
๊ทธ๋ฆผ 1. ๋™์˜์ƒ ํŒŒ์ผ(์™ผ์ชฝ) ๋ฐ ์˜ˆ์‹œ MP4 ํŒŒ์ผ(์˜ค๋ฅธ์ชฝ)์˜ ๊ตฌ์„ฑ์š”์†Œ

์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ ๊ตฌ์กฐ

๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•ด ์ฝ˜ํ…์ธ  ์ œ๊ณต์—…์ฒด๋Š” ๋™์ผํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์—ฌ๋Ÿฌ ๋น„ํŠธ ์ „์†ก๋ฅ (์ดˆ๋‹น ํ‚ฌ๋กœ๋น„ํŠธ ์ˆ˜ ๊ธฐ์ค€)๋กœ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ํ›„ ์ œ๊ณต์—…์ฒด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋น„ํŠธ ์ „์†ก๋ฅ ์„ ๊ฐ€์ง„ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด๋Š” ์ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์„œ ์ ํ•ฉํ•œ ํŒŒ์ผ์„ ์„ ํƒํ•œ ํ›„ ํ•œ ๋ฒˆ์— ๋ช‡ ์ดˆ ์ •๋„์”ฉ ๋™์˜์ƒ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ฐ ๋น„ํŠธ ์ „์†ก์€ ํ”Œ๋ ˆ์ด์–ด์—์„œ ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‹จ์ผ ํŒŒ์ผ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์งง์€ ํŒŒ์ผ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฏธ๋””์–ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ•ด์ƒ๋„๋Š” ์—ฌ๋Ÿฌ ๋น„ํŠธ ์ „์†ก๋ฅ ์— ๋งž๊ฒŒ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ฎ์€ ๋น„ํŠธ ์ „์†ก๋ฅ ์€ ๋†’์€ ํ™”์งˆ(HD) ๋Œ€์‹  ํ‘œ์ค€ ํ™”์งˆ(SD)๋กœ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค. ๋น„ํŠธ ์ „์†ก๋ฅ , ํ•ด์ƒ๋„, ์ฝ”๋ฑ ์ง‘ํ•ฉ์„ ์ ์‘ํ˜• ๋น„ํŠธ ์ „์†ก๋ฅ (ABR) ๋ž˜๋”๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ์ฝ˜ํ…์ธ  ์ œ๊ณต์—…์ฒด๋Š” CDN ๋น„์šฉ, ์‚ฌ์šฉ์ž ๊ธฐ๊ธฐ ์œ ํ˜•, ๋ฆฌ์ „ ๋‚ด ๋Œ€์—ญํญ, ๊ธฐํƒ€ ์š”์†Œ์— ๋”ฐ๋ผ ์ž์‹ ์˜ ๋ž˜๋”๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ ๊ตฌ์กฐ์˜ ๊ตฌ์„ฑ์š”์†Œ ๋ฐ ์˜ˆ์‹œ
๊ทธ๋ฆผ 2. ์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ ๊ตฌ์กฐ์˜ ๊ตฌ์„ฑ์š”์†Œ(์ƒ๋‹จ)์™€ HTTP ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ(HLS) ๊ตฌํ˜„์˜ ์˜ˆ์‹œ(ํ•˜๋‹จ)

์šฉ์–ด

์ด ์„น์…˜์—์„œ๋Š” Transcoder API ์ž‘์—…์— ์œ ์šฉํ•œ ์šฉ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ด‘๊ณ  ์‹œ์ 

๊ด‘๊ณ  ์‹œ์ ์€ ๋ฏธ๋””์–ด ์žฌ์ƒ ์ „ ๋˜๋Š” ๋„์ค‘์— ํ‘œ์‹œ๋˜๋Š” ์งง์€ ๊ด‘๊ณ ์ž…๋‹ˆ๋‹ค. Transcoder API๋Š” ์ž‘์—… ๊ตฌ์„ฑ์˜ ๊ด‘๊ณ  ์‹œ์  ํ‚คํ”„๋ ˆ์ž„์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Transcoder API๋Š” ๊ด‘๊ณ ๋ฅผ ์‚ฝ์ž… ๋˜๋Š” ์žฌ์ƒํ•˜๊ฑฐ๋‚˜ ๋ฏธ๋””์–ด ์žฌ์ƒ์„ ์ค‘์ง€ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋™์˜์ƒ ํ”Œ๋ ˆ์ด์–ด ํด๋ผ์ด์–ธํŠธ๋Š” ํ‚คํ”„๋ ˆ์ž„์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Atom

Atom์€ ๋™์˜์ƒ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ์œ„์น˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋™์˜์ƒ์€ ์˜ค๋””์˜ค, ํŽธ์ง‘, ํ…์ŠคํŠธ Atom์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์œ ํ˜•์˜ Atom์— ๋Œ€ํ•œ ๋ณต์žกํ•˜๊ณ  ์ค‘์ฒฉ๋œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋””์˜ค Atom

์˜ค๋””์˜ค Atom์€ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์˜ ์˜ค๋””์˜ค๋ฅผ ์ˆ˜์ • ๋ชฉ๋ก์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋ฑ ์œ ํ˜• ๋ฐ ํ”„๋กœํ•„

๋™์˜์ƒ ์ŠคํŠธ๋ฆผ์˜ ์ฝ”๋ฑ์„ ์„ ํƒํ•  ๋•Œ H.264์™€ ๊ฐ™์€ ์ฝ”๋ฑ ์œ ํ˜•๊ณผ ๊ธฐ๋ณธ high ํ”„๋กœํ•„๊ณผ ๊ฐ™์€ ํ”„๋กœํ•„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ

์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฏธ๋””์–ด ํŒŒ์ผ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์ค‘ํ™” ์ŠคํŠธ๋ฆผ์˜ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์š”์†Œ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ž˜ํผ์ž…๋‹ˆ๋‹ค. Transcoder API์—์„œ๋Š” MP4, MPEG-DASH, HLS ์ปจํ…Œ์ด๋„ˆ ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Atom ์ˆ˜์ •

ํŽธ์ง‘ Atom์€ ์ˆ˜์ • ๋ชฉ๋ก์— ๊ฒฐํ•ฉํ•˜๋ ค๋Š” ์ŠคํŠธ๋ฆผ์˜ ๊ฐœ๋ณ„ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ ์˜คํ”„์…‹์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ชฉ๋ก ์ˆ˜์ •

์ˆ˜์ • ๋ชฉ๋ก์€ ์ˆ˜์ • ์‹œํ€€์Šค๋ฅผ ํŠธ๋žœ์Šค์ฝ”๋”ฉ ์ž‘์—…์—์„œ ๊ฒฐ๊ณผ ํŒŒ์ผ์ด๋‚˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ํƒ€์ž„๋ผ์ธ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ดˆ ์ŠคํŠธ๋ฆผ

๊ธฐ์ดˆ ์ŠคํŠธ๋ฆผ์€ ์˜ค๋””์˜ค, ๋™์˜์ƒ ๋˜๋Š” ์ž๋ง‰ ํ…์ŠคํŠธ ํŠธ๋ž™๊ณผ ๊ฐ™์€ ์ž…๋ ฅ ํŒŒ์ผ ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์„ ๋‹ค๋ฅธ ์ถœ๋ ฅ ํ˜•์‹์— ๋งคํ•‘ํ•˜๊ณ  ๊ณต์œ ํ•˜๊ธฐ ์ „์— ๊ธฐ์ดˆ ์ŠคํŠธ๋ฆผ์„ ํŒจํ‚ค์ง•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—”ํŠธ๋กœํ”ผ ์ธ์ฝ”๋”ฉ

์—”ํŠธ๋กœํ”ผ ์ธ์ฝ”๋”ฉ์€ Transcoder API์—์„œ ์ง€์›ํ•˜๋Š” ๋ฌด์†์‹ค ์••์ถ•์˜ ํ•œ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์„ ๊ตฌ์„ฑํ•  ๋•Œ CAVLC(Context-Adaptive Variable-Length Coding) ๋˜๋Š” CABAC(Context-Adaptive Binary Arithmetic Coding) ์—”ํŠธ๋กœํ”ผ ์ฝ”๋ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—…

์ž‘์—…์€ Transcoder API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. Transcoder API์— ์ž‘์—…์„ ์ œ์ถœํ•˜๋ฉด ๋ฆฌ์ „์ด๋ผ๊ณ  ํ•˜๋Š” ์ง€๋ฆฌ์  ์œ„์น˜์—์„œ ๋น„๋™๊ธฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „์˜ ๋ชจ๋“  ์ž‘์—…์„ ๋‚˜์—ดํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… ์ˆ˜๋ช… ์ฃผ๊ธฐ์—๋Š” ์ค€๋น„, ํŠธ๋žœ์Šค์ฝ”๋”ฉ, ํŒจํ‚ค์ง€ ๋“ฑ 3๊ฐ€์ง€ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ์ค€๋น„
    • Cloud Storage์—์„œ ์ž…๋ ฅ ๋‹ค์šด๋กœ๋“œ
    • ์ž…๋ ฅ ๋ถ„์„
    • ์ž…๋ ฅ ๊ฒ€์ฆ
  • ํŠธ๋žœ์Šค์ฝ”๋“œ
    • ์ž…๋ ฅ์—์„œ ํŠธ๋žœ์Šค์ฝ”๋”ฉ ์ž‘์—… ์‹คํ–‰
  • ํŒจํ‚ค์ง€
    • ๊ฒฐํ•ฉ ์ž…๋ ฅ
    • ์ž…๋ ฅ ๋‹ค์ค‘ํ™”
    • Cloud Storage๋กœ ์ถœ๋ ฅ ์—…๋กœ๋“œ

์ž‘์—…์— ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค๋Š” error ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๊ตฌ์„ฑ

์ž‘์—… ๊ตฌ์„ฑ์€ ์ž‘์—…์„ ๋งŒ๋“ค๊ณ  Transcoder API์— ์ œ์ถœํ•  ๋•Œ ๋งž์ถค์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์„ค์ •์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํŽธ์ง‘ ๋ชฉ๋ก๊ณผ ์ถœ๋ ฅ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ๊ด‘๊ณ  ์‹œ์  ํƒœ๊ทธ๋ฅผ ์‚ฝ์ž…ํ•  ์œ„์น˜์™€ ๊ฐ™์€ ๊ตฌ์„ฑ ์„ค์ •์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์ „์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž‘์—… ๊ตฌ์„ฑ์„ ์ž‘์—… ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Google Cloud

์ž‘์—… ๋ชจ๋“œ

Transcoder API๋Š” ๋Œ€ํ™”ํ˜• ๋ฐ ์ผ๊ด„์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ž‘์—… ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€ํ™”ํ˜• ๋ชจ๋“œ๋Š” ๊ธฐ๋ณธ ์ž‘์—… ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ์ž‘์—… ์ฒ˜๋ฆฌ๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋จผ์ € ์‹คํ–‰ํ•  ์ž‘์—…์„ ๋ณด๋‹ค ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•˜๋ ค๋ฉด ์ด ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ์—์„œ ๋™์‹œ ์‹คํ–‰ ์ž‘์—… ์ˆ˜ ํ• ๋‹น๋Ÿ‰์€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์ž‘์—… ์ˆ˜๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด ํ• ๋‹น๋Ÿ‰์— ๋„๋‹ฌํ•˜๋ฉด ์‹œ์ž‘ํ•˜๋ ค๋Š” ๋ชจ๋“  ์ž‘์—…์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

์ผ๊ด„ ์ฒ˜๋ฆฌ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜๋ฆฌ ์ง€์—ฐ ์‹œ๊ฐ„์ด ๊ธฐ๋ณธ ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ๋กœ ์ œ์ถœ๋œ ์ž‘์—…๋งŒํผ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋งŽ์€ ์ž‘์—…์„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ์˜ ์ž‘์—…์— ๋Œ€ํ•ด ์ž‘์—… ์ฒ˜๋ฆฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๊ด„ ๋ชจ๋“œ์—์„œ ์ œ์ถœ๋œ ์šฐ์„ ์ˆœ์œ„ ๊ฐ’์ด ๋™์ผํ•œ ์ž‘์—…์€ ์„ ์ž… ์„ ์ถœ ํ์— ๋ฐฐ์น˜๋˜๊ณ  ์‹คํ–‰ ๋Œ€๊ธฐ ์ค‘์ธ ์ž‘์—… ์ƒํƒœ๋Š” PENDING์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ์—์„œ ์ผ๊ด„ ๋Œ€๊ธฐ ์ž‘์—… ์ˆ˜ ํ• ๋‹น๋Ÿ‰์€ ํ์— ์ถ”๊ฐ€๋œ ์ž‘์—… ์ˆ˜๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด ํ• ๋‹น๋Ÿ‰์— ๋„๋‹ฌํ•˜๋ฉด ์‹œ์ž‘ํ•˜๋ ค๋Š” ๋ชจ๋“  ์ž‘์—…์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ์ž‘์—…์ด ์‹คํ–‰๋˜๋ฉด ์ž‘์—…์ด RUNNING ์ƒํƒœ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ผ๊ด„ ๋™์‹œ ์‹คํ–‰ ์ž‘์—… ์ˆ˜ ํ• ๋‹น๋Ÿ‰์€ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์ž‘์—… ์ˆ˜๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ชจ๋“œ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ชจ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“œ๋ณด๋‹ค ์šฐ์„ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘์—… ๋ชจ๋“œ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ผ๊ด„ ๋ชจ๋“œ์—์„œ ์ž‘์—… ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ž‘์—… ํ…œํ”Œ๋ฆฟ

๊ธฐ๋ณธ์ ์œผ๋กœ Transcoder API๋Š” ์ž‘์—… ๊ตฌ์„ฑ์„ ์ฑ„์šธ ์ˆ˜ ์žˆ๋„๋ก preset/web-hd๋ผ๋Š” ๋ฏธ๋ฆฌ ์„ค์ •๋œ ํ…œํ”Œ๋ฆฟ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—… ๊ตฌ์„ฑ์€ ๋‹ค์Œ ์ถœ๋ ฅ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • manifest.m3u8: HLS ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ์˜ ๊ธฐ๋ณธ ์žฌ์ƒ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—๋Š” ์ถœ๋ ฅ์˜ ๊ณ ํ™”์งˆ(HD) ๋ณ€ํ˜• ๋ฐ ์ถœ๋ ฅ์˜ ํ‘œ์ค€ ํ™”์งˆ(SD) ๋ณ€ํ˜•์— ๋Œ€ํ•œ ์žฌ์ƒ๋ชฉ๋ก ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
    • media-hd.m3u8: ๊ณ ํ™”์งˆ ๋ณ€ํ˜•์˜ ์žฌ์ƒ๋ชฉ๋ก
      • media-hd0000000000.ts: ๊ณ ํ™”์งˆ ์˜์ƒ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ
    • media-sd.m3u8: ํ‘œ์ค€ ํ™”์งˆ ๋ณ€ํ˜•์˜ ์žฌ์ƒ๋ชฉ๋ก
      • media-sd0000000000.ts: ํ‘œ์ค€ ํ™”์งˆ ์˜์ƒ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ
  • manifest.mpd: MPEG-DASH ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ์˜ ์žฌ์ƒ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—๋Š” ๋™์˜์ƒ ์ „์šฉ ๋ฐ ์˜ค๋””์˜ค ์ „์šฉ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
    • audio-only0000000000.m4s: ์˜ค๋””์˜ค ์ „์šฉ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ
    • video-only-hd0000000000.m4s: ๊ณ ํ™”์งˆ ๋™์˜์ƒ ์ „์šฉ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ
    • video-only-sd0000000000.m4s: ํ‘œ์ค€ ํ™”์งˆ ๋™์˜์ƒ ์ „์šฉ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ
  • sd.mp4: ๋…๋ฆฝํ˜• ํ‘œ์ค€ ํ™”์งˆ ๋™์˜์ƒ ํŒŒ์ผ
  • hd.mp4: ๋…๋ฆฝํ˜• ๊ณ ํ™”์งˆ ๋™์˜์ƒ ํŒŒ์ผ

์ž์ฒด ์ปค์Šคํ…€ ์ž‘์—… ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋ฉฐ ์ž‘์—…์„ ๋งŒ๋“ค ๋•Œ ํ…œํ”Œ๋ฆฟ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „ ์ฒ˜๋ฆฌ

์‚ฌ์ „ ์ฒ˜๋ฆฌ๋Š” ๊ธฐ๋ณธ ํŠธ๋žœ์Šค์ฝ”๋”ฉ ์ „์— ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—… ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

์‚ฌ์ „ ์ฒ˜๋ฆฌ ๊ตฌ์„ฑ

์‚ฌ์ „ ์ฒ˜๋ฆฌ ๊ตฌ์„ฑ์€ ์ž‘์—…์˜ ํŠธ๋žœ์Šค์ฝ”๋”ฉ ๋‹จ๊ณ„ ์ „์— ๋™์˜์ƒ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ค์ •์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์˜ ์ผ๋ถ€๋กœ ์ž๋ฅด๊ธฐ ๋˜๋Š” ํŒจ๋”ฉ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†๋„ ์ œ์–ด ๋ชจ๋“œ

์†๋„ ์ œ์–ด ๋ชจ๋“œ๋Š” ๊ณ ์ • ์†๋„ ๊ณ„์ˆ˜(CRF) ๋ชจ๋“œ๋‚˜ ๊ฐ€๋ณ€ ๋น„ํŠธ ์ „์†ก๋ฅ (VBR) ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. CRF๋Š” ์ฒ˜๋ฆฌ๋œ ๋ฏธ๋””์–ด ์• ์…‹ ์ „์ฒด์— ์ผ์ •ํ•œ ํ’ˆ์งˆ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. VBR์€ ์ธ์ฝ”๋”ฉ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ์ฒ˜๋ฆฌ๋œ ๋ฏธ๋””์–ด ์• ์…‹์˜ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ VBR ์†๋„ ์ œ์–ด ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ด€์šฉ์ด๋ผ๋ฉด CRF ์†๋„ ์ œ์–ด ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋งค๋‹ˆํŽ˜์ŠคํŠธ

๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณต๋˜๋Š” ์ ์‘ํ˜• ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ์˜ ์ฝ˜ํ…์ธ ์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. Transcoder API์—์„œ๋Š” ํŒŒ์ผ ์ด๋ฆ„, ๋‹ค์ค‘ํ™” ์ŠคํŠธ๋ฆผ ๋ชฉ๋ก, HLS ๋˜๋Š” MPEG-DASH ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•˜๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์œ ํ˜•์œผ๋กœ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ž‘์—…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ Atom

ํ…์ŠคํŠธ Atom์€ ๊ธฐ์ดˆ ์ŠคํŠธ๋ฆผ์˜ ํ…์ŠคํŠธ๋ฅผ ์ˆ˜์ • ๋ชฉ๋ก์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ์ŠคํŠธ๋ฆผ

ํ…์ŠคํŠธ ์ŠคํŠธ๋ฆผ์€ ์ž๋ง‰๊ณผ ๊ฐ™์ด ๋™์˜์ƒ๊ณผ ์—ฐ๊ฒฐ๋œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„