본문으로 건너뛰기

비디오 서버 개요

Connect Base 비디오 서버는 동영상 업로드, 트랜스코딩, HLS 스트리밍과 채널/플레이리스트/Shorts/멤버십/슈퍼챗까지 갖춘 동영상 플랫폼 백엔드입니다.

⚠️ cb.video SDK 와 백엔드 라우트는 현재 정렬이 진행 중입니다 (2026-04 기준). 일부 메서드는 호출 시 404/405 가 반환됩니다. 각 페이지 상단의 동작 여부 표를 반드시 확인하세요.

확실히 동작하는 메서드 (요약): list, get, update, delete, getStreamUrl, waitForReady, getShortsFeed, getTrendingShorts, getShorts, getTrendingVideos, subscribeChannel / unsubscribeChannel, getSuperChats, getComments, deleteComment, likeVideo (토글), addToPlaylist / removeFromPlaylist, storage.listVideos / getVideo / deleteVideo / getStreamUrl / getTranscodeStatus (storage 서브 네임스페이스).

현재 동작하지 않는 메서드 (정렬 대기): 최상위 upload (init/chunk 경로 mismatch), storage.upload (chunk 단계 POST vs PUT), getThumbnails, getTranscodeStatus / retryTranscode (최상위), unlikeVideo, postComment (잘못된 경로 — 백엔드는 POST /v1/public/comments), createPlaylist / getPlaylists / getPlaylistItems (잘못된 경로), getWatchHistory / clearWatchHistory / reportWatchProgress, 채널 CRUD (createChannel / getChannel / getChannelByHandle / updateChannel), 멤버십 (getMembershipTiers / joinMembership / cancelMembership), sendSuperChat, getRecommendations / getHomeFeed / getRelatedVideos / submitFeedback, storage.create / list / get / update / delete (스토리지 컨테이너 CRUD).

정렬 전까지는 raw fetch 로 백엔드 경로를 직접 호출하세요. 각 섹션에 우회 예제가 있습니다.

주요 기능

  • 청크 업로드: ⚠️ cb.video.uploadcb.video.storage.upload 둘 다 chunk 단계 정렬 대기 — 현재는 raw fetch 만 안전
  • 트랜스코딩: FFmpeg 기반 멀티 화질 (cb.video.waitForReady 로 대기)
  • HLS 스트리밍: 적응형 비트레이트 (cb.video.getStreamUrl)
  • DRM: AES-128 암호화 (response의 encryption 필드)
  • Shorts 피드: cb.video.getShortsFeed, cb.video.getTrendingShorts
  • 커뮤니티: 댓글 조회(getComments)·삭제(deleteComment), 좋아요 토글(likeVideo), 구독(subscribeChannel) — 댓글 작성은 raw fetch 필요
  • 수익화: 멤버십·슈퍼챗 — 백엔드 라우트는 존재하지만 SDK 메서드와 경로 정렬이 진행 중 (채널 관리 참고)

아키텍처

클라이언트 ──▶ cb.video.upload (청크 업로드) ──▶ 원본 저장 ──▶ 트랜스코딩
                                                              │
                                                              ▼
       HLS 플레이어 ◀── CDN ◀── HLS 세그먼트 저장

빠른 시작

typescript
import ConnectBase from 'connectbase-client'

const cb = new ConnectBase({ publicKey: 'cb_pk_...' })

// 비디오 목록 조회 (기본 스토리지)
const list = await cb.video.list({
    status: 'ready',
    visibility: 'public',
    limit: 20
})
console.log(list.videos)

// 스트림 URL 가져오기
const streamInfo = await cb.video.getStreamUrl('video-id')
console.log(streamInfo.stream_url)

SDK 설치

bash
npm install connectbase-client