Skip to content

๐Ÿ“น ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ํ”„๋กœํ† ์ฝœ์„ ์•Œ์•„๋ณด์ž

I3KAE edited this page Dec 5, 2024 · 3 revisions

๐Ÿค”ย ํ•™์Šต ์ด์œ 

์„œ๋น„์Šค์˜ ๋ ˆํผ๋Ÿฐ์Šค๋กœ Zoom๊ณผ ์น˜์ง€์ง ๋“ฑ ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค์˜ ๋™์ž‘์›๋ฆฌ๋ฅผ ์กฐ์‚ฌํ•˜๋˜ ์ค‘, ๊ฐ ์„œ๋น„์Šค๋ณ„๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์˜์ƒ ์†ก์ถœ์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์กฐ์‚ฌํ•˜๊ณ  ์šฐ๋ฆฌ ์„œ๋น„์Šค์— ์ ํ•ฉํ•œ ํ”„๋กœํ† ์ฝœ์„ ์„ ์ •ํ•˜๊ณ ์ž ํ•œ๋‹ค!

  • ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ํ”„๋กœํ† ์ฝœ
    • HLS - ์ง€์—ฐ์‹œ๊ฐ„์ด ๋†’์ง€๋งŒ ํ˜ธํ™˜์„ฑ์ด ์ข‹์Œ (์น˜์ง€์ง) - ๋ฏผ์ง€, ์˜๊ธธ
      • ์™œ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์— ๋น„ํ•ด ์ง€์—ฐ์‹œ๊ฐ„์ด ๊ธธ๊นŒ?
      • ์–ด๋–ป๊ฒŒ ์ง€์—ฐ์‹œ๊ฐ„์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์„๊นŒ?
    • WebRTC - ์ง€์—ฐ์‹œ๊ฐ„์ด ๋‚ฎ์ง€๋งŒ P2P์— ์ ํ•ฉ (๊ตฌ๊ธ€๋ฏธํŠธ) - ์ฐฝํ˜„
    • RTMP - ์ง€์—ฐ์‹œ๊ฐ„ ๋‚ฎ์Œ (ํŠธ์œ„์น˜) - ์ค€์„œ, ์ง€์ˆ˜
    • Dynamic Adapltive Streaming over HTTP
    • SRT
    • RTSP

1๏ธโƒฃย RTSP (Real Time Streaming Protocol)

์ŠคํŠธ๋ฆฌ๋ฐ์˜ ์‹œ์ž‘์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. 1996๋…„ ๋“ฑ์žฅํ•˜์˜€์œผ๋ฉฐ RTSP๊ฐ€ ๋“ฑ์žฅ ์ „ ์˜์ƒ, ์Œ์•… ๋“ฑ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ •๋ณด๋ฅผ ์™„์ „ํžˆ ๋‹ค์šด๋กœ๋“œํ•œ ํ›„ ์‹œ์ฒญํ•  ์ˆ˜ ์žˆ์—ˆ์Œ.

๋‹ค๋งŒ ์˜ค๋ž˜๋œ ๊ธฐ์ˆ ์ด๋ผ ํ™”์งˆ ์ €ํ•˜, ๋ฏธ๋””์–ด ์„œ๋ฒ„ ์šด์˜์— ๋Œ€ํ•œ ๋†’์€ ๋‚œ์ด๋„ ๋“ฑ์œผ๋กœ ๋„ํƒœ๋˜๊ณ  ์žˆ๋Š” ์‹ค์ •.

  • ์• ํ”Œ์€ HLS๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ธฐ ์ด์ „์— RTSP ๊ธฐ๋ฐ˜์˜ QTSS๋กœ ๋น„๋””์˜ค์™€ ์˜ค๋””์˜ค๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์—ˆ์Œ
    • ํ•˜์ง€๋งŒ QTSS๊ฐ€ ์• ํ”Œ ์ƒํƒœ๊ณ„์—์„œ๋งŒ ์ตœ์ ํ™”๊ฐ€ ๋˜์–ด์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธํ™˜์„ฑ ์ด์œ ๊ฐ€ ์žˆ์—ˆ์Œ
    • RTSP๋Š” HTTP ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ TCP, UDP ์‚ฌ์šฉ โ†’ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋‚˜ ๋ฐฉํ™”๋ฒฝ ๋ฌธ์ œ๋กœ ์ธํ•ด HTTP๋ณด๋‹ค ํ˜ธํ™˜์„ฑ ๋‚ฎ์Œ
  • CCTV์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ

์ŠคํŠธ๋ฆฌ๋จธ โ†’ rtmp โ†’ ์„œ๋ฒ„ โ†’ hls โ†’ ํด๋ผ์ด์–ธํŠธ

2๏ธโƒฃย HLS (Hypertext Live Streaming)

์ฐธ๊ณ ์ž๋ฃŒ

https://medium.com/@cwh./%EB%8F%99%EC%98%81%EC%83%81-%EC%95%88%EB%81%8A%EA%B8%B0%EA%B3%A0-%EB%B3%B4%EB%8A%94%EB%B2%95-feat-ll-hls-a6a0c453b21f

https://medium.com/@delivalue100/hls-http-live-streaming-4fb1d2992d57

์™œ ๋งŒ๋“ค์–ด์กŒ์„๊นŒ? feat. RTSP

  • RTSP๋Š” ๊ณ ์ •๋œ ๋น„ํŠธ๋ ˆ์ดํŠธ๋กœ ์ฝ˜ํ…์ธ  ์ŠคํŠธ๋ฆฌ๋ฐ์— ์ตœ์ ํ™”

    • ๊ณ ์ • ๋น„ํŠธ๋ ˆ์ดํŠธ์˜ ๊ฒฝ์šฐ ํ•œ๊ฐ€์ง€ ์†๋„๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋‹ค ๋ณด๋‹ˆ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•  ๋•Œ์—๋„ ๋™์ผํ•œ ๋น„ํŠธ๋ ˆ์ดํŠธ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ

    โ‡’ ๋”ฐ๋ผ์„œ ํ˜ธํ™˜์„ฑ์ด ๋†’์€ HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ผ ๋น„๋””์˜ค ํ’ˆ์งˆ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์กฐ์ • ๊ฐ€๋Šฅํ•œ ๊ฐ€๋ณ€ ๋น„ํŠธ๋ ˆ์ดํŠธ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋„์ž…๋œ ๊ฒƒ์ด HLS

๋™์ž‘ ์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ

  • HTTP๊ธฐ๋ฐ˜์˜ ๋‹จ๋ฐฉํ–ฅ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ
  • ์ผ๋ฐ˜ ์›น์„œ๋ฒ„ + CDN์„ ํ™œ์šฉํ•ด ์ฝ˜ํ…์ธ  ๋ฐฐํฌ
  • [๋น„๋””์˜ค โ†’ HTTP ํŒŒ์ผ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ” โ†’ ์ „์†ก โ†’] ์žฌ์ƒ
  • HTTP ํŒŒ์ผ๋กœ ๋‚˜๋ˆ„๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์ „์šฉ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. image image
  • m3u8 : ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
    • ์‹œ์ž‘ ํƒœ๊ทธ
    • hls ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „
    • ์„ธ๊ทธ๋จผํŠธ์˜ ์ตœ๋Œ€ ๊ธธ์ด
    • ์ฒซ ๋ฒˆ์งธ ์„ธ๊ทธ๋จผํŠธ์˜ ์‹œํ€€์Šค ๋ฒˆํ˜ธ
    • ์‹ค์ œ ์„ธ๊ทธ๋จผํŠธ์˜ ๊ธธ์ด, ๋‹ค์Œ ์„ธ๊ทธ๋จผํŠธ ์ธ๋ฑ์Šค
    • ์ข…๋ฃŒ ํƒœ๊ทธ
  • ts : ์‹ค์ œ ๋น„๋””์˜ค์˜ ์กฐ๊ฐ๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ

