๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋„คํŠธ์›Œํฌ

RTSP(์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์ œ์–ด ํ”„๋กœํ† ์ฝœ)์ด๋ž€?

by ์„œ์•„๋ž‘๐Ÿ˜ƒ 2025. 11. 16.

 

 

๋“ค์–ด๊ฐ€๋ฉฐ

์‹ค์‹œ๊ฐ„ ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋“ฑ์žฅํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด ๋ฐ”๋กœ RTSP(Real Time Streaming Protocol)์ž…๋‹ˆ๋‹ค.
๋ณด์•ˆ ์นด๋ฉ”๋ผ, CCTV ๊ด€์ œ, ๋”ฅ๋Ÿฌ๋‹ ์˜์ƒ ๋ถ„์„, ๋ฐฉ์†ก ์‹œ์Šคํ…œ ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ์‹ค์‹œ๊ฐ„ ์˜์ƒ ์ธํ”„๋ผ์—์„œ ํ‘œ์ค€์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฆ„๊ณผ ๋‹ฌ๋ฆฌ RTSP๋Š” “์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ”์ด ์•„๋‹™๋‹ˆ๋‹ค. RTSP์˜ ๋ณธ์งˆ์€ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

1. RTSP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

RTSP(Real Time Streaming Protocol)๋Š” ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆผ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์›น์—์„œ HTTP๊ฐ€ ๋ฌธ์„œ ์š”์ฒญ๊ณผ ์ „์†ก์„ ์ œ์–ดํ•˜๋“ฏ, RTSP๋Š” ์˜์ƒ·์Œ์„ฑ ์ŠคํŠธ๋ฆผ์„ ์š”์ฒญํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” “๋ฆฌ๋ชจ์ปจ ์—ญํ• ”์„ ํ•ฉ๋‹ˆ๋‹ค.

RTSP๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ŠคํŠธ๋ฆผ ์žฌ์ƒ ์š”์ฒญ: PLAY
  • ์ŠคํŠธ๋ฆผ ์ผ์‹œ์ •์ง€: PAUSE
  • ์ŠคํŠธ๋ฆผ ์ค‘๋‹จ: TEARDOWN
  • ์ŠคํŠธ๋ฆผ ์ •๋ณด ์กฐํšŒ: DESCRIBE
  • ์ŠคํŠธ๋ฆผ ์ „์†ก ๊ฒฝ๋กœ ์„ค์ •: SETUP

์ฆ‰, RTSP๋Š” ์‹ค์ œ ์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹ˆ๋ผ,
์ŠคํŠธ๋ฆฌ๋ฐ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ œ์–ด ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์€ RTP(Real Time Transport Protocol)์ž…๋‹ˆ๋‹ค. RTSP๋Š” RTP๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

2. RTSP์™€ RTP์˜ ๊ด€๊ณ„

RTSP๋Š” ์ข…์ข… ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœํ† ์ฝœ ์ „์ฒด๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€๋งŒ, ์‹ค์ œ ์ „์†ก ์—ญํ• ์€ RTP(Real-time Transport Protocol)๊ฐ€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๊ด€๊ณ„๋ฅผ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • RTSP = ์ œ์–ด
  • RTP = ์˜์ƒ/์Œ์„ฑ ๋ฐ์ดํ„ฐ ์ „์†ก
  • RTCP = ์ „์†ก ํ’ˆ์งˆ ๊ด€๋ฆฌ

RTSP๋Š” “PLAY ์š”์ฒญ”์„ ๋ณด๋‚ด๋ฉด,
์„œ๋ฒ„๋Š” ์ดํ›„ RTP๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ H.264/H.265, AAC ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ตฌ์กฐ ๋•๋ถ„์— RTSP๋Š” ์ง€์—ฐ์ด ์ž‘๊ณ  ์•ˆ์ •์ ์ธ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. RTSP ํ”„๋กœํ† ์ฝœ์˜ ๋™์ž‘ ํ๋ฆ„

