
๋ค์ด๊ฐ๋ฉฐ
์ค์๊ฐ ์์ ์คํธ๋ฆฌ๋ฐ ์์คํ
์ ๊ตฌ์ถํ ๋ ๊ฐ์ฅ ๋จผ์ ๋ฑ์ฅํ๋ ํ๋กํ ์ฝ์ด ๋ฐ๋ก 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 ๋น๊ต ๊ธ์ ์์ฑํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
'๋คํธ์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์๋ฒ์ ํน์ ํฌํธ๊ฐ ์ด๋ ค์๋์ง ๊ฐ๋จํ๊ฒ ์ฒดํฌํ๊ธฐ (0) | 2025.05.23 |
|---|---|
| QoS, Traffic Shaping, Traffic Policing (0) | 2024.12.18 |
๋๊ธ