์™œ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์— ๋น„ํ•ด ์ง€์—ฐ์‹œ๊ฐ„์ด ๊ธธ๊นŒ?

image ์ง€์—ฐ์‹œ๊ฐ„์ด ๊ธด ๊ฒƒ์—๋Š” ๋‹ค์–‘ํ•œ ์›์ธ์ด ์žˆ์—ˆ์Œ

  1. UDP ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ๋“ค๊ณผ ๋‹ฌ๋ฆฌ HLS ๋Š” TCP ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  2. HLS ๋Š” ์˜คํžˆ๋ ค ์‹ค์‹œ๊ฐ„์— ์ง‘์ค‘ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹ ๋ขฐ์„ฑ๊ณผ ํšจ์œจ์„ฑ์— ์ง‘์ค‘ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  3. ๋™์ž‘ ๋ฐฉ์‹์œผ๋กœ ์ธํ•œ ์ง€์—ฐ
    1. ์„œ๋ฒ„์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐํ•  ๋น„๋””์˜ค ํŒŒ์ผ์„ ์งง์€ ์„ธ๊ทธ๋จผํŠธ(2~10์ดˆ)๋กœ ๋ถ„ํ•  โ†’ ์žฌ์ƒ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„  ์ ์–ด๋„ ๋ช‡ ๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ํ•„์š”ํ•ด ์ดˆ๊ธฐ ๋ฒ„ํผ๋ง ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง (์„ธ๊ทธ๋จผํŠธ ๊ธธ์ด๊ฐ€ ๊ธธ์ˆ˜๋ก ์ง€์—ฐ์ด ์ปค์งˆ ์ˆ˜ ์žˆ์Œ) โ‡’ CDN์œผ๋กœ ์„ธ๊ทธ๋จผํŠธ ์บ์‹ฑํ•ด์„œ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ๊ฐ„์„ ๊ฐœ์„ ํ•˜๋ คํ•จ
  4. HTTP ๊ธฐ๋ฐ˜ ์š”์ฒญ-์‘๋‹ต ์ง€์—ฐ
    1. HTTP ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ๊ฐ ์„ธ๊ทธ๋จผํŠธ ๋งˆ๋‹ค ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ํ•„์š”. ๋„คํŠธ์›Œํฌ์˜ ์ƒํƒœ๋‚˜ ์‘๋‹ต ์†๋„์— ์ข…์†
  5. ๊ฐ€๋ณ€ ๋น„ํŠธ๋ ˆ์ดํŠธ ์ง€์—ฐ
    1. ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ผ ์ตœ์ ์˜ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ์ง„ํ–‰ โ†’ ์ด ๊ณผ์ •์—์„œ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ „ํ™˜ํ•˜๋ฉฐ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•จ โ‡’ ์ง€์—ฐ์ด ์‹œ์ฒญ ํ™˜๊ฒฝ์„ ๊ฐœ์„ ํ•˜์ง€๋งŒ ์‹ค์‹œ๊ฐ„์„ฑ์—์„œ๋Š” ๋ถˆ๋ฆฌํ•จ!
  6. CDN ์บ์‹ฑ๊ณผ ์„œ๋ฒ„ ์ตœ์ ํ™” ์ด์Šˆ
    1. ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์บ์‹œ๋˜์–ด๋„ ์—ฌ์ „ํžˆ HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•ด ์ถ”๊ฐ€์ ์ธ ํ†ต์‹ ๊ณผ์ • ํ•„์š”
    2. ํŠนํžˆ ์‚ฌ์šฉ์ž ๋งŽ์€ ๋ผ์ด๋ธŒ๋ฐฉ์†ก์—์„œ๋Š” CDN์ด ์ ์ ˆํžˆ ๋ถ„๋ฐฐ๋˜์ง€ ์•Š์œผ๋ฉด ์ง€์—ฐ ๋ฐœ์ƒ

โ‡’ ๋”ฐ๋ผ์„œ HLS๋Š” ๋ผ์ด๋ธŒ ์ŠคํŠธ๋ฆฌ๋ฐ๋ณด๋‹ค๋Š” ์ •์  ๋น„๋””์˜ค ํ”Œ๋ ˆ์ด์–ด์— ๋” ์ ํ•ฉ

์น˜์ง€์ง์—์„œ์˜ HLS ์‚ฌ์šฉ๋ฒ•

image โ‡’ ๊ฒฐ๊ตญ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ์˜ ๋ฏธ๋””์–ด ์„ธ๊ทธ๋จผํŠธ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ GETํ•˜๊ณ  ๋งˆ์ง€๋ง‰์ฏค์— ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์š”์ฒญํ•˜๋Š” ํ๋ฆ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

+) ๋’ค๋กœ ๋Œ๋ ค๋ณด๊ธฐ ์•ˆ๋˜๋Š” ์ด์œ ..? ๋Œ๋ ค๋ณด๊ธฐ ์ž์ฒด์— ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ๊ฐ€ ํฐ๋“ฏ. ๊ทธ๋ƒฅ ๋ฐฉ์†ก ์ข…๋ฃŒ ํ›„ ๋‹ค์‹œ๋ณด๊ธฐ ๊ธฐ๋Šฅ์„ ๋„ฃ๋Š”๊ฒŒ ์ด๋“

์ง€์—ฐ์‹œ๊ฐ„ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

https://www.cdnetworks.com/ko/blog/media-delivery/http-live-streaming/

  1. ์„ธ๊ทธ๋จผํŠธ ๊ธธ์ด ๋‹จ์ถ•
    1. 6์ดˆ ์ด์ƒ์˜ ๊ธฐ๋ณธ์ ์ธ ์„ธ๊ทธ๋จผํŠธ ๊ธธ์ด๋ฅผ 2~1์ดˆ๋กœ ์ค„์ด๊ธฐ
      1. ์งง์•„์งˆ์ˆ˜๋ก ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ์š”์ฒญ์ด ๋งŽ์•„ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ท ํ˜•์ ์„ ์ฐพ์•„์•ผํ•จ
  2. LL-HLS ๋„์ž…
    1. ์• ํ”Œ์ด ๊ฐœ๋ฐœํ•œ HLS์˜ ์ดˆ์ €์ง€์—ฐ ๋ฒ„์ „
    2. ์„ธ๊ทธ๋จผํŠธ ๋‚ด์—์„œ ๋” ์ž‘์€ ๋‹จ์œ„์ธ ํŒŒํŠธ๋กœ ๋‚˜๋ˆ  ์ „์†กํ•˜๋ฉฐ, ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์™„์ „ํžˆ ์ค€๋น„๋˜์ง€ ์•Š์•„๋„ ์ผ๋ถ€๋ฅผ ๋จผ์ € ์ „์†กํ•จ
  3. ์„ธ๊ทธ๋จผํŠธ ํ”„๋ฆฌํŽ˜์นญ
    1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์Œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•˜๊ณ  ์‚ฌ์ „ ๋‹ค์šด๋กœ๋“œ
  4. ์†ก์ถœ ํ™˜๊ฒฝ ์ตœ์ ํ™”
    1. ์น˜์ง€์ง ๊ณต์ง€์‚ฌํ•ญ์„ ๋ณด๋‹ˆ ์†ก์ถœ ํ”„๋กœ๊ทธ๋žจ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„..
    2. ์ŠคํŠธ๋ฆฌ๋จธ๊ฐ€ ํ‚คํ”„๋ ˆ์ž„ ๊ฐ„๊ฒฉ์„ ๋„ˆ๋ฌด ์งง๊ฒŒ ์„ค์ • โ†’์„ธ๊ทธ๋จผํŠธ๊ฐ€ ๋„ˆ๋ฌด ์งง์•„์ง, ์„œ๋ฒ„ ๋ถ€ํ•˜ โ‡’ ๋ฒ„ํผ๋ง ๋งŽ์•„์ง ์ด์Šˆ์ธ๋“ฏ
      1. https://help.naver.com/notice/noticeView.help?noticeNo=17188&serviceNo=23946&lang=ko

