Twitch-VOD-Manager/src
xRangerDE 073c1863fe feat: auto-merge resumed live-recording parts via ffmpeg concat
Closes the loop on 4.6.13 auto-resume. A streamlink restart between
two parts produces N separate .mp4 files for what is logically a
single recording, which is fine for reliability but inconvenient
for watching back. Opt-in flag flips that into a single stitched
file post-recording.

concatVideoFiles(inputs, output) writes a temp concat list and runs
ffmpeg with the concat demuxer in copy mode — no re-encode, the
parts get container-stitched in seconds even for multi-hour
recordings. The merged output is named "{base}_merged.mp4" so it
sits next to the parts without colliding.

Two independent toggles:
- auto_merge_resumed_parts (off by default) — runs the merge.
- delete_parts_after_merge (off by default) — drops the originals
  ONLY if the merge produced a non-zero output file. Default-off
  means even if ffmpeg silently produced garbage, the parts stay
  around as the source of truth.

If concat fails for any reason (corrupt segment header, codec
mismatch from a stream that changed quality mid-recording, missing
ffmpeg) the failure is non-fatal: we delete the half-written
merged file and keep the parts. The user always has the original
recordings.

Settings card adds the two checkboxes nested under the existing
auto-resume toggle so the relationship is visually obvious.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 00:29:54 +02:00
..
index.html feat: auto-merge resumed live-recording parts via ffmpeg concat 2026-05-11 00:29:54 +02:00
main.ts feat: auto-merge resumed live-recording parts via ffmpeg concat 2026-05-11 00:29:54 +02:00
preload.ts feat: local archive search — new Archiv tab 2026-05-11 00:26:42 +02:00
renderer-archive.ts feat: local archive search — new Archiv tab 2026-05-11 00:26:42 +02:00
renderer-globals.d.ts feat: auto-merge resumed live-recording parts via ffmpeg concat 2026-05-11 00:29:54 +02:00
renderer-locale-de.ts feat: auto-merge resumed live-recording parts via ffmpeg concat 2026-05-11 00:29:54 +02:00
renderer-locale-en.ts feat: auto-merge resumed live-recording parts via ffmpeg concat 2026-05-11 00:29:54 +02:00
renderer-queue.ts feat: live recording health indicator (green/amber dot per item) 2026-05-10 22:04:53 +02:00
renderer-settings.ts feat: auto-merge resumed live-recording parts via ffmpeg concat 2026-05-11 00:29:54 +02:00
renderer-shared.ts fix: persist expanded details across re-renders, guard drag-drop init against duplicates 2026-03-21 15:03:20 +01:00
renderer-stats.ts feat: archive statistics dashboard 2026-05-11 00:20:14 +02:00
renderer-streamers.ts feat: auto-vod-download — per-streamer VOD toggle + background poller 2026-05-10 21:59:05 +02:00
renderer-texts.ts feat: auto-merge resumed live-recording parts via ffmpeg concat 2026-05-11 00:29:54 +02:00
renderer-updates.ts feat: skip-version + addStreamer validation + smart-scheduler tooltip 2026-05-10 12:14:13 +02:00
renderer.ts feat: local archive search — new Archiv tab 2026-05-11 00:26:42 +02:00
styles.css feat: live recording health indicator (green/amber dot per item) 2026-05-10 22:04:53 +02:00
tools.ts refactor: extract tool discovery functions to src/tools.ts 2026-03-20 10:00:51 +01:00
types.ts feat: live recording health indicator (green/amber dot per item) 2026-05-10 22:04:53 +02:00
update-version-utils.ts chore: migrate repository to Codeberg, bump version to 4.2.0, update update logic 2026-03-01 20:23:21 +01:00