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 :
- Arrêts et déconnexions du bus MTP : Extraction séquentielle résiliente des fichiers avec reprise par ajout de blocs au niveau octet.
- 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. - Décalage linguistique de FilmCraft : Remplace la transcription anglaise par défaut par
faster-whisper(--language ar), en diffusant les timestamps des mots viastdinpour contourner les limites deARG_MAXsous Linux. - 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) ou960×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é).
- Échelle :
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é :
- 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).
- 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.
- 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).