๋น„ํŠธ๋ ˆ์ดํŠธ์™€ ์„ธ๊ทธ๋จผํŠธ

  1. ๋น„ํŠธ๋ ˆ์ดํŠธ

    1. m3u8 ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ํŒŒ์ผ ์ˆ˜์ •
      1. EXT-X-STREAM-INF ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์„ค์ •

        #EXTM3U
        #EXT-X-VERSION:3
        
        #EXT-X-STREAM-INF:BANDWIDTH=1500000
        # ์ด ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜
        # BANDWIDTH=1500000์€ ์ด ์ŠคํŠธ๋ฆผ์˜ ๋Œ€์—ญํญ ์š”๊ตฌ ์‚ฌํ•ญ์ด 1,500,000 ๋น„ํŠธ(1.5 Mbps)์ž„์„ ๋‚˜ํƒ€๋ƒ„
        
        stream_1500.m3u8
        
      2. ์ถ”๊ฐ€์ ์ธ ํƒœ๊ทธ ์„ค๋ช…

        • #EXT-X-DISCONTINUITY: ์ด์ „ ์„ธ๊ทธ๋จผํŠธ์™€์˜ ์—ฐ์†์„ฑ์ด ๋Š์–ด์ง์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ด‘๊ณ ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋ฏธ๋””์–ด๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

          m3u8
          #EXT-X-DISCONTINUITY
          
          • ์˜ˆ์‹œ: ์ด ํƒœ๊ทธ ๋’ค์— ์˜ค๋Š” ์„ธ๊ทธ๋จผํŠธ๋Š” ์ด์ „ ๋ฏธ๋””์–ด์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ธ์ฝ”๋”ฉ๋˜์—ˆ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ฏธ๋””์–ด์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
        • #EXT-X-STREAM-INF: ๋‹ค์ค‘ ๋น„ํŠธ๋ ˆ์ดํŠธ ์ŠคํŠธ๋ฆผ ๋˜๋Š” ์ ์‘ํ˜• ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ฐ€์ง„ ๋Œ€์ฒด ์ŠคํŠธ๋ฆผ์ด ์žˆ์„ ๋•Œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์ŠคํŠธ๋ฆผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

          m3u8
          #EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
          low.m3u8
          #EXT-X-STREAM-INF:BANDWIDTH=1500000,RESOLUTION=1280x720
          medium.m3u8
          
          • ์˜ˆ์‹œ: 800kbps, 1500kbps๋กœ ๊ฐ๊ฐ ๋‹ค๋ฅธ ํ•ด์ƒ๋„์˜ ์ŠคํŠธ๋ฆผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ m3u8 ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
        • #EXT-X-KEY: ์„ธ๊ทธ๋จผํŠธ์˜ ์•”ํ˜ธํ™” ํ‚ค ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. HLS์—์„œ๋Š” ์ฝ˜ํ…์ธ  ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด AES-128 ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

          m3u8
          #EXT-X-KEY:METHOD=AES-128,URI="https://example.com/key"
          
          • ์˜ˆ์‹œ: ์„ธ๊ทธ๋จผํŠธ๋ฅผ AES-128๋กœ ์•”ํ˜ธํ™”ํ•˜๋ฉฐ, ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์œ„์น˜๋Š” https://example.com/key์ž…๋‹ˆ๋‹ค.
  2. ์„ธ๊ทธ๋จผํŠธ

    1. FFmpeg๋กœ ๋น„๋””์˜ค๋ฅผ ์—ฌ๋Ÿฌ ํ•ด์ƒ๋„๋กœ ์ธ์ฝ”๋”ฉํ•  ๋•Œ -hls_time์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๊ทธ๋จผํŠธ์˜ ๊ธธ์ด๋ฅผ ์„ค์ • (๊ธฐ๋ณธ 10์ดˆ)

    2. https://frontdev.tistory.com/entry/ffmpeg%EB%A1%9C-hls-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%98%B5%EC%85%98%EC%A0%95%EB%A6%AC

      - ffmpeg -i hasashin.mp4 -b:v 1M -g 60 -hls_time 2 -hls_list_size 0 -hls_segment_size 500000 output.m3u8
      ์ถœ์ฒ˜: [https://frontdev.tistory.com/entry/ffmpeg๋กœ-hls-๋งŒ๋“ค๊ธฐ-์˜ต์…˜์ •๋ฆฌ](https://frontdev.tistory.com/entry/ffmpeg%EB%A1%9C-hls-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%98%B5%EC%85%98%EC%A0%95%EB%A6%AC) [Front End Develop:ํ‹ฐ์Šคํ† ๋ฆฌ]
      
  3. ๊ฒฐ๋ก 

  • ๋†’์€ ๋น„ํŠธ๋ ˆ์ดํŠธ์™€ ๊ธด ์„ธ๊ทธ๋จผํŠธ: ๋†’์€ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ธด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•  ๊ฒฝ์šฐ, ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€. ํŠนํžˆ ๋ถˆ์•ˆ์ •ํ•œ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์žฌ์ƒ ํ’ˆ์งˆ์ด ์ €ํ•˜๋จ.
  • ๋‚ฎ์€ ๋น„ํŠธ๋ ˆ์ดํŠธ์™€ ์งง์€ ์„ธ๊ทธ๋จผํŠธ: ๋‚ฎ์€ ๋น„ํŠธ๋ ˆ์ดํŠธ์™€ ์งง์€ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์กฐํ•ฉํ•˜๋ฉด, ์žฌ์ƒ ์•ˆ์ •์„ฑ์ด ๋†’์•„์ง€๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„ ๊ฐ์†Œ, ๋น„๋””์˜ค ํ’ˆ์งˆ์€ ์ €ํ•˜. โ‡’ ์ด๊ฒŒ ์šฐ๋ฆฌ์„œ๋น„์Šค์— ์ ํ•ฉํ•˜์ง€ ์•Š์„๊นŒ?

LL-HLS์˜ ์ง€์—ฐ์‹œ๊ฐ„ ๊ฐœ์„  ๋ฐฉ๋ฒ•

image

  • ํ•˜๋‚˜๋‹น 10์ดˆ ์ •๋„์ธ ts ๊ฐ€ ์•„๋‹Œ 1์ดˆ ์ดํ•˜ ์ •๋„์˜ CMAF ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด์•„์„œ ์ƒ์„ฑ ์ฆ‰์‹œ ์ „์†กํ•œ๋‹ค.
  • ๋˜ํ•œ m3u8 ํŒŒ์ผ์— ์ถ”๊ฐ€์ ์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

LL-HLS ๊ด€๋ จ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ

  • #EXT-X-PART-INF: ์ €์ง€์—ฐ HLS์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํƒœ๊ทธ๋กœ, ์„ธ๊ทธ๋จผํŠธ๊ฐ€ **ํŒŒํŽธ(chunk)**์œผ๋กœ ๋‚˜๋‰˜์–ด ์ „์†ก๋˜๋Š” ๊ฒฝ์šฐ ๊ฐ ํŒŒํŽธ์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    m3u8
    #EXT-X-PART-INF:PART-TARGET=1.0
    
    • ์˜ˆ์‹œ: ๊ฐ ํŒŒํŽธ์˜ ํƒ€๊ฒŸ ๊ธธ์ด๊ฐ€ 1์ดˆ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • #EXT-X-PRELOAD-HINT: LL-HLS์—์„œ ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ์„ธ๊ทธ๋จผํŠธ๋‚˜ ํŒŒํŽธ์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ฌ ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    m3u8
    #EXT-X-PRELOAD-HINT:TYPE=PART,URI="segment3_part1.ts"
    
    • ์˜ˆ์‹œ: segment3_part1.ts ํŒŒํŽธ์„ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•  ํžŒํŠธ์ž…๋‹ˆ๋‹ค.

์‘๋‹ต ์ง€์—ฐ

์ €๋ฒˆ ๊ธˆ์š”์ผ์— ํšŒ๊ณ  ์‹œ๊ฐ„์—, Short Polling, Long Polling ์ด ๋‚˜์™”๋˜ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด์™€ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์˜€๋‹ค๊ณ  ๋ณด๋ฉด ์‰ฌ์šธ ๊ฒƒ ๊ฐ™๋‹ค.

Short Polling ์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ์—…๋ฐ์ดํŠธ ๋œ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€๋ฅผ ์ฒดํฌํ•œ๋‹ค. ๋งŒ์•ฝ ์—…๋ฐ์ดํŠธ๋œ ์‚ฌํ•ญ์ด ์—†๋‹ค๋ฉด ์„œ๋ฒ„๋Š” 304(Not Modified), 200 ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ด๋•Œ ํด๋ผ์ด์–ธํŠธ๋Š” ์—…๋ฐ์ดํŠธ๋œ ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ ๊นŒ์ง€ ๋˜ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

Long Polling (200) ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ, ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋˜๋Œ๋ ค์ฃผ์ง€ ์•Š๊ณ  ์—ฐ๊ฒฐ์„ ์œ ์ง€(์ง€์—ฐ)ํ•˜๋‹ค๊ฐ€, ์—…๋ฐ์ดํŠธ๊ฐ€ ๋œ ์ˆœ๊ฐ„ ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.

๊ธฐ์กด HLS๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ) ์ธ .m3u8 ํŒŒ์ผ์„ ์ง€์†์ ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญํ•ด์„œ .m3u8 ์„ ํ† ๋Œ€๋กœ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์žฌ์ƒํ•˜๋Š” ๋ฐฉ์‹์ธ๋ฐ, ์ง€์†์ ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญ ์ด ๊ณผ์ •์ด ์ง€์—ฐ์‹œ๊ฐ„์˜ ์ฃผ๋ฒ”์ด๋‹ค. ์ด ์‹œ๊ฐ„ ๋™์•ˆ ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋Œ€๊ธฐ๋ฅผ ํ•ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ ๋™์˜์ƒ ํŒŒ์ผ์ธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ณ  ๋‚˜์„œ์•ผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด HLS ๋Š” HTTP ์š”์ฒญ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณด๋‚ด์„œ .m3u8 ์ด ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์„ ํ•œ๋‹ค. ๋งŒ์•ฝ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋˜ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ์‘๋‹ต์„ ๋ฐ›๊ณ  ๋‚˜์„œ์•ผ ์‹ค์ œ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ์ธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.

