C# : Chzzk(치지직) VOD / Clip 다운로더

2026. 3. 20. 15:46·C#

CHZZK VOD/CLIP 다운로더 개발기 (C# WinForms)

치지직 VOD와 CLIP을 로컬로 저장하고, VOD 구간 채팅까지 함께 보관하는 도구를 개발했다.
목표는 단순 다운로드 기능이 아니라, 응답 구조 변경에 덜 깨지는 안정성과 유지보수 가능한 코드 구조를 확보하는 것이었다.

 

몇년전 트위치에서는 다시보기 영상을 구간 다운로드, 클립 다운, 영상 채팅 로그 수집 등이 가능한 앱들이 있었다.

하지만 어느순간 하나둘씩 사용할 수 없게되었고, 치지직에는 유사 앱이 거의 존재하지 않게 됐다.

그나마 풀려있는 치지직 다운로더는 광고 떡칠이라 불편해서 못 쓸 지경이었다.

 

그래서 다음 기능을 하나의 앱으로 통합했다.

  • VOD/CLIP 모드 전환
  • 해상도 선택 + 구간 다운로드
  • VOD 채팅 저장(JSON/SRT/TXT)
  • ffmpeg 기반 미디어 처리

 


핵심 기술

1) API 복원력 설계

ChzzkApiClient를 단일 호출 구조로 두지 않았다.
CLIP 조회는 여러 경로를 순차 시도하는 fallback 체인으로 구성했다.

  • service clips 계열 호출
  • play-info/clip 호출
  • 페이지/임베드 파싱
  • 프로브 엔드포인트 탐색

핵심은 "하나가 실패해도 다음 경로로 복구"하는 구조다.

2) ffmpeg 인자 분기 전략

초기에는 입력 타입과 무관하게 동일 옵션을 넣어 오류가 발생했다.
HLS(.m3u8)와 direct mp4 입력을 분리해 인자를 다르게 적용했다.

  • HLS 입력: allowed_extensions, extension_picky, protocol_whitelist 적용
  • direct mp4 입력: HLS 전용 옵션 제거

결과적으로 CLIP/VOD 모두 안정적으로 처리되도록 정리했다.

3) UI-도메인-인프라 분리

WinForms 특성상 한 파일에 로직이 몰리기 쉽다.
유지보수를 위해 화면 코드를 역할별 partial로 분리했다.

  • MainForm.Layout.cs: 배치/레이아웃
  • MainForm.Actions.cs: 이벤트/동작
  • MainForm.cs: 상태/초기화

서비스 계층은 VideoDownloadService로 묶고, 외부 연동은 Infrastructure로 분리했다.


개발 결과

다운로드 모델 정리

초기에는 VOD 중심 모델을 CLIP에도 적용하려 했으나 실패했다.
리팩토링 후 DownloadRequest를 StreamUrl 중심으로 단순화해 VOD/CLIP 공통 경로를 만들었다.

  • VOD: 해상도 조회, 구간 다운로드, 오디오 추출 동작
  • CLIP: URL 기반 메타 조회 및 다운로드 동작
  • 채팅: 구간 기준 JSON/SRT/TXT 저장 동작
  • UI: 모드 전환과 작업 로그 흐름 안정화

실사용 기준으로 주요 흐름은 정상 동작하는 상태를 확보했다.

한계와 다음 단계

  • ffmpeg는 외부 의존이라 배포 환경에서 PATH 이슈가 발생할 수 있다.
  • API 응답 포맷 변경은 계속 발생할 수 있어 fallback 경로를 주기적으로 보완해야 한다.
  • 대용량 VOD 처리 시 재시도/네트워크 복구 정책을 더 강화할 여지가 있다.

 

 

 

 

GitHub 링크 : https://github.com/Ellug/ChzzkLiveDownloader

 

'C#' 카테고리의 다른 글

C# : GameJob 신규 공고 알람 앱 - WPF(MVVM), HttpClient, SQLite, Windows Toast  (0) 2026.04.14
C# - 델리게이트(Delegae). 람다식과 캡쳐, 클로져 문제 (feat. useState)  (0) 2025.11.04
VisualStudioCode(VSC) 에서 한글 깨짐 이슈  (0) 2025.10.28
Design Pattern - Singleton Pattern (싱글톤 패턴)  (0) 2025.10.20
Design Pattern - Adapter Pattern (어댑터 패턴)  (0) 2025.10.17
'C#' 카테고리의 다른 글
  • C# : GameJob 신규 공고 알람 앱 - WPF(MVVM), HttpClient, SQLite, Windows Toast
  • C# - 델리게이트(Delegae). 람다식과 캡쳐, 클로져 문제 (feat. useState)
  • VisualStudioCode(VSC) 에서 한글 깨짐 이슈
  • Design Pattern - Singleton Pattern (싱글톤 패턴)
ellug
ellug
Web / App / Game Dev
  • ellug
    dev.ellug
    ellug
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • Javascript (React, Next) (1)
      • C# (66)
      • Graphics (1)
      • Unity (25)
      • 프로그래머스 (0)
        • Lv.0 (0)
        • Lv.1 (0)
        • Lv.2 (0)
        • Lv.3 (0)
      • AI Agent (0)
      • StableDiffusion (0)
      • ETC (1)
      • 잡담 (0)
      • 유머 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    stack
    function
    unity
    클래스
    터미널
    firebase
    스택
    네트워크
    Network
    콘솔
    Queue
    유니티
    interface
    delegate
    게임
    알고리즘
    Photon
    inputsystem
    최적화
    큐
    console
    자료구조
    C#
    useState
    추상 클래스
    class
    Design Pattern
    list
    struct
    Abstract
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
ellug
C# : Chzzk(치지직) VOD / Clip 다운로더
상단으로

티스토리툴바