Communitygithub.com

darija-video-editing

Pipeline complète de montage vidéo adaptée aux rushes en darija marocain dans FilmCraft : ingestion MTP mobile avec reprise par blocs, proxies légers sans latence (960×720, -bf 0), transcription mot-à-mot en arabe/darija avec faster-whisper et injection de timestamps via stdin, assemblage chronologique de la timeline maître, et entonnoir de conversion des vidéos longues YouTube en Shorts.

Qu'est-ce que darija-video-editing ?

Cette suite de montage vidéo (darija-video-editing) propose un pipeline complet et robuste pour les rushes vidéo mobiles haute qualité (MotionCam Pro, Android, Open Gate) en darija marocain (الدارجة المغربية), conçu pour le logiciel Storyteller FilmCraft. Elle résout quatre problèmes critiques : les déconnexions du bus MTP grâce à une ingestion résiliente avec reprise par blocs, le lag de lecture et le gonflement du disque en générant des proxies ultra-compacts 960×720 sans B-frames (138+ fps, économie de >96% d'espace), le décalage linguistique de FilmCraft en remplaçant la transcription anglaise par défaut par faster-whisper en arabe/darija avec des timestamps mot-à-mot injectés via stdin pour éviter les limites de ARG_MAX, et la synergie de croissance YouTube en structurant d'abord le récit long, puis en créant des Shorts verticaux 9:16 liés à la vidéo parent. Le pipeline fonctionne en cinq phases : ingestion MTP, génération de proxies, transcription darija, assemblage de la timeline maître, et entonnoir Shorts. Il est documenté avec des scripts Python exécutables et des détails techniques précis, le rendant accessible aux développeurs et monteurs avertis.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/EmbeddedMhawar/darija-video-editing/tree/HEAD/skills/darija-video-editing

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation


name: darija-video-editing description: Pipeline complète de montage vidéo adaptée aux rushes en darija marocain dans FilmCraft : ingestion MTP mobile avec reprise par blocs, proxies légers sans latence (960×720, -bf 0), transcription mot-à-mot en arabe/darija avec faster-whisper et injection de timestamps via stdin, assemblage chronologique de la timeline maître, et entonnoir de conversion des vidéos longues YouTube en Shorts.

Suite de Montage Vidéo Darija (darija-video-editing)

Pipeline complète adaptée aux rushes vidéo mobiles haut débit (MotionCam Pro / Android / Open Gate) parlant le darija marocain (الدارجة المغربية) et montés dans Storyteller FilmCraft.

Résout les quatre obstacles critiques de la production vidéo mobile en darija :

  1. Arrêts et déconnexions du bus MTP : Extraction séquentielle résiliente des fichiers avec reprise par ajout de blocs au niveau octet.
  2. Lag de lecture et gonflement du disque : Proxies ultra-compacts 960×720 sans B-frames (-bf 0, -tune fastdecode) décodant à 138+ fps tout en économisant >96% d'espace disque.
  3. Décalage linguistique de FilmCraft : Remplace la transcription anglaise par défaut par faster-whisper (--language ar), en diffusant les timestamps des mots via stdin pour contourner les limites de ARG_MAX sous Linux.
  4. Synergie de croissance YouTube : Structure d'abord le récit long master, puis crée des Shorts verticaux 9:16 à fort taux de rétention, liés directement via les entonnoirs "Vidéo associée" YouTube.

Protocole Opérationnel en 5 Phases

[Téléphone (MTP)] ──> Étape 1 : mtp_ingest.py ──> [Rushes bruts]
                       │
                       ├──> Étape 2 : generate_proxies.py ──> [Proxies 960x720 (~1.5 Go)]
                       │
                       ├──> Étape 3 : darija_transcribe.py ──> [Timestamps des mots]
                       │
                       └──> Étape 4 : filmcraft_pipeline.py ──> [LongForm_Fisik101.fcproj]
                                                                     │
                                                       (Montage master approuvé)
                                                                     │
                                                       Étape 5 : Entonnoir Shorts 9:16

Phase 1 : Ingestion Mobile et MTP Résiliente

Les rushes vidéo mobiles (ex. MotionCam Pro 4K/UHD open gate) génèrent des fichiers de 40 à 100 Go via USB. Les copies GVFS/MTP GUI standard plantent ou bloquent lors des longs transferts.

Exécutez l'outil d'ingestion séquentielle résiliente :

python3 scripts/mtp_ingest.py \
  --dst "/chemin/vers/projet/raw_footage" \
  --pattern "*.mov" \
  --date "AAMMJJ"
  • Reprise intelligente par blocs : Si un fichier de 10 Go est interrompu à mi-chemin, l'outil lit le nombre d'octets déjà présents sur le disque, se positionne à cet offset exact, et ajoute les blocs restants sans retélécharger les gigaoctets précédents.
  • Threading séquentiel : Impose des transferts de fichiers uniques stricts pour éviter les collisions de pipes du protocole MTP.

Phase 2 : Proxys de Montage Légers (Disque et CPU Amicaux)

Les rushes bruts 4000×3008 descendent sous la lecture en temps réel sur des CPU standards (~18 fps). Ces proxies offrent un défilement instantané et sans latence tout en consommant moins de 4% de l'espace disque original :

python3 scripts/generate_proxies.py \
  --input "/chemin/vers/projet/raw_footage" \
  --output-dir "/chemin/vers/projet/proxies" \
  --width 960 \
  --crf 24
  • Spécifications :
    • Échelle : 960×720 (4:3 exact) ou 960×540 (16:9).
    • Zéro B-Frames (-bf 0) & GOP 60 : Recherche de frame instantanée sans délai de décodage inter-frame prédictif.
    • Réglage Fastdecode (-tune fastdecode) : Désactive le CABAC haute complexité et le débouclage intra-boucle ; décode à 138+ fps dans FilmCraft.
    • Pass-Through Audio (-c:a copy) : Copie bit-à-bit sans perte de l'audio stéréo 48 kHz original, préservant les formes d'onde nettes et la synchronisation des dialogues sur la piste A1.
    • Empreinte disque : ~1,5 Go au total pour plus d'une heure de vidéo 4K (>96% d'espace économisé).