LL-HLS ๋Š”

  • ํด๋ผ์ด์–ธํŠธ์˜ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ์š”์ฒญ:
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— .m3u8 ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ๋Š” ์ตœ์‹  ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์˜ ์š”์ฒญ ์ง€์—ฐ(Blocking):
    • ๋งŒ์•ฝ ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์•„์ง ์ƒ์„ฑ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” ์ฆ‰์‹œ ์‘๋‹ต์„ ํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญ์„ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋Œ€๊ธฐ(Blocking) ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋™์•ˆ ์„œ๋ฒ„๋Š” ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ ์ƒ์„ฑ ์‹œ ์‘๋‹ต:
    • ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์„œ๋ฒ„๋Š” ๋Œ€๊ธฐ ์ค‘์ธ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์‘๋‹ตํ•˜์—ฌ ์ตœ์‹  ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ๋‹ค์Œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ฐ€์ ธ๊ฐ€ ์žฌ์ƒ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ ๋‹จ์ถ•:
    • ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ๊ธฐ์กด์˜ ์ฃผ๊ธฐ์ ์ธ ํด๋ง ๋ฐฉ์‹๋ณด๋‹ค ์ง€์—ฐ ์‹œ๊ฐ„์„ ํ›จ์”ฌ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณ„์†ํ•ด์„œ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ๋ฅผ ์š”์ฒญํ•˜์—ฌ ์ตœ์‹  ์ •๋ณด๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„์˜ ๋ถ€ํ•˜

LL-HLS ๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋” ์งง๊ฒŒ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋” ์ž์ฃผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๊ณ , m3u8 ์˜ ์—…๋ฐ์ดํŠธ๋„ ๋” ๋งŽ์ด ์ผ์–ด๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.

์„œ๋ฒ„์˜ ๋ถ€๋‹ด์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์€ ์žˆ์„๊นŒ?

์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฐฉ์•ˆ

  1. CDN(Content Delivery Network) ์‚ฌ์šฉ
    • LL-HLS์—์„œ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” CDN์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. CDN์€ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฝ˜ํ…์ธ ๋ฅผ ์—ฌ๋Ÿฌ ์ง€์ ์— ์บ์‹œํ•˜๊ณ , ์ง€๋ฆฌ์ ์œผ๋กœ ๊ฐ€๊นŒ์šด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ต๋‹ˆ๋‹ค.
    • CDN์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ๋Œ€์‹  CDN์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐ›์•„๊ฐ€๋ฏ€๋กœ, ์„œ๋ฒ„์˜ ์ง์ ‘์ ์ธ ์š”์ฒญ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ํšจ์œจ์ ์ธ ์„ธ๊ทธ๋จผํŠธ ์ƒ์„ฑ ๋ฐ ์บ์‹ฑ
    • ์„œ๋ฒ„๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ , ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์บ์‹ฑํ•จ์œผ๋กœ์จ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ์™€ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฅผ ์ ์ ˆํžˆ ์บ์‹ฑํ•˜์—ฌ ๋™์ผํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„์—์„œ ์žฌ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ตœ์ ์˜ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ๋ฐ ์„ธ๊ทธ๋จผํŠธ ๊ธธ์ด ์กฐ์ •
    • LL-HLS์—์„œ๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ž‘์€ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„์ง€๋งŒ, ๋„ˆ๋ฌด ์ž‘์€ ๋‹จ์œ„์˜ ์„ธ๊ทธ๋จผํŠธ๋Š” ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ํฌ๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ ์„ธ๊ทธ๋จผํŠธ ๊ธธ์ด์™€ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ๊ฐฑ์‹  ์ฃผ๊ธฐ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€ํ•˜์™€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๊ท ํ˜• ์žˆ๊ฒŒ ๋งž์ถ”๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹  safari ๋ฅผ ์ œ์™ธํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ํƒœ๊ทธ๋งŒ์œผ๋กœ๋Š” ์žฌ์ƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. HLS ์ŠคํŠธ๋ฆผ ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๋‹ค.

  • hls.js โ†’ hls ์ŠคํŠธ๋ฆผ์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์š”์†Œ์— ์ „๋‹ฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