RTSP๋Š” HTTP์™€ ๊ตฌ์กฐ๊ฐ€ ๋น„์Šทํ•œ request/response ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„(IP ์นด๋ฉ”๋ผ ๋˜๋Š” ๋ฏธ๋””์–ด ์„œ๋ฒ„)์— ๋ณด๋‚ด๋Š” ์š”์ฒญ์˜ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1) OPTIONS

์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋Š” RTSP ๋ช…๋ น์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

2) DESCRIBE

์˜์ƒ ์ŠคํŠธ๋ฆผ์˜ ์ƒ์„ธ ์ •๋ณด(SDP)๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋ฑ, ํŠธ๋ž™ ์ •๋ณด, ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

3) SETUP

RTP๋ฅผ ์–ด๋–ค ํฌํŠธ๋กœ ์ „์†กํ• ์ง€ ํ˜‘์ƒํ•ฉ๋‹ˆ๋‹ค.

4) PLAY

์‹ค์ œ ์ŠคํŠธ๋ฆฌ๋ฐ ์‹œ์ž‘ ๋ช…๋ น์ž…๋‹ˆ๋‹ค.
์ดํ›„ ์„œ๋ฒ„๋Š” RTP ํŒจํ‚ท์„ ์ง€์†์ ์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

5) PAUSE

์žฌ์ƒ ์ผ์‹œ์ •์ง€.

6) TEARDOWN

์ŠคํŠธ๋ฆฌ๋ฐ ์„ธ์…˜ ์ข…๋ฃŒ.

์ด์ œ ์ „์ฒด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค. RTSP๋Š” ์ŠคํŠธ๋ฆผ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ณ , RTP ์ „์†ก ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜๋ฉฐ, ์žฌ์ƒ๊ณผ ์ค‘์ง€๋ฅผ ์ง€์‹œํ•˜๋Š” ์ œ์–ด์ž์ž…๋‹ˆ๋‹ค.

 

4. RTSP๊ฐ€ ๋„๋ฆฌ ์“ฐ์ด๋Š” ์ด์œ 

RTSP๋Š” ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์—ฐ์ด ๋งค์šฐ ์ ๋‹ค (Low Latency)

RTP ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์‹œ๊ฐ„์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์›น ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆฌ๋ฐ(HLS, DASH)๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ์žฌ์ƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์ฝ”๋ฑ๊ณผ ์žฅ๋น„์—์„œ ํ‘œ์ค€ ์ง€์›

๊ฑฐ์˜ ๋ชจ๋“  IP ์นด๋ฉ”๋ผ๊ฐ€ RTSP๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ NVR, DVR, ๊ด€์ œ ์†”๋ฃจ์…˜๋„ RTSP ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค.

FFmpeg, GStreamer ๋“ฑ ์˜คํ”ˆ์†Œ์Šค์™€ ํ˜ธํ™˜์„ฑ ๋†’์Œ

๋ฏธ๋””์–ด ์ฒ˜๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๋™๋˜์–ด ๊ฐœ๋ฐœ๋„ ์‰ฌ์šด ํŽธ์ž…๋‹ˆ๋‹ค.

 

5. RTSP์˜ ๋Œ€ํ‘œ์ ์ธ ํ™œ์šฉ ๋ถ„์•ผ

1) IP Camera / CCTV ์ŠคํŠธ๋ฆฌ๋ฐ

๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ RTSP ์‚ฌ์šฉ์ฒ˜์ด๋‹ค.
๊ด€์ œ ์‹œ์Šคํ…œ(NVR, CMS), ์˜์ƒ ๋ถ„์„ AI, ์Šค๋งˆํŠธ ์‹œํ‹ฐ ๊ด€์ œ ๋“ฑ์—์„œ ํ‘œ์ค€์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

2) RTSP → WebRTC ๊ฒŒ์ดํŠธ์›จ์ด

๋ธŒ๋ผ์šฐ์ €๋Š” RTSP๋ฅผ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ,
์„œ๋ฒ„์—์„œ๋Š” RTSP ์ŠคํŠธ๋ฆผ์„ WebRTC๋กœ ๋ณ€ํ™˜ํ•ด ์ดˆ์ €์ง€์—ฐ ์žฌ์ƒ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

3) ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ์˜์ƒ ๋ถ„์„ ์‹œ์Šคํ…œ

RTSP ์ŠคํŠธ๋ฆฌ๋ฐ → ๋””์ฝ”๋”ฉ → GPU(Intel/NVIDIA)์—์„œ ์ถ”๋ก (Inference)

4) ๋ฐฉ์†ก/ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ

SDI → IP ์ „ํ™˜ ๊ธฐ์ˆ ์—์„œ RTP/RTSP๊ฐ€ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค.

5) ๋กœ๋ณดํ‹ฑ์Šค·๋“œ๋ก  ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ

์ €์ง€์—ฐ์ด ํ•„์ˆ˜์ธ ์‚ฐ์—…์—์„œ RTSP๋Š” ์—ฌ์ „ํžˆ ๊ฐ•๋ ฅํ•œ ์„ ํƒ์ง€์ž…๋‹ˆ๋‹ค.

 

6. RTSP ์ œ์–ด ์ฝ”๋“œ ์˜ˆ์‹œ (Python)

Python์€ RTSP ํ…Œ์ŠคํŠธ์™€ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ธฐ๋ณธ์ ์ธ RTSP ์ œ์–ด ์ฝ”๋“œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

import socket

def send_rtsp(sock, message):
    sock.send(message.encode())
    data = sock.recv(4096).decode()
    print(data)
    return data

host = "192.168.0.101"
port = 554
stream = "rtsp://192.168.0.101/stream1"

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))

cseq = 1

# OPTIONS
send_rtsp(sock, f"OPTIONS {stream} RTSP/1.0\r\nCSeq: {cseq}\r\n\r\n")
cseq += 1

# DESCRIBE
send_rtsp(sock,
    f"DESCRIBE {stream} RTSP/1.0\r\nCSeq: {cseq}\r\nAccept: application/sdp\r\n\r\n"
)
cseq += 1

์ด์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ SETUP, PLAY, PAUSE ๋“ฑ์„ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

7. RTSP ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๊ธฐ์ˆ  ์Šคํƒ

RTSP ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์˜ ๊ธฐ์ˆ ์„ ํ•จ๊ป˜ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • RTP/RCTP ํŒจํ‚ท ๊ตฌ์กฐ ์ดํ•ด
  • H.264 / H.265 NAL ๋‹จ์œ„ ๊ตฌ์กฐ
  • FFmpeg, GStreamer ํ™œ์šฉ
  • ONVIF ํ”„๋กœํ† ์ฝœ (์นด๋ฉ”๋ผ ์ œ์–ด)
  • GPU ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ(CUDA, NVENC/NVDEC)
  • WebRTC (๋ธŒ๋ผ์šฐ์ € ์‹ค์‹œ๊ฐ„ ์žฌ์ƒ)

RTSP๋Š” ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
๋น„๋””์˜ค ์ฒ˜๋ฆฌ / ๋ถ„์„ / ์ „์†ก ํŒŒ์ดํ”„๋ผ์ธ ์ „์ฒด์™€ ๊ฒฐํ•ฉ๋˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

 

๋งˆ๋ฌด๋ฆฌ

RTSP๋Š” ๋‹จ์ˆœํ•œ “์˜์ƒ URL” ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ์˜์ƒ ์ „์†ก์˜ ์ „์ฒด ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ํ•ต์‹ฌ ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ,
์ง€์—ฐ์ด ์ ๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ๋‹ค์–‘ํ•œ ์žฅ๋น„์™€ ํ‘œ์ค€์— ํญ๋„“๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฐœ๋ฐœ์—์„œ๋Š” RTSP๋ฅผ ์ค‘์‹ฌ์œผ๋กœ RTP, ์ฝ”๋ฑ, FFmpeg ๋“ฑ์˜ ๊ธฐ์ˆ ์ด ์œ ๊ธฐ์ ์œผ๋กœ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. RTSP๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋ฉด ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์‹œ์Šคํ…œ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋” ๊นŠ์ด ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์—๋Š” RTSP vs WebRTC ๋น„๊ต ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€