관리자가 채널을 발급하면 RTMPS · SRT · WebRTC 송출 키와 HLS · DASH 시청 URL이 한 번에 나옵니다. 방송자는 OBS·iOS 앱으로 즉시 송출, 시청자는 표준 플레이어로 봅니다.
# 채널 발급 직후 어드민이 보여주는 값
channel_id "ch_8af9c0e2"
status live
protocol "RTMPS"
rtmps_url "rtmps://live.rtmp.kr:443/live/"
stream_key "sk_live_5f3a…b21e"
playback "https://watch.rtmp.kr/v/ch_8af9c0e2.m3u8"
# 저지연 / 패킷 손실 보정용 SRT 송출
channel_id "ch_8af9c0e2"
status idle
protocol "SRT"
srt_url "srt://live.rtmp.kr:9999"
srt_stream_id "#!::r=ch_8af9c0e2,m=publish"
srt_passphrase "pp_a91c…7e02"
# 1초 미만 지연 — WHIP 송출
channel_id "ch_8af9c0e2"
status live
protocol "WebRTC / WHIP"
whip_url "https://whip.rtmp.kr/ch_8af9c0e2"
whep_url "https://whep.rtmp.kr/ch_8af9c0e2"
ice_servers [ stun:stun.rtmp.kr ]
세 역할이 명확하게 분리됩니다. 누구도 Cloudflare 콘솔을 직접 만질 필요가 없습니다.
웹 어드민에서 유저별로 채널을 1클릭 발급. Cloudflare Live Input이 백그라운드에서 자동 프로비저닝됩니다.
OBS / vMix / iOS 앱 / WHIP 클라이언트 — 무엇이든 좋습니다. Server와 Stream Key 두 줄로 끝.
표준 매니페스트 URL 하나면 끝. Cloudflare 글로벌 엣지에서 직접 서빙되므로 별도 CDN이 필요 없습니다.
채널을 한 번 발급하면 RTMPS · SRT · WebRTC 송출 엔드포인트와 HLS · DASH · WHEP 시청 URL이 동시에 발급됩니다. 방송자는 상황에 맞는 프로토콜을 골라 쓰면 그만입니다.
OBS, vMix, FFmpeg 등 표준 인코더를 위한 가장 보편적인 송출 경로.
불안정한 네트워크에서도 패킷 손실을 보정하는 저지연 전송 — 모바일·필드 송출에 최적.
브라우저에서 1초 미만 지연으로 송출. 인터랙티브 라이브, 스트리머 인터뷰 등에 사용.
셀러·강사·방송자별 채널을 한 화면에서 관리합니다. 조회는 자체 DB로 — Cloudflare API rate limit (5분당 1,200 req)을 걱정할 필요가 없습니다.
유저 단위로 N개 채널을 발급. 채널마다 RTMPS/SRT/WebRTC 키와 HLS/DASH URL이 자동 부여됩니다.
created · live · idle · disabled · errored — Cloudflare 측 상태와 자체 DB가 양방향 동기화됩니다.
삭제는 deleted_at 컬럼으로 흔적을 남깁니다. Cloudflare 생성 후 DB 저장 실패 시 자동 롤백.
HaishinKit 기반 RTMPS 송출 모듈을 내장한 전용 iOS 앱. 세로 9:16 라이브 커머스/숏폼에 최적화되어 있고, 전·후면 카메라를 동시에 쓰는 멀티캠 PIP가 기본 탑재됩니다.
480p / 720p / 1080p · 30fps. 라이브 커머스, 숏폼 라이브에 그대로 맞춰진 비율.
전·후면 동시 캡처. 드래그로 위치 조정, 탭으로 메인-PIP 스왑.
비트레이트 모드 선택. 어드민에서 발급한 rtmps_url + stream_key 입력만으로 즉시 송출.
Cloudflare 자격증명은 서버에만 머무릅니다. 운영자가 조작하는 모든 자원은 권한·롤·토큰 회전으로 보호됩니다.
메모리 보관 Access JWT + httpOnly 쿠키 Refresh Token. 재사용이 탐지되면 해당 subject의 모든 토큰이 일괄 폐기됩니다.
superadmin · admin · user. 채널 발급, 사용자 정지, API 키 생성 등 민감 액션은 역할 단위로 차등 적용됩니다.
채널 목록·상세는 자체 DB로 응답합니다. Cloudflare API는 변경 시점에만 호출 — rate limit을 신경 쓰지 않는 어드민.
Cloudflare 생성 성공 후 DB 저장 실패 시 Cloudflare 측을 자동 롤백. 모든 삭제는 deleted_at으로 이력 보존.
분리형 (FastAPI + Vite React) 또는 통합형 (Next.js 15 + Cloudflare Workers + Prisma) 중에 골라 배포할 수 있습니다.
가입 후 5분이면 첫 송출까지 도달합니다. 30분 임시 채널은 곧 가입 없이도 발급될 예정입니다.