3๏ธโƒฃย WebRTC (Web Real-Time Communication)

์›น ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์—ย ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋„์›€ ์—†์ด ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œย Javascript API

โ†’ ๋ณ„๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ์—†์ด ์นด๋ฉ”๋ผ, ๋งˆ์ดํฌ ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ œ๊ณต

์Œ์„ฑ ํ†ตํ™”, ์˜์ƒ ํ†ตํ™”, P2P ํŒŒ์ผ ๊ณต์œ  ๋“ฑ์œผ๋กœ ํ™œ์šฉ๋จ

WebRTC์˜ ์žฅ์ 

WebRTC๋Š” ๋‚ฎ์€ Latency๋ฅผ ๊ฐ–๋Š”๋‹ค

  • WebRTC๋Š” **P2P(peer-to-peer)๋ฐฉ์‹**์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก

    • P2P๋Š” ์ค‘๊ฐ„ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์Œ
  • WebRTC๋Š” UDP ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜์—ฌ ์‹ ์†ํ•˜๊ฒŒ ํŒจํ‚ท์„ ์ „์†ก

    • HLS์™€ RTMP๋Š” TCP ๊ธฐ๋ฐ˜

WebRTC๋Š” ํ˜ธํ™˜์„ฑ์ด ๋†’๋‹ค

image

WebRTC์˜ ๋‹จ์ 

๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค (์Šค์ผ€์ผ๋ง ๋ฌธ์ œ)

  • WebRTC๋Š” P2P(peer-to-peer) ๊ตฌ์กฐ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์ง์ ‘์ ์ธ ์—ฐ๊ฒฐ์„ ์„ค์ •
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ํ•„์š”ํ•œ ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•จ
  • N๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ์ž ํ•œ๋ช…์ด ์ถ”๊ฐ€๋˜๋ฉด N๊ฐœ์˜ ์—ฐ๊ฒฐ์ด ํ•„์š”
    • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘์— ํฐ ๋ถ€๋‹ด
    • ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ๊ณผ ์„ฑ๋Šฅ ์ €ํ•˜ ์ดˆ๋ž˜

ํ™”์งˆ ๋ฌธ์ œ (์„ฑ๋Šฅ๋ฌธ์ œ)

  • ์‹ค์‹œ๊ฐ„ ๋น„๋””์˜ค์™€ ์˜ค๋””์˜ค ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•ด ์ƒ๋‹นํ•œ ๋Œ€์—ญํญ์„ ์†Œ๋ชจ
  • ํŠนํžˆ ๊ณ ํ™”์งˆ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์€ ๋งŽ์€ ๋Œ€์—ญํญ์„ ์š”๊ตฌ
  • ๋Œ€์—ญํญ์ด ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ๋Š” ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ „์ฒด ์ŠคํŠธ๋ฆผ์˜ ํ’ˆ์งˆ ์ €ํ•˜๋กœ ์ด์–ด์ง
    • WebRTC๋Š” UDP ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ํŒจํ‚ท ์†์‹ค์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Œ
  • ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์‹œ๋„ํ•˜๋ฉด ๋Œ€์—ญํญ์ด ๊ณ ๊ฐˆ๋  ์œ„ํ—˜

๋Œ€๊ทœ๋ชจ ๋ผ์ด๋ธŒ ๋ฐฉ์†ก์— ๋ถˆ์™„์ „ํ•จ

  • ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ๋Œ€์—ญํญ ์†Œ๋ชจ
    • HLS๋‚˜ RTMP์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹
      • HLS๋‚˜ RTMP๋Š” ์ค‘์•™ ์„œ๋ฒ„์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฏธ๋ฆฌ ์ธ์ฝ”๋”ฉ๋œ ๋น„๋””์˜ค ์กฐ๊ฐ์„ ์ „์†ก
      • ์Šค์ผ€์ผ๋ง ๊ฐ€๋Šฅ : ์ˆ˜๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ˜ํ…์ธ ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Œ
    • WebRTC๋Š” ๋ฏธ๋ฆฌ ์ธ์ฝ”๋”ฉ๋œ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์—ญํญ์ด ๋น„๋””์˜ค ํ’ˆ์งˆ๊ณผ ์‚ฌ์šฉ์ž ์ˆ˜์— ๋”ฐ๋ผ ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ณ€๋™ํ•จ

WebRTC๋ณด๋‹ค ๋น ๋ฅธ ๊ธฐ์ˆ ์ด ์žˆ์„๊นŒ?

WebTransport

  • WebTransport๋Š” UDP ๊ธฐ๋ฐ˜์œผ๋กœ ํ†ต์‹ 
  • WebRTC์˜ signaling ์—†์ด๋„ ์„œ๋ฒ„์™€์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๊ฐ€๋Šฅ

๊ทธ๋Ÿฌ๋‚˜ WebTransport๋Š” ์•„์ง ๊ฐœ๋ฐœ ๋‹จ๊ณ„์ด๋ฉฐ, ์•ˆ์ •์ ์ธ ํ‘œ์ค€ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ์˜ ์ง€์›์ด ๋ถˆํ™•์‹ค

WebRTC์ฒ˜๋Ÿผ ์‹ค์‹œ๊ฐ„ ์˜ค๋””์˜ค์™€ ๋น„๋””์˜ค ์ „์†ก์„ ์œ„ํ•œ ์ตœ์ ํ™”๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Œ

HLS vs WebRTC ๋น„๊ต

