시리즈: 실시간 통화, 어떻게 녹화하는가2/6
- 1.실시간 통화, 왜 녹화해야 하는가
- 2.내 서버에서 직접 녹화한다면 ← 현재 글
- 3.녹화 모드 해부
- 4.M3U8과 TS 파일의 모든 것
- 5.FFmpeg, 미디어의 스위스 아미 나이프
- 6.FFmpeg 실전 파이프라인
내 서버에서 직접 녹화한다면 — On-Premise vs Cloud Recording
"데이터가 반드시 우리 서버에 있어야 합니다." 이 한 마디가 나오는 순간, 편리한 Cloud Recording은 선택지에서 빠집니다. 규제 산업이나 영상 프레임을 실시간 AI로 분석해야 하는 상황이라면, 녹화 파일이 외부 클라우드를 거치는 구조 자체가 문제가 되기 때문입니다. 이 글은 자체 Linux 서버에 Native SDK를 설치하는 On-Premise Recording이 Cloud와 어떻게 다른지, YUV 프레임과 PCM 샘플에 직접 접근해 실시간 AI 파이프라인을 어떻게 구성하는지, 그리고 운영 부담을 감수하고서라도 On-Premise를 골라야 하는 기준은 무엇인지 정리합니다.
목차(19개 항목)
On-Premise Recording이 필요한 순간
- On-Premise Recording SDK 아키텍처
- Recording Engine 내부: 두 가지 모드
- Raw 데이터 접근 — Cloud에 없는 On-Premise만의 강점
Cloud vs On-Premise 의사결정 프레임워크
- 핵심 요약
- 시리즈 네비게이션
- 관련 글
- 참고 자료
"데이터가 반드시 우리 서버에 있어야 합니다." — 이 한 마디가 나오는 순간, Cloud Recording은 선택지에서 빠집니다.
Agora Cloud Recording은 편리하지만 구조적 한계가 있습니다. 녹화 파일이 Agora 인프라를 거쳐 외부 클라우드 스토리지(S3, GCS 등)로 올라갑니다. 규제 산업이나 실시간 AI 처리가 필요한 경우, 이 구조 자체가 문제가 됩니다. On-Premise Recording은 그 대안입니다.
On-Premise Recording이 필요한 순간
1. 데이터 주권 (Data Sovereignty)
GDPR, 의료 규제(HIPAA), 금융 규제(PCI-DSS), 국내 개인정보보호법 — 공통점은 하나입니다. 녹화 데이터가 특정 지역 또는 특정 주체가 통제하는 서버에만 있어야 한다는 것.
헬스케어, 법률, 공공기관 프로젝트에서 자주 마주칩니다. "S3에 올라간다고요? 그럼 안 됩니다."
2. 실시간 Raw 프레임 AI 처리
STT(Speech-to-Text)라면 Cloud Recording으로도 충분합니다. 그런데 비디오 프레임 단위 분석이 필요하다면 얘기가 달라집니다.
- 학습자 집중도 분석 (눈 추적, 시선 방향)
- 실시간 감정 인식
- 이상 행동 탐지 (온라인 시험 감독)
- 얼굴 인식 기반 출결 처리
이런 요구사항은 인코딩된 MP4를 나중에 분석하는 것으로는 해결이 안 됩니다. YUV420 raw 프레임을 실시간으로 꺼내서 모델에 넣어야 합니다.
3. 커스텀 미디어 처리
- 특수 워터마크 (사용자별 고유 마크, 재유통 추적)
- 실시간 자막 합성 (번역 자막을 영상에 직접 burn-in)
- 독자적인 코덱/포맷 요구 (표준 MP4 외)
On-Premise Recording SDK 아키텍처
Cloud Recording이 REST API로 동작하는 것과 달리, On-Premise Recording은 자체 서버에 직접 설치하는 Native SDK입니다.
핵심 차이점 세 가지:
1. 자체 Linux 서버 필수 Ubuntu 18.04+ 또는 CentOS 7.0+. 서버는 직접 운영합니다. (최신 지원 OS는 Agora 문서를 확인하세요.) Agora가 관리하지 않습니다.
2. Native SDK 설치 REST API 호출이 아닙니다. C++ 기반 SDK를 서버에 직접 설치하고, 애플리케이션 코드에서 SDK를 호출합니다.
3. 파일이 로컬 디스크에 저장 MP4가 외부 스토리지로 나가지 않습니다. 서버 디스크에 직접 씁니다. 이후 내부 스토리지로의 이동은 자체 파이프라인으로 처리.
Recording Engine 내부: 두 가지 모드
| 모드 | 출력 | 설명 |
|---|---|---|
| Individual recording | 유저별 별도 파일 | 참가자 A, 참가자 B의 오디오/비디오를 UID별로 분리 저장 |
| Composite recording | 합쳐진 단일 파일 | 모든 스트림이 믹싱된 하나의 파일 |
정정: Agora 공식 문서의 On-Premise Recording 모드 명칭은 Individual recording과 Composite recording입니다. Cloud Recording의 Individual / Mix와 개념이 동일합니다 — 차이는 파일이 내 서버에 떨어진다는 것뿐입니다.
Composite 모드에서는 레이아웃 설정이 가능합니다. 누가 어느 위치에 표시될지, 화면 크기 비율을 어떻게 할지 SDK 설정으로 제어합니다.
⚠️ Raw 데이터 접근에는 모드 제약이 있습니다. Individual 모드에서는 오디오·비디오 raw 데이터를 모두 캡처할 수 있지만, Composite 모드는 raw 오디오만 지원합니다. 프레임 단위 비디오 AI 처리가 목적이라면 Individual 모드를 써야 합니다. [NEEDS VERIFICATION] (SDK 버전에 따라 달라질 수 있으니 공식 문서의 raw-data 페이지로 최종 확인)
Raw 데이터 접근 — Cloud에 없는 On-Premise만의 강점
On-Premise SDK가 Cloud Recording과 본질적으로 다른 이유가 여기에 있습니다.
접근 가능한 Raw 데이터:
- YUV420 프레임 — 디코딩된 비디오 원본 (프레임 단위)
- PCM 샘플 — 디코딩된 오디오 원본 (샘플 단위)
- JPG 스크린샷 — 지정 간격으로 정지 이미지 추출
- 인코딩된 원본 비트스트림 — H.264/H.265 raw stream
YUV420 프레임에 직접 접근한다는 것의 의미:
콜백 함수 형태로 구현합니다. SDK가 프레임을 디코딩할 때마다 등록된 콜백을 호출하고, 거기서 AI 모델 추론을 실행합니다. 레이턴시는 프레임 레이트 수준 — 즉 실시간입니다.
PCM 접근도 마찬가지입니다. 서드파티 STT가 아닌 자체 음성 분석 모델을 실시간으로 돌릴 수 있습니다.
추가 기능
워터마크
세 종류를 지원합니다.
사용자별로 고유한 워터마크를 심는 것도 가능합니다. 녹화 파일이 외부로 유출됐을 때 출처 추적 용도.
스크린샷
라이브 스트림에서 JPG를 지정 간격으로 뽑습니다. 썸네일 생성, 콘텐츠 모더레이션 용도.
암호화 채널 지원
암호화가 걸린 채널도 On-Premise SDK로 녹화 가능합니다. 암호화 키를 SDK에 전달하면 복호화해서 처리합니다. Cloud Recording도 Agora 내장 암호화(encryptionMode/secret 필드)는 지원하지만, 클라이언트만 키를 보유하는 진정한 E2E 암호화(End-to-End Encryption)의 경우 Cloud Recording에서는 복호화가 불가능하므로 On-Premise가 필요합니다.
선택적 녹화
채널에 20명이 있어도 특정 UID만 골라서 녹화할 수 있습니다. 강의 플랫폼에서 강사 화면만 녹화하거나, 주요 참가자만 선택하는 식.
Cloud vs On-Premise 의사결정 프레임워크
7가지 축 비교
| 항목 | Cloud Recording | On-Premise Recording |
|---|---|---|
| 인프라 | Agora 관리 (서버리스) | 자체 Linux 서버 운영 |
| 인터페이스 | REST API | Native SDK (C++) |
| 저장 위치 | 3rd-party 클라우드 스토리지 | 로컬 디스크 |
| 모드 | individual / mix / web | Individual / Composite |
| Raw 데이터 접근 | X | O (YUV, JPG, PCM) |
| 운영 부담 | 낮음 | 높음 (서버 관리 필요) |
| 비용 구조 | 녹화 분당 과금 | 서버 비용 + RTC 과금 |
Decision Tree
대부분의 경우 Cloud Recording으로 충분합니다. On-Premise는 명확한 요구사항이 있을 때만 선택합니다 — 운영 부담이 크기 때문입니다.
서버 관리, SDK 버전 업데이트, 디스크 용량 관리, 장애 대응 — 이 모든 것이 자체 책임입니다. "쉬운 것을 어렵게 하지 않는다"는 원칙 하에, Cloud로 충분한 요구사항에는 Cloud를 씁니다.
핵심 요약
- On-Premise Recording은 Native SDK를 자체 Linux 서버에 설치하는 방식. REST API 기반의 Cloud Recording과 구조적으로 다름
- 파일은 로컬 디스크에 직접 저장 — 외부 스토리지 불필요, 데이터 주권 요구 충족 가능
- YUV420 프레임, PCM 샘플에 직접 접근 가능 — 실시간 AI 추론 파이프라인 구성 가능
- E2E 암호화 채널, 선택적 UID 녹화, 커스텀 워터마크 등 Cloud에 없는 기능 제공
- 운영 부담이 크므로 데이터 주권 또는 실시간 Raw 처리가 명확히 필요할 때만 선택
시리즈 네비게이션
실시간 통화, 어떻게 녹화하는가 시리즈
관련 글
- #12 실시간 통화, 왜 녹화하나 — Cloud Recording Architecture — 비교 대상인 Cloud Recording의 구조와 동작 원리
- #14 녹화 모드 해부 — Individual / Mix / Web — Cloud 측 모드의 내부 파이프라인, 본문 모드 비교의 짝
- #11 Cloud Recording 녹화 파일 저장 — S3 — On-Premise가 피하려는 "외부 스토리지 업로드" 흐름의 실체
- #10 실시간 Agent STT + 번역 구현 — Raw 데이터 없이 STT만 필요할 때의 대안 경로
- #21 소리는 어떻게 숫자가 되는가 — PCM/MP3 — On-Premise SDK가 콜백으로 넘겨주는 PCM 샘플의 정체
참고 자료
- On-Premise Recording Product Overview — SDK 개요, 지원 OS, 모드 정의
- On-Premise Recording — Record raw data — YUV/PCM/JPG raw 데이터 접근과 모드별 제약
- On-Premise Recording — Individual recording — UID별 분리 녹화 설정
- On-Premise Recording — Composite recording — 믹싱·레이아웃·워터마크 설정
- Cloud Recording Product Overview — REST API 기반 Cloud Recording과의 비교 기준