Darija Video Editing Suite (darija-video-editing)
Umfassende Pipeline für hochbitratiges Mobilkameramaterial (MotionCam Pro / Android / Open Gate), das Marokkanisches Darija (الدارجة المغربية) spricht und in Storyteller FilmCraft bearbeitet wird.
Löst die vier kritischen Hürden der Darija-Mobilvideoproduktion:
- MTP-Bus-Staus & Verbindungsabbrüche: Robuster sequenzieller Dateiabruf mit byteweiser Wiederaufnahme auf Blockebene.
- Wiedergabeverzögerung & Festplattenaufblähung: Ultra-kompakte 960×720 intrafreundliche Bearbeitungsproxys (
-bf 0,-tune fastdecode) dekodieren mit 138+ fps und sparen >96 % Speicherplatz. - FilmCraft-Sprachkonflikt: Ersetzt die englische Standard-Transkription durch
faster-whisper(--language ar) und überträgt Wort-Zeitstempel sicher überstdin, um Linux-ARG_MAX-Grenzen zu umgehen. - YouTube-Wachstumssynergie: Erstellt zuerst die lange Haupterzählung, dann werden daraus hochverweilende 9:16 vertikale Shorts abgeleitet, die direkt über YouTube-Funktionen wie „Ähnliche Videos“ verlinkt werden.
5-Phasen-Betriebsprotokoll
[Telefon (MTP)] ──> Schritt 1: mtp_ingest.py ──> [Rohmaterial]
│
├──> Schritt 2: generate_proxies.py ──> [960x720 Proxys (~1,5 GB)]
│
├──> Schritt 3: darija_transcribe.py ──> [Wort-Zeitstempel]
│
└──> Schritt 4: filmcraft_pipeline.py ──> [LongForm_Fisik101.fcproj]
│
(Freigegebener Master-Schnitt)
│
Schritt 5: 9:16 Shorts-Trichter
Phase 1: Mobiles & MTP-resilientes Importieren
Mobilkamera-Material (z. B. MotionCam Pro 4K/UHD Open Gate) erzeugt 40–100 GB große Dateien über USB. Standard GVFS/MTP-GUI-Kopien stürzen ab oder frieren bei langen Übertragungen ein.
Führen Sie das robuste sequenzielle Import-Tool aus:
python3 scripts/mtp_ingest.py \
--dst "/pfad/zum/projekt/raw_footage" \
--pattern "*.mov" \
--date "YYMMDD"
- Intelligente Block-Wiederaufnahme: Wenn eine 10-GB-Datei auf halbem Weg unterbrochen wird, liest die Engine die vorhandene Byte-Anzahl auf der Festplatte, springt zu diesem genauen Offset und hängt die restlichen Blöcke an, ohne die zuvor heruntergeladenen Gigabyte erneut herunterzuladen.
- Sequenzielle Ausführung: Erzwingt strikte Single-Datei-Übertragungen, um Kollisionen im MTP-Protokoll zu vermeiden.
Phase 2: Leichtgewichtige Bearbeitungsproxys (Festplatten- & CPU-schonend)
Rohmaterial mit 4000×3008 Pixeln fällt auf Standard-CPUs unter Echtzeit-Wiedergabe (~18 fps). Diese Proxys ermöglichen sofortiges, ruckelfreies Timeline-Scrubbing und verbrauchen weniger als 4 % des ursprünglichen Speicherplatzes:
python3 scripts/generate_proxies.py \
--input "/pfad/zum/projekt/raw_footage" \
--output-dir "/pfad/zum/projekt/proxies" \
--width 960 \
--crf 24
- Spezifikationen:
- Skalierung:
960×720(genau 4:3) oder960×540(16:9). - Keine B-Frames (
-bf 0) & GOP 60: Sofortiger Frame-Zugriff ohne prädiktive Inter-Frame-Dekodierungsverzögerung. - Fastdecode-Tuning (
-tune fastdecode): Deaktiviert hochkomplexes CABAC und In-Loop-Deblocking; dekodiert mit 138+ fps in FilmCraft. - Audio-Durchleitung (
-c:a copy): Bitgenaue verlustfreie Kopie des Original-48-kHz-Stereotons; bewahrt saubere Wellenformen und Dialog-Synchronisation auf Spur A1. - Speicherbedarf: ~1,5 GB insgesamt für über eine Stunde 4K-Material (>96 % Platzersparnis).
- Skalierung:
Phase 3: Marokkanisches Darija-Spracherkennung & native FilmCraft-Einspeisung
FilmCrafts native Auto-Transkription ist standardmäßig auf Englisch eingestellt ("defaultLanguage": "en"). Verwenden Sie die Darija-Transkriptions-Engine, um Wort-Zeitstempel zu extrahieren:
uv run --python 3.12 --with "faster-whisper" --with "av<14" python3 \
scripts/darija_transcribe.py \
--input "/pfad/zum/clip.mov" \
--output "/pfad/zu/transcripts/clip.json" \
--model small \
--language ar
Sichere Stdin-Transkript-Einspeisung (Umgehung von ARG_MAX)
Lange Clips (>5 Minuten) erzeugen tausende von Zeitstempeln für Wörter. Die Übergabe als Befehlszeilen-Strings führt zu OSError: [Errno 7] Argument list too long.
Streamen Sie das JSON-Befehls-Payload immer über stdin mit filmcraft-cli run -:
import json, subprocess
TICKS_PER_SEC = 254016000000
cmd_obj = {
"id": "transcript.set",
"params": {
"item": item_id,
"transcript": {
"language": "ar",
"speakers": [{"name": "Sprecher 1"}],
"words": [
{
"text": w["word"],
"start": int(round(w["start"] * TICKS_PER_SEC)),
"end": int(round(w["end"] * TICKS_PER_SEC)),
"speaker": 0
}
for w in words_data
]
}
}
}
subprocess.run(
["filmcraft-cli", "--project", "project.fcproj", "--save", "run", "-"],
input=json.dumps(cmd_obj) + "\n",
text=True
)
Phase 4: Langform-Timeline-Master-Assembly
Orchestrieren Sie das gesamte FilmCraft-Projekt und die Timeline mit einem einzigen Befehlssatz:
# 1. Master-4K-Sequenz initialisieren (V1-V3, A1-A3)
python3 scripts/filmcraft_pipeline.py init \
--project "/pfad/zum/LongForm_Fisik101.fcproj" \
--sequence-name "Master Assembly" \
--width 3840 --height 2160 --fps 24.0
# 2. Alle Rohmaterialien stapelweise importieren
python3 scripts/filmcraft_pipeline.py import \
--project "/pfad/zum/LongForm_Fisik101.fcproj" \
--media "/pfad/zum/raw_footage"
# 3. Clips chronologisch auf Spur V1 / A1 anordnen
python3 scripts/filmcraft_pipeline.py assemble \
--project "/pfad/zum/LongForm_Fisik101.fcproj"
# 4. Generierte Proxys an alle Elemente anhängen
python3 scripts/filmcraft_pipeline.py attach-proxies \
--project "/pfad/zum/LongForm_Fisik101.fcproj" \
--proxies-dir "/pfad/zu/proxies"
# 5. Darija-Transkripte an alle Elemente anhängen
python3 scripts/filmcraft_pipeline.py attach-transcripts \
--project "/pfad/zum/LongForm_Fisik101.fcproj" \
--transcripts-dir "/pfad/zu/transcripts"
Globale Einstellung
Stellen Sie sicher, dass FilmCraft beim Start standardmäßig die Proxy-Wiedergabe verwendet, indem Sie ~/.local/share/filmcraft/preferences.json überprüfen:
"enableProxies": true
Phase 5: YouTube-Wachstum & Shorts-Abspaltungs-Trichter (@fisik101)
Sobald der Langform-Master-Schnitt poliert und freigegeben ist:
- Strategischer Veröffentlichungsrhythmus:
- Langform: 1 bis 2 Videos pro Woche (48–72 Stunden zwischen Uploads, damit die Browse- und Suggested-Algorithmen indexieren können).
- Shorts: 2 bis 3 Shorts pro Tag, im Abstand von 3 bis 4 Stunden (z. B. 13:00, 17:00, 21:00 GMT+1).
- Der „Ähnliche Videos“-Trichter:
- Setzen Sie für jeden Short, der aus dem Langform-Master extrahiert wurde, den Link „Ähnliches Video“ in YouTube Studio auf das übergeordnete Langform-Video.
- Wandelt die hohe Shorts-Aufrufzahl direkt in Langform-Sehzeit und Kanal-Abonnenten um.
- Kurzform-Leinwand & Styling:
- 9:16 vertikale Leinwand (1080×1920).
- Hochkontrast-Kinetic-Captions im Mikrofon-/Brust-Safe-Bereich (
margin_v: ~420px). - Hook $\rightarrow$ Story $\rightarrow$ Payoff-Struktur (Stille $>0{,}4$s entfernt mit 80 ms Konsonantenschutzpuffer).