HLS(HTTP Live Streaming)์™€ WebRTC๋Š” ๋ชจ๋‘ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•œ ๊ธฐ์ˆ ์ด์ง€๋งŒ, ์‚ฌ์šฉ ๋ชฉ์ , ์ง€์—ฐ ์‹œ๊ฐ„, ๋ณด์•ˆ ๋ฐ ํ˜ธํ™˜์„ฑ ์ธก๋ฉด์—์„œ ํฐ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋ ค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์œ ํ˜•์— ๋”ฐ๋ผ ๊ฐ ๊ธฐ์ˆ ์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•ด๋ณด๊ณ  ์–ด๋–ค ๊ฒƒ์ด ๋” ์ ํ•ฉํ•œ์ง€ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” HLS์™€ WebRTC๋ฅผ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์›น ์„œ๋น„์Šค์˜ ๊ด€์ ์—์„œ ๋น„๊ตํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1. ์ง€์—ฐ ์‹œ๊ฐ„

  • HLS:
    • ์ง€์—ฐ ์‹œ๊ฐ„: HLS๋Š” HTTP ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์œผ๋ฉฐ, 10~30์ดˆ์˜ ์ง€์—ฐ ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด **์ €์ง€์—ฐ HLS(LL-HLS)**๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ 2~5์ดˆ ์ •๋„์˜ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์šฉ๋„: ๋”ฐ๋ผ์„œ HLS๋Š” ์‹ค์‹œ๊ฐ„์„ฑ์ด ์š”๊ตฌ๋˜์ง€ ์•Š๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‰ด์Šค ๋ฐฉ์†ก, ์Šคํฌ์ธ  ๊ฒฝ๊ธฐ, ๊ฐ•์˜ ๋“ฑ์˜ ์ƒํ™ฉ์—์„œ ๋ช‡ ์ดˆ ์ •๋„์˜ ์ง€์—ฐ์ด ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด HLS๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • WebRTC:
    • ์ง€์—ฐ ์‹œ๊ฐ„: WebRTC๋Š” 1์ดˆ ๋ฏธ๋งŒ์˜ ๋งค์šฐ ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋˜์–ด, ์‹ค์‹œ๊ฐ„ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ํ†ต์‹ ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
    • ์šฉ๋„: ํ™”์ƒ ํšŒ์˜, ๊ฒŒ์ž„ ์ŠคํŠธ๋ฆฌ๋ฐ, ์‹ค์‹œ๊ฐ„ ์›๊ฒฉ ์กฐ์ž‘ ๋“ฑ ๋งค์šฐ ๋น ๋ฅธ ๋ฐ˜์‘์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. WebRTC์˜ P2P ์—ฐ๊ฒฐ ๋ฐฉ์‹ ๋•๋ถ„์— ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์‚ฌ์šฉ ์‚ฌ๋ก€

  • HLS:
    • ์ฃผ๋กœ ๋Œ€๊ทœ๋ชจ ์‹œ์ฒญ์ž ๋Œ€์ƒ์˜ ์ŠคํŠธ๋ฆฌ๋ฐ: HLS๋Š” ๋Œ€๊ทœ๋ชจ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค(์˜ˆ: YouTube, Twitch ๋“ฑ)์—์„œ ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. HTTP ๊ธฐ๋ฐ˜์ด๋ผ ๊ธฐ์กด CDN(Content Delivery Network) ์ธํ”„๋ผ๋ฅผ ํ™œ์šฉํ•ด ์†์‰ฝ๊ฒŒ ์ฝ˜ํ…์ธ ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ˆ˜์ฒœ์—์„œ ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ์‹œ์ฒญ์ž๊ฐ€ ๋™์‹œ์— ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๋ณด๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
    • ์ ์‘ํ˜• ์ŠคํŠธ๋ฆฌ๋ฐ: ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ผ ๋น„๋””์˜ค ํ’ˆ์งˆ์„ ์กฐ์ •ํ•˜๋Š” ์ ์‘ํ˜• ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ์‹œ์ฒญ์ž์˜ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ๋งž์ถฐ ๋Š๊น€ ์—†์ด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • WebRTC:
    • 1:1 ํ˜น์€ ์†Œ๊ทœ๋ชจ ๊ทธ๋ฃน ํ†ต์‹ : WebRTC๋Š” ํ™”์ƒ ํ†ตํ™”, ํ™”์ƒ ํšŒ์˜, ์˜จ๋ผ์ธ ํ˜‘์—… ํˆด ๋“ฑ ์†Œ๊ทœ๋ชจ ์‹ค์‹œ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ฒŒ์ž„ ์ŠคํŠธ๋ฆฌ๋ฐ๊ณผ ๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์‘์ด ์ค‘์š”ํ•œ ์ƒํ™ฉ์—๋„ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
    • P2P ์—ฐ๊ฒฐ: WebRTC๋Š” ์ฃผ๋กœ P2P ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ „์†กํ•˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ์‹œ์ฒญ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ธฐ์— ํšจ์œจ์ ์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํ™•์žฅ์„ฑ

  • HLS:
    • ๋Œ€๊ทœ๋ชจ ์ŠคํŠธ๋ฆฌ๋ฐ์— ์ตœ์ : HLS๋Š” HTTP ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— CDN์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์žฅ์„ฑ์„ ์‰ฝ๊ฒŒ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ฒœ ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋ฒ„ ๋ถ€๋‹ด์„ ๋œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • WebRTC:
    • ์ œํ•œ๋œ ํ™•์žฅ์„ฑ: WebRTC๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ P2P ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ง์ ‘ ์—ฐ๊ฒฐ์˜ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ• ์ˆ˜๋ก ํ™•์žฅ์„ฑ์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งŽ์€ ์ฐธ๊ฐ€์ž ๊ฐ„์˜ ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•˜๋ฉด ๊ฐ ํด๋ผ์ด์–ธํŠธ์˜ ๋„คํŠธ์›Œํฌ ๋ฐ CPU ์ž์›์ด ๊ธ‰๊ฒฉํžˆ ์†Œ๋ชจ๋ฉ๋‹ˆ๋‹ค.
    • SFU ์‚ฌ์šฉ: ํ™•์žฅ์„ฑ์„ ๋Š˜๋ฆฌ๊ธฐ ์œ„ํ•ด **SFU(Selective Forwarding Unit)**๋ฅผ ๋„์ž…ํ•˜์—ฌ ๊ฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ชจ๋“  ์ฐธ๊ฐ€์ž์™€ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ  ์ค‘์•™ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์•ฝ 100๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž๊นŒ์ง€ ํ™•์žฅ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

4. ๋„คํŠธ์›Œํฌ ํ˜ธํ™˜์„ฑ ๋ฐ ์•ˆ์ •์„ฑ

  • HLS:
    • HTTP ๊ธฐ๋ฐ˜ ์ „์†ก: HLS๋Š” HTTP ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฉํ™”๋ฒฝ์„ ํ†ต๊ณผํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ํ˜ธํ™˜์„ฑ์ด ๋งค์šฐ ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
    • ์•ˆ์ •์ : HTTP์™€ TCP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์‹ ๋ขฐ์ ์ด๋ฉฐ, ์ค‘๊ฐ„์— ๋ฐœ์ƒํ•˜๋Š” ํŒจํ‚ท ์†์‹ค์„ ์žฌ์ „์†กํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์–ด ์•ˆ์ •์ ์ธ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • WebRTC:
    • NAT Traversal: WebRTC๋Š” P2P ์—ฐ๊ฒฐ์„ ์œ„ํ•ด STUN ๋ฐ TURN ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NAT ๋’ค์— ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ ์„ค์ •์ด ๋ณต์žกํ•ด์ง€๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • UDP ๊ธฐ๋ฐ˜ ์ „์†ก: ์ฃผ๋กœ UDP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ํŒจํ‚ท ์†์‹ค ์‹œ ์žฌ์ „์†ก์„ ๋ณด์žฅํ•˜์ง€ ์•Š์•„ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์„ ๋•Œ ํ’ˆ์งˆ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ๋ณด์•ˆ

  • HLS:
    • HTTPS์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ: HLS๋Š” HTTP ๊ธฐ๋ฐ˜์œผ๋กœ, HTTPS๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, **DRM(๋””์ง€ํ„ธ ๊ถŒ๋ฆฌ ๊ด€๋ฆฌ)**๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด ์ฝ˜ํ…์ธ  ๋ณดํ˜ธ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • WebRTC:
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ์•”ํ˜ธํ™”๋œ ํ†ต์‹ : WebRTC๋Š” ๋ชจ๋“  ์˜ค๋””์˜ค, ๋น„๋””์˜ค, ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ DTLS(Datagram Transport Layer Security)์™€ SRTP(Secure Real-Time Transport Protocol)๋ฅผ ์‚ฌ์šฉํ•ด ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