Phase 3 : Reconnaissance Vocale Darija Marocain et Injection Native dans FilmCraft

La transcription automatique native de FilmCraft par défaut est en anglais ("defaultLanguage": "en"). Utilisez le moteur de transcription darija pour extraire les timestamps mot-à-mot :

uv run --python 3.12 --with "faster-whisper" --with "av<14" python3 \
  scripts/darija_transcribe.py \
  --input "/chemin/vers/clip.mov" \
  --output "/chemin/vers/transcripts/clip.json" \
  --model small \
  --language ar

Injection de Transcription Sûre via stdin (Contournement de ARG_MAX)

Les clips longs (>5 minutes) produisent des milliers de mots horodatés. Les passer via des chaînes de caractères en ligne de commande provoque OSError: [Errno 7] Argument list too long.

Diffusez toujours la commande JSON via stdin en utilisant filmcraft-cli run - :

import json, subprocess
TICKS_PER_SEC = 254016000000

cmd_obj = {
    "id": "transcript.set",
    "params": {
        "item": item_id,
        "transcript": {
            "language": "ar",
            "speakers": [{"name": "Intervenant 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", "projet.fcproj", "--save", "run", "-"],
    input=json.dumps(cmd_obj) + "\n",
    text=True
)

Phase 4 : Assemblage du Montage Master Timeline

Orchestrez l'ensemble du projet et de la timeline FilmCraft avec une suite de commandes unique :

# 1. Initialiser la séquence master 4K (V1-V3, A1-A3)
python3 scripts/filmcraft_pipeline.py init \
  --project "/chemin/vers/LongForm_Fisik101.fcproj" \
  --sequence-name "Assemblage Master" \
  --width 3840 --height 2160 --fps 24.0

# 2. Importer en lot tous les rushes bruts
python3 scripts/filmcraft_pipeline.py import \
  --project "/chemin/vers/LongForm_Fisik101.fcproj" \
  --media "/chemin/vers/raw_footage"

# 3. Assembler les clips chronologiquement sur les pistes V1 / A1
python3 scripts/filmcraft_pipeline.py assemble \
  --project "/chemin/vers/LongForm_Fisik101.fcproj"

# 4. Attacher les proxies générés à tous les éléments
python3 scripts/filmcraft_pipeline.py attach-proxies \
  --project "/chemin/vers/LongForm_Fisik101.fcproj" \
  --proxies-dir "/chemin/vers/proxies"

# 5. Injecter les transcriptions darija dans tous les éléments
python3 scripts/filmcraft_pipeline.py attach-transcripts \
  --project "/chemin/vers/LongForm_Fisik101.fcproj" \
  --transcripts-dir "/chemin/vers/transcripts"

Réglage Global de Préférence

Assurez-vous que FilmCraft passe automatiquement en lecture par proxy au démarrage en confirmant ~/.local/share/filmcraft/preferences.json :

"enableProxies": true

Phase 5 : Croissance YouTube et Entonnoir de Conversion Shorts (@fisik101)

Une fois le montage master long-form poli et approuvé :

  1. Cadence de Publication Stratégique :
    • Long-Form : 1 à 2 vidéos par semaine (48 à 72 heures entre les mises en ligne pour laisser les algorithmes Browse & Suggested indexer).
    • Shorts : 2 à 3 Shorts par jour, espacés de 3 à 4 heures (ex. 13:00, 17:00, 21:00 GMT+1).
  2. L'Entonnoir Vidéo Associée :
    • Pour chaque Short extrait du master long-form, définissez le lien "Vidéo associée" dans YouTube Studio vers la vidéo parente long-form.
    • Convertit les vues à fort volume des Shorts directement en temps de visionnage long-form et en abonnés à la chaîne.
  3. Canvas et Style Short-Form :
    • Canvas vertical 9:16 (1080×1920).
    • Légendes cinétiques à contraste élevé dans la zone de sécurité micro/poitrine (margin_v: ~420px).
    • Structure Accroche $\rightarrow$ Histoire $\rightarrow$ Conclusion (silence $>0.4$s supprimé avec tampon de protection des consonnes de 80 ms).

Skills associés