Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Offline YouTube Playlist Downloader & Merger with FastAPI, React, and FFmpeg

Description and use

TubeMerger is a local desktop app that downloads YouTube playlists, normalizes clips, merges them into a single MP4 with chapters, and streams real‑time progress via SSE.

Problem

Web‑based video downloaders limit duration, show pop‑ups, and produce many unsorted files, making offline playlist handling cumbersome.

Outcome

TubeMerger delivers a lightweight, cross‑platform desktop app that downloads YouTube playlists locally, normalizes heterogeneous clips, merges them into a single MP4 with chapters, and provides real‑time progress via SSE—all without cloud dependencies or privacy leaks.

Workflow

  • 1. User selects a YouTube playlist URL in the React UI.
  • 2. FastAPI backend uses yt‑dlp to download each video clip locally.
  • 3. Each clip is passed through an FFmpeg normalization command (scale, pad, set SAR, fps, re‑encode audio to 44.1 kHz AAC).
  • 4. Normalized clips are listed in a concat list file.
  • 5. FFmpeg concatenates the clips using the concat demuxer, attaching a generated metadata file to inject MP4 chapter atoms.
  • 6. The merged MP4 is saved locally and opened in the user’s media player.
  • 7. Throughout the process, FastAPI streams progress events via SSE to the React frontend, updating download speed, encoding status, and ETA.

Evidence

TubeMerger uses a decoupled, local‑first stack: React 19 + TypeScript + Vite + Tailwind CSS, PyWebView, FastAPI, yt‑dlp, and FFmpeg.

Source

By enforcing a locked frame rate, consistent canvas size, and uniform audio, the downstream concat demuxer runs seamlessly without audio drops or stuttering.

Source

The FastAPI backend pushes live progress metrics to the React frontend using Server‑Sent Events.

Source

  • Record date: 2026-09-16T10:15:38.411Z