6. ๋ธŒ๋ผ์šฐ์ € ์ง€์›

  • HLS:
    • Safari์™€ iOS ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์›: Apple ๊ธฐ๊ธฐ์™€ Safari ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜์ง€๋งŒ, Chrome, Firefox ๋“ฑ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(hls.js)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • WebRTC:
    • ๋ชจ๋“  ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ € ์ง€์›: WebRTC๋Š” Chrome, Firefox, Safari, Edge ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€์ ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•„์š” ์—†์ด ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

  • HLS๋Š” ๋Œ€๊ทœ๋ชจ ์ŠคํŠธ๋ฆฌ๋ฐ์— ์ ํ•ฉํ•˜๋ฉฐ, ์ƒ๋Œ€์ ์œผ๋กœ ๊ธด ์ง€์—ฐ ์‹œ๊ฐ„์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์†ก, ๊ต์œก, ์—”ํ„ฐํ…Œ์ธ๋จผํŠธ์™€ ๊ฐ™์€ ์„œ๋น„์Šค์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. HTTP ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ ํ˜ธํ™˜์„ฑ์ด ๋†’๊ณ , ๊ธฐ์กด CDN ์ธํ”„๋ผ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • WebRTC๋Š” ์ฆ‰๊ฐ์ ์ธ ๋ฐ˜์‘์ด ํ•„์š”ํ•œ ์‹ค์‹œ๊ฐ„ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ๋ณด์•ˆ์„ฑ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์–ด ํ™”์ƒ ํšŒ์˜, ์‹ค์‹œ๊ฐ„ ํ†ต์‹ , ์˜จ๋ผ์ธ ํ˜‘์—… ๋„๊ตฌ ๋“ฑ์— ์ ํ•ฉํ•˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ง€์›๋˜๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ํ™•์žฅ์„ฑ ์ธก๋ฉด์—์„œ๋Š” SFU์™€ ๊ฐ™์€ ๊ตฌ์กฐ์  ๋ณด์™„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ๋Œ€๊ทœ๋ชจ ์‹œ์ฒญ์ž์™€์˜ ๋ฐฉ์†ก์—๋Š” HLS๊ฐ€ ์ ํ•ฉํ•˜๊ณ , ์†Œ๊ทœ๋ชจ ์‹ค์‹œ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์ด๋‚˜ ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค์—๋Š” WebRTC๊ฐ€ ๋” ๋‚˜์€ ์„ ํƒ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

3๏ธโƒฃย RTMP (Real-Time Messaging Protocol)

์ฐธ๊ณ ์ž๋ฃŒ https://www.cdnetworks.com/ko/blog/media-delivery/what-is-rtmp-ingest/ https://ossrs.net/lts/en-us/docs/v6/doc/flv https://growthvalue.tistory.com/178 https://ossrs.net/lts/en-us/docs/v4/doc/delivery-http-flv https://medium.com/@delivalue100/rtmp-realtime-messaging-protocol-c4474e464ffd https://obsproject.com/forum/whats-new/posts/2763754/ - OBS ํฌ๋Ÿผ https://devocean.sk.com/blog/techBoardDetail.do?ID=164296 https://blog.naver.com/mingyo01/222050438291 https://velog.io/@chosj1526/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8A%B8%EC%9C%84%EC%B9%98-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%94%94%EC%9E%90%EC%9D%B8

๊ฐœ์š”

image image

  • ๊ฐœ๋ฐœ์ž: Adobe Systems (์›๋ž˜ Macromedia๊ฐ€ ๊ฐœ๋ฐœ)

  • ์ถœ์‹œ ์‹œ๊ธฐ: 2003๋…„

  • ์ฃผ์š” ์šฉ๋„: ์‹ค์‹œ๊ฐ„ ๋น„๋””์˜ค ๋ฐ ์˜ค๋””์˜ค ์ŠคํŠธ๋ฆฌ๋ฐ, ํŠนํžˆ ๋ผ์ด๋ธŒ ๋ฐฉ์†ก

  • ํŠน์ง•:

    ์–ด๋„๋ธŒ์—์„œ ๊ทœ์ •ํ•œ ๋งŒํผ ๊ธฐ์กด์—๋Š” Flash Player์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋œ ๊ธฐ์ˆ ์ด์—ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ ์ตœ๊ทผ ์–ด๋„๋ธŒ์—์„œ Flash Player์˜ ์ง€์›์„ ์ค‘๋‹จํ•œ ๋งŒํผ ์ ์ฐจ ์‚ฌ์šฉ๋ฅ ์ด ์ €์กฐํ•ด์ง€๊ณ  ์žˆ๋‹ค.

    ํ•˜์ง€๋งŒ ์ด๋Š” ํด๋ผ์ด์–ธํŠธ ๋‹จ์—์„œ์˜ ๋ฌธ์ œ์ ์ด๊ณ , ์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์˜ฎ๊ธฐ๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐ์— ์žˆ์–ด์„œ๋Š” ๋†’์€ ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ํšจ์œจ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ์—, HLS, MPEG-DASH, HTTP-FLV์™€ ๊ฐ™์€ ๊ธฐ์ˆ ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค.

    • ์ €์ง€์—ฐ ์ŠคํŠธ๋ฆฌ๋ฐ: ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ์— ์ ํ•ฉํ•œ ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„
    • ์–‘๋ฐฉํ–ฅ ํ†ต์‹ : ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ
    • ์œ ์—ฐ์„ฑ: ๋น„๋””์˜ค, ์˜ค๋””์˜ค, ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๋™์‹œ์— ์ „์†ก

์ง€์—ฐ์‹œ๊ฐ„์ด ๋น ๋ฅธ ์ด์œ 

  1. ์ง€์†์ ์ธ ์—ฐ๊ฒฐ ์œ ์ง€: RTMP๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ง€์†์ ์ธ TCP ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ ์„ค์ •์— ๋”ฐ๋ฅธ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.
  2. ์ž‘์€ ์ฒญํฌ(chunk) ๋‹จ์œ„ ์ „์†ก: ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์€ ์ฒญํฌ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์ „์†กํ•จ์œผ๋กœ์จ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜๋Š” ์ฆ‰์‹œ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฒ„ํผ๋ง ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

ํŠธ์œ„์น˜์˜ ๊ฒฝ์šฐ ์ŠคํŠธ๋ฆฌ๋จธ โ†’ Ingest โ†’ Transcode โ†’ Replication โ†’ Edge โ†’ ์‹œ์ฒญ์ž๋ฅผ ๊ฑฐ์น˜๋ฉฐ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก image

  • Ingest - ์ŠคํŠธ๋ฆฌ๋จธ์˜ ๋น„๋””์˜ค ์˜์ƒ์ด ํŠธ์œ„์น˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ๊ฐ€๋Š” ๊ฒƒ
  • Transcode - ๋น„๋””์˜ค ํ˜•์‹์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ
  • Replication - ๋ณต์‚ฌ. ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด
  • Edge - CDN์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ„ image image

