Video Source Category
각 카테고리는 비디오 스트림을 수신하는 방식에 따라 구분되며, 카메라 또는 소스가 데이터를 어떻게 제공하는지에 따라 다릅니다.
- 일부(웹캠, 비디오 파일)는 직접적인 비디오 소스
- 일부(ONVIF, IP 카메라)는 네트워크 기반 스트리밍 프로토콜 사용
- 일부(GStreamer)는 고급 비디오 파이프라인 역할
분류 | 설명 |
웹캠 | USB 카메라 또는 노트북 내장 카메라 → UVC(USB Video Class)로 운영체제가 인식하는 표준 비디오 장치로 처리 |
비디오 파일 | 사전 녹화된 동영상 파일 (MP4, AVI 등) → 실시간이 아닌 저장된 파일 재생 |
디렉토리 | 프레임 순서대로 저장된 이미지 폴더 → 타임랩스나 일괄 처리에 적합 |
ONVIF | IP 카메라용 표준 프로토콜 → RTSP를 통해 실시간 스트리밍 수행 |
스크린 캡처 | 컴퓨터 화면을 비디오 스트림으로 캡처 → 화면 녹화 또는 가상 카메라 용도 |
IP 카메라 | 일반 네트워크 카메라 (ONVIF 여부 무관) → RTSP, HTTP, 또는 자체 프로토콜 사용 |
GStreamer | 멀티미디어 스트림 처리용 프레임워크 → 비디오를 사전에 가공하거나 조합 가능 |
멀티미디어 프레임워크란?
비디오, 오디오, 이미지 등 미디어 데이터를 처리, 스트리밍, 캡처, 렌더링할 수 있도록 도와주는 소프트웨어 라이브러리입니다.
기능 | 항목설명 |
📥 입력 처리 | 파일, 카메라, 마이크, 스트림(RTSP, HTTP 등)으로부터 읽기 |
🔄 처리 및 트랜스코딩 | 압축/해제, 인코딩/디코딩, 필터링, 포맷 변환 등 |
📤 출력 처리 | 파일 저장, 네트워크 스트리밍, 화면 또는 스피커에 출력 |
🧩 파이프라인/플러그인 | 필터, 인코더, 싱크 등을 체인 형태로 연결 가능 |
🔧 대표적인 멀티미디어 프레임워크
프레임워크 | 설명 |
FFmpeg | 인코딩, 디코딩, 스트리밍, 포맷 변환을 위한 커맨드라인 도구 및 라이브러리(libav*) |
GStreamer | 플러그인 기반, 라이브 스트리밍에 적합한 유연한 프레임워크 |
DirectShow | 마이크로소프트의 멀티미디어 프레임워크 (Windows 기반) |
LibVLC | VLC 미디어 플레이어의 백엔드 라이브러리 |
MediaPipe | 구글이 개발한 ML 기반의 미디어 프레임워크 (예: 얼굴 인식 등) |
⚖️ FFmpeg vs GStreamer 비교
기능 | FFmpeg | GStreamer |
인터페이스 | 커맨드라인(단일 명령어) | 요소 기반의 모듈형 파이프라인 |
주요 사용 사례 | 파일 인코딩, 변환, 스트리밍 | 실시간 캡처, 커스텀 미디어 처리 |
지연 최적화 여부 | 낮음 | 실시간 지향 (저지연) |
확장성 | 비교적 제한적 | 매우 유연 (플러그인 방식) |
학습 곡선 | 진입장벽 낮음 | 진입장벽은 있지만 자유도 높음 |
스트리밍 프로토콜
HLS (HTTP Live Streaming)
애플이 개발한 HTTP 기반 스트리밍 프로토콜로, 비디오/오디오를 실시간으로 전송합니다.
→ 동영상을 .ts 세그먼트로 나누고, 재생 방법은 .m3u8 플레이리스트로 정의
장점
- ✅ 네트워크 속도에 따라 화질 자동 조절 (Adaptive)
- ✅ 브라우저 및 모바일 호환성 우수
- ✅ CDN 사용 가능 (대규모 서비스에 적합)
특징내용
🌍 호환성 | Chrome, Firefox, Safari 등 브라우저 지원 |
📶 적응 스트리밍 | 다양한 비트레이트 자동 조절 |
🔄 확장성 | CDN을 통한 대량 사용자 지원 용이 |
RTSP (Real-Time Streaming Protocol)
네트워크를 통한 실시간 제어 프로토콜로, 실시간 카메라 영상 등에 적합
장점
- ✅ 지연시간 낮음 (약 2초)
- ✅ 실시간 스트리밍에 적합 (CCTV, 방송 등)
단점
- ❌ 브라우저 비호환 (VLC 등 별도 플레이어 필요)
- ❌ 대규모 사용자 처리 어려움 (스케일 아웃 어려움)
HLS vs RTSP 비교
항목 | HLS | RTSP |
전송 방식 | HTTP | RTP (Real-time Transport Protocol) |
지연 시간 | 높음 (10~30초) | 낮음 (보통 2초 이하) |
호환성 | 브라우저/모바일/TV 등 광범위 지원 | VLC, OBS 등 별도 플레이어 필요 |
사용 사례 | YouTube, Twitch 등 VOD/라이브 방송 | CCTV, 실시간 감시, RT 카메라 |
스트리밍 구조 | .m3u8 + .ts 세그먼트 방식 | 연속적인 실시간 스트림 전송 |
적응 스트리밍 | 지원 (다중 비트레이트) | 미지원 |
RTSP (Real-Time Streaming Protocol)
- 정의: Real-Time Streaming Protocol
- 역할: 클라이언트(예: VLC)가 서버(예: MediaMTX)에게 멀티미디어 스트림 제어를 요청할 수 있는 응용 계층 프로토콜
- 용도: VOD(Video on Demand), IP 카메라, CCTV 등에서 스트리밍 제어
- 동작: HTTP처럼 요청/응답 구조지만, 멀티미디어 데이터 전송은 RTP를 통해 분리됨
RTSP와 RTP의 관계
- RTSP는 제어 프로토콜로 RTP 세션을 설정해주는 역할
- RTP(Real-time Transport Protocol)는 미디어 데이터 전송용 프로토콜
- 실제 영상/음성 데이터는 RTP(보통 UDP) 로, 제어 명령은 RTSP(TCP) 로 주고받음
- RTCP는 RTP의 상태를 모니터링하기 위한 보조 프로토콜
2. RTSP의 주요 기능
넷플릭스나 유튜브에서 "재생", "일시정지", "뒤로 감기" 버튼을 누르면, 단순히 클라이언트 UI만 멈추는 게 아니라 서버와의 전송 흐름도 달라지는것과 같음
기능 | 설명 |
DESCRIBE | 스트림 메타데이터 요청 (예: 코덱, 트랙 정보 등) |
SETUP | 스트림 트랙별 전송 채널을 설정 (TCP or UDP) |
PLAY | 스트리밍 시작 |
PAUSE | 스트리밍 일시 중지 |
TEARDOWN | 스트리밍 종료 및 세션 해제 |
ANNOUNCE | 서버에 스트림을 등록 (퍼블리셔 역할에서 사용) |
3. RTSP의 전송 방식 (세션 설정 방식)
방식 | 특징 |
UDP (기본) | 빠르지만 NAT, 방화벽, 패킷 손실 문제 있음 |
TCP | 안정적이고 NAT 문제 없음. FFmpeg의 -rtsp_transport tcp |
HTTP 터널링 | 방화벽 회피용. RTSP over HTTP. 기업망에서 사용 |
5. RTSP 동작 예시 (시청자 역할일 때)
- 클라이언트 → DESCRIBE → 서버로부터 SDP 정보 받음
- 클라이언트 → SETUP → RTP 채널 세팅 (포트 or 인터리브)
- 클라이언트 → PLAY → 스트리밍 시작
- 서버 → RTP 전송 시작
- 클라이언트 → TEARDOWN → 세션 종료
6. FFmpeg/MediaMTX에서 RTSP 흐름
- FFmpeg 퍼블리셔 역할:
- ffmpeg -f rtsp -rtsp_transport tcp -i ...
→ 서버(MediaMTX)에 SETUP → ANNOUNCE → RECORD → RTP 송신
- ffmpeg -f rtsp -rtsp_transport tcp -i ...
- MediaMTX 시청자 역할 (VLC 등):
- RTSP URL로 접속 → DESCRIBE → SETUP → PLAY
'개발기술 > 영상처리' 카테고리의 다른 글
임시적인 rtsp생성과 서버 띄우기 ( ffmpeg , mediamtx) (0) | 2025.04.30 |
---|---|
적응형 비트레이트 스트리밍(Adaptive Bitrate Streaming) 설계 (0) | 2025.04.02 |
HLS 프로토콜 튜닝 (0) | 2025.03.30 |
Encoding, Decoding, Frames 개념 (0) | 2025.03.30 |
영상 스트리밍 처리과정 (0) | 2025.03.26 |