Framegenauer Videoschnitt für MPEG-2, H.264 und H.265 Elementary Streams. Primär entwickelt zum Schneiden von VDR-Aufnahmen (Video Disk Recorder) — Werbung entfernen ohne den gesamten Stream neu zu kodieren. Nur die Frames an den Schnittpunkten werden selektiv neu kodiert.
- MPEG-2 — direktes Stream-Copy, Re-Encoding nur an Schnittpunkten (via libav)
- H.264/H.265 — Smart Cut (~99,5% Stream-Copy, ~0,5% Re-Encode)
- SRT-Untertitel — automatisches Laden, Vorschau-Overlay, Schnitt zusammen mit dem Video
- MKV-Ausgabe mit Kapitelmarken (via libav matroska muxer)
- Landezonen — automatische Erkennung von Schwarzbildern, Stille, Audioformatwechsel, Szenenwechsel, Seitenverhältnisänderungen (4:3/16:9) und Pillarbox (4:3 in 16:9) mit Schnittvorschlägen
- Logo-Erkennung — Senderlogo-Detektion via markad PGM-Import oder manueller ROI-Selektion zur Werbeblock-Navigation
- Zeitsprung — Keyframe-Thumbnail-Browser für schnelle Navigation mit Intervallfilter
- ttcut-demux — Multi-Core TS-Demuxer mit A/V-Sync-Korrektur, Audio-Padding und VDR-Marks-Unterstützung
- Tastaturkürzel für Frame-Navigation und Schnittpunkt-Auswahl (
?für Hilfe)
| Betriebssystem | Linux. Entwickelt und getestet auf Siduction (Debian unstable), das aktuelle Qt- und libav-Versionen bereitstellt |
| Architektur | linux-any — der Quelltext enthält keinen architekturabhängigen Code; getestet wird ausschließlich auf x86_64 |
| Qt | 6.7+ (entwickelt gegen 6.10), C++17 |
| libav/ffmpeg | 5.1 oder neuer — genutzt wird die AVChannelLayout-API, die ältere Versionen nicht kennen. Entwickelt gegen 8.x |
| libmpeg2 | 0.5.1 |
| Grafik | OpenGL für die Videoausgabe (libmpv rendert in ein QOpenGLWidget). Läuft nativ unter Wayland und X11 |
# Build + erforderliche Laufzeit-Bibliotheken
sudo apt install cmake ninja-build qt6-base-dev qt6-l10n-tools libmpeg2-4-dev \
libavformat-dev libavcodec-dev libavutil-dev libswscale-dev \
libavfilter-dev libswresample-dev libmpv-dev
# Optional: MP4-Output, MPEG-2 Multiplexing, Qualitätsprüfung
sudo apt install ffmpeg mjpegtools python3-numpylibmpv ist nicht optional. Der Player ist seit v0.71.0 als Bibliothek eingebunden (in-process Rendering für Wayland), nicht mehr als externer mpv-Prozess — ohne
libmpv-devbricht bereitscmakebeim Konfigurieren ab.
Die elementaren Streams entsprechen in der Summe ungefähr der TS-Aufnahme, und das Schnittergebnis kommt daneben. Bei H.264/H.265 legt der erste Klick auf Play zusätzlich eine temporäre MKV über die gesamte Länge des Streams an (Elementary Streams tragen keine Zeitstempel, die zum Suchen taugen) — sie wird über STOP→PLAY zwischengespeichert und im Temp-Verzeichnis abgelegt. Für eine zweistündige HD-Aufnahme sollte man daher grob das Zweieinhalbfache der Aufnahmegröße frei haben.
cmake -B build -G Ninja && cmake --build build- Demuxen der TS-Aufnahme in Elementary Streams:
# MPEG-2/H.264/H.265 (empfohlen) tools/ttcut-demux -e Aufnahme.ts # -e = Elementary Streams extrahieren # Alternative für MPEG-2 projectx Aufnahme.ts
Hinweis: ProjectX erzeugt keine
.info-Metadatendatei. Ohne diese stehen Funktionen wie Framerate-Erkennung und A/V-Sync-Korrektur nicht zur Verfügung.ttcut-demuxwird für alle Stream-Typen empfohlen. - Öffnen der Videodatei (.m2v, .264, .265) in TTCut-ng und Audiospuren hinzufügen (.ac3, .mp2)
- Navigieren zu den gewünschten Positionen und Schnittpunkte setzen (Cut-In/Cut-Out)
- Schneiden — das Ergebnis wird als MKV mit allen ausgewählten Audio- und Untertitelspuren geschrieben
Hinweis: TTCut-ng läuft nativ unter Wayland und X11. Sollte ein Wayland-Compositor Darstellungsfehler zeigen, hilft ersatzweise
QT_QPA_PLATFORM=xcb ./build/ttcut-ng.
Ausführliche Dokumentation im Wiki.
Issues und Pull Requests sind willkommen.
Ursprünglich basierend auf TTCut von B. Altendorf (2005-2008).
Das Tux-Maskottchen (ui/pixmaps/Tux.svg) wurde 1996 von Larry Ewing
(lewing@isc.tamu.edu) mit The GIMP erstellt — Details und die vollständige
Erlaubnis in CREDITS.md.
GPLv3+ — siehe LICENSE.