ํ•œ๊ณ„์ 

  • ๋ณด์•ˆ: ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์•„ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ ์ถ”๊ฐ€ ์„ค์ •์ด ํ•„์š”ํ•จ
  • ๋ฐฉํ™”๋ฒฝ ๋ฌธ์ œ: ์ „์šฉ ํฌํŠธ(๊ธฐ๋ณธ์ ์œผ๋กœ 1935)๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ผ๋ถ€ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ์Œ
  • ๋ชจ๋ฐ”์ผ ์ง€์› ๋ถ€์กฑ: HTTP ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ(HLS, MPEG-DASH)์— ๋น„ํ•ด ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ์˜ ์ง€์›์ด ์ œํ•œ์ 
  • ํ™•์žฅ์„ฑ: ๋Œ€๊ทœ๋ชจ

4๏ธโƒฃย SRT (Secure Reliable Transport)

OBS ์‚ฌ์šฉ

๊ฐœ์š”

  • ๊ฐœ๋ฐœ์ž: Haivision
  • ์ถœ์‹œ ์‹œ๊ธฐ: 2017๋…„
  • ์ฃผ์š” ์šฉ๋„: ๋ถˆ์•ˆ์ •ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋„ ์•ˆ์ •์ ์ด๊ณ  ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆฌ๋ฐ
  • ํŠน์ง•:
    • ๋ณด์•ˆ ๊ฐ•ํ™”: AES ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ๋ณด์•ˆ์„ ๋ณด์žฅ
    • ์‹ ๋ขฐ์„ฑ: ํŒจํ‚ท ์†์‹ค, ์ง€์—ฐ, ๋„คํŠธ์›Œํฌ ๋ณ€๋™์„ฑ์— ๊ฐ•ํ•œ ๋‚ด์„ฑ์„ ๊ฐ€์ง
    • ์ ์‘์„ฑ: ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ์กฐ๊ฑด์— ๋งž์ถฐ ๋™์ ์œผ๋กœ ์กฐ์ •
    • ์˜คํ”ˆ ์†Œ์Šค: SRT๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ, ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ๊ณผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉ ๊ฐ€๋Šฅ

SRT์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์•”ํ˜ธํ™”: ์ „์†ก ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋„์ฒญ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณ€์กฐ๋ฅผ ๋ฐฉ์ง€
  • ์žฌ์ „์†ก ๋ฉ”์ปค๋‹ˆ์ฆ˜: ํŒจํ‚ท ์†์‹ค ์‹œ ์žฌ์ „์†ก์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ์™„์ „์„ฑ์„ ์œ ์ง€
  • ๋™์  ๋น„ํŠธ๋ ˆ์ดํŠธ ์กฐ์ •: ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ผ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ •ํ•˜์—ฌ ์ŠคํŠธ๋ฆฌ๋ฐ ํ’ˆ์งˆ์„ ์ตœ์ ํ™”
  • ๋ฐฉํ™”๋ฒฝ ์šฐํšŒ: UDP ๊ธฐ๋ฐ˜์ด์ง€๋งŒ, NAT ๋ฐ ๋ฐฉํ™”๋ฒฝ ํ™˜๊ฒฝ์—์„œ๋„ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘

์žฅ์ 

  1. ๋ณด์•ˆ: RTMP์™€ ๋‹ฌ๋ฆฌ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ณด์•ˆ์„ฑ์ด ๋›ฐ์–ด๋‚จ
  2. ์‹ ๋ขฐ์„ฑ: ๋ถˆ์•ˆ์ •ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋„ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅ
  3. ์œ ์—ฐ์„ฑ: ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ์กฐ๊ฑด์— ์ ์‘ํ•˜์—ฌ ์ตœ์ ์˜ ์ŠคํŠธ๋ฆฌ๋ฐ ํ’ˆ์งˆ ์ œ๊ณต
  4. ํ™•์žฅ์„ฑ: ๋Œ€๊ทœ๋ชจ ์ŠคํŠธ๋ฆฌ๋ฐ ํ™˜๊ฒฝ์—์„œ๋„ ํšจ์œจ์ ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ
  5. ์˜คํ”ˆ ์†Œ์Šค: ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์„ ํ†ตํ•ด ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ๋จ

๋‹จ์ 

  1. ์ฑ„ํƒ๋ฅ : RTMP์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์ตœ๊ทผ์— ๋“ฑ์žฅํ•œ ํ”„๋กœํ† ์ฝœ๋กœ, ๊ธฐ์กด ์ธํ”„๋ผ์™€์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  2. ์„ค์ • ๋ณต์žก์„ฑ: ์ดˆ๊ธฐ ์„ค์ •๊ณผ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๊ธฐ์ˆ ์ ์ธ ์ง€์‹์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ

RTMP์™€ SRT์˜ ๋น„๊ต

ํŠน์ง• RTMP SRT
๋ณด์•ˆ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ ๊ธฐ๋Šฅ ์—†์Œ (RTMPS๋กœ ๋ณด์•ˆ ๊ฐ•ํ™” ๊ฐ€๋Šฅ) AES ์•”ํ˜ธํ™” ๋‚ด์žฅ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ ๊ฐ•ํ™”
์ „์†ก ํ”„๋กœํ† ์ฝœ TCP ๊ธฐ๋ฐ˜ UDP ๊ธฐ๋ฐ˜
์‹ ๋ขฐ์„ฑ TCP์˜ ์‹ ๋ขฐ์„ฑ ์ œ๊ณต, ๊ทธ๋Ÿฌ๋‚˜ ๋„คํŠธ์›Œํฌ ๋ณ€๋™์„ฑ์— ์ทจ์•ฝ ํŒจํ‚ท ์†์‹ค ๋ณต๊ตฌ, ๋„คํŠธ์›Œํฌ ๋ณ€๋™์„ฑ์— ๊ฐ•ํ•œ ๋‚ด์„ฑ
์ง€์—ฐ ์‹œ๊ฐ„ ๋‚ฎ์Œ ๋‚ฎ์Œ
๋ฐฉํ™”๋ฒฝ ์šฐํšŒ ์ „์šฉ ํฌํŠธ ์‚ฌ์šฉ, ๋ฐฉํ™”๋ฒฝ ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ NAT ๋ฐ ๋ฐฉํ™”๋ฒฝ ํ™˜๊ฒฝ์—์„œ๋„ ์•ˆ์ •์  ๋™์ž‘
ํ™•์žฅ์„ฑ ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์ถ”๊ฐ€ ์„ค์ • ํ•„์š” ๋Œ€๊ทœ๋ชจ ์ŠคํŠธ๋ฆฌ๋ฐ ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ
์˜คํ”ˆ ์†Œ์Šค ์•„๋‹ˆ์˜ค ์˜ˆ (์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ)

5๏ธโƒฃย MPEG-DASH (Dynamic Adaptive Streaming over HTTP)

  • ์„ค๋ช…: ISO ํ‘œ์ค€์˜ HTTP ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ๋กœ, ์ ์‘ํ˜• ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ง€์›ํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ๋ฏธ๋””์–ด ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠน์ง•: ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€, ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ๊ณผ ํ˜ธํ™˜.

LiBoo

ํŒ€

๊ณตํ†ต

๋ฏผ์ง€

์˜๊ธธ

์ค€์„œ

์ง€์ˆ˜

์ฐฝํ˜„

๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ

ํšŒ์˜๋ก

๋ฐœํ‘œ

์ผ๊ธฐ์žฅ

Clone this wiki locally