Skip to content

치지직(Chzzk) 방송 실시간 기록 자동화 시스템 실시간 스트림을 수집하고, 오디오/이미지를 분할 저장하여 MinIO에 업로드하고, 메타데이터를 PostgreSQL에 기록하는 NestJS 기반 백엔드입니다.

License

Notifications You must be signed in to change notification settings

doominkim/stream-chat-monitor

Repository files navigation

stream-chat-monitor

프로젝트 소개

네이버 치지직(Chzzk) 방송의 실시간 스트림을 자동으로 수집하고, 오디오와 이미지를 분할 저장하여 MinIO 오브젝트 스토리지에 업로드하며, 각 파일의 메타데이터를 데이터베이스에 기록하는 NestJS 기반의 백엔드 시스템입니다.

주요 목적

  • 방송 기록 자동화
    치지직 방송이 시작되면 streamlink를 통해 방송 스트림을 받아오고, ffmpeg로 오디오와 이미지를 일정 간격으로 분할 저장합니다.
    방송이 종료되면 관련 프로세스를 안전하게 종료하고, 불필요한 임시 파일을 정리합니다.

  • 파일 업로드 및 관리
    분할된 오디오(.aac)와 이미지(.jpg) 파일은 MinIO에 업로드되며, 업로드 경로는 방송 채널, 라이브 ID, 파일 타입(오디오/이미지)에 따라 자동으로 분기됩니다.
    업로드가 완료된 파일의 경로, 크기, 타입, 생성 시각 등 메타데이터는 데이터베이스에 저장되어, 추후 검색이나 통계, 관리에 활용할 수 있습니다.

  • 동시 다채널 지원
    여러 치지직 채널의 방송을 동시에 감시하고, 각 채널별로 독립적인 프로세스와 파일 저장 경로를 관리합니다.
    중복 실행 방지, 프로세스 충돌 방지, 장애 발생 시 자동 복구 등 실서비스 환경에서의 안정성을 고려한 구조입니다.

  • 자동 정리 및 유지보수
    일정 기간(24시간) 이상 지난 파일이나, 디렉토리 용량이 10GB를 초과할 경우 자동으로 임시 파일을 정리합니다.
    이로써 저장소 용량을 효율적으로 관리하고, 불필요한 리소스 낭비를 방지합니다.

활용 예시

  • 치지직 방송의 하이라이트 오디오/이미지 자동 백업
  • 방송별 파일 통계 및 검색
  • 여러 채널의 방송을 동시에 기록하는 멀티 채널 아카이빙

기술 스택

  • NestJS: 모듈화된 서비스 구조, 의존성 주입, 확장성
  • TypeORM: 파일 메타데이터 DB 관리
  • MinIO: 오브젝트 스토리지(파일 업로드/다운로드)
  • streamlink/ffmpeg: 실시간 스트림 수집 및 분할 저장
  • postgresql: RDB

이 프로젝트는 실제 운영 환경에서의 자동화, 확장성, 안정성, 유지보수 편의성을 모두 고려하여 설계되었습니다.
방송 기록 자동화, 파일 관리, 스토리지 최적화가 필요한 다양한 상황에 유용하게 활용할 수 있습니다.

About

치지직(Chzzk) 방송 실시간 기록 자동화 시스템 실시간 스트림을 수집하고, 오디오/이미지를 분할 저장하여 MinIO에 업로드하고, 메타데이터를 PostgreSQL에 기록하는 NestJS 기반 백엔드입니다.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published