Communitygithub.com

Darija Video Editing

Pipeline integral de edición de video diseñado para grabaciones en Darija marroquí en FilmCraft: ingesta MTP móvil con reanudación por fragmentos, proxies de edición ultraligeros sin retardo (960x720, -bf 0), transcripción palabra por palabra en árabe/darija con faster-whisper e inyección de marcas de tiempo vía stdin, ensamblaje cronológico de la línea de tiempo maestra y embudos de derivación de YouTube de larga duración a Shorts.

¿Qué es Darija Video Editing?

Este skill de agente de IA (EmbeddedMhawar/darija-video-editing) proporciona un pipeline de edición de video de extremo a extremo optimizado para contenido grabado con cámara móvil en idioma **Darija marroquí (الدارجة المغربية)** y editado en Storyteller FilmCraft. Resuelve cuatro obstáculos críticos: (1) la ingesta resiliente desde dispositivos MTP con reanudación inteligente de descargas interrumpidas; (2) la reproducción fluida en máquinas modestas mediante proxies ultraligeros de 960×720 con cero B-frames y decodificación rápida, que reducen el espacio en disco en más del 96%; (3) la transcripción precisa en darija usando faster-whisper con inyección segura de marcas de tiempo vía stdin para evitar el límite de ARG_MAX; y (4) un embudo de crecimiento en YouTube que primero construye videos de larga duración y luego genera Shorts verticales 9:16 vinculados para maximizar el tiempo de visualización y los suscriptores. El pipeline es compatible con FilmCraft en Linux y utiliza scripts Python modulares. Es especialmente valioso para creadores de contenido marroquíes, documentalistas y equipos de producción que necesitan un flujo de trabajo robusto, eficiente en recursos y adaptado al árabe dialectal.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Darija Video Editing Suite (darija-video-editing)

Pipeline integral adaptado a grabaciones de cámara móvil de alta tasa de bits (MotionCam Pro / Android / Open Gate) que hablan Darija marroquí (الدارجة المغربية) y editadas en Storyteller FilmCraft.

Resuelve los cuatro obstáculos críticos de la producción de video móvil en darija:

  1. Bloqueos y desconexiones del bus MTP: Extracción secuencial resiliente de archivos con reanudación por fragmentos a nivel de byte.
  2. Retraso en la reproducción y desperdicio de disco en la máquina: Proxies de edición ultracompactos 960×720 preparados para intra-cuadros (-bf 0, -tune fastdecode) que se decodifican a 138+ fps y ahorran >96% de espacio en disco.
  3. Desajuste de idioma en FilmCraft: Reemplaza la transcripción predeterminada en inglés con faster-whisper (--language ar), transmitiendo de forma segura las marcas de tiempo de las palabras mediante stdin para evitar los límites de ARG_MAX de Linux.
  4. Sinergia de crecimiento en YouTube: Primero estructura la narración maestra de larga duración, luego genera Shorts verticales 9:16 de alta retención vinculados directamente a través de embudos de "Video relacionado" de YouTube.

Protocolo operativo de 5 fases

[Teléfono (MTP)] ──> Paso 1: mtp_ingest.py ──> [Material bruto]
                       │
                       ├──> Paso 2: generate_proxies.py ──> [Proxies 960x720 (~1.5 GB)]
                       │
                       ├──> Paso 3: darija_transcribe.py ──> [Marcas de tiempo de palabras]
                       │
                       └──> Paso 4: filmcraft_pipeline.py ──> [LongForm_Fisik101.fcproj]
                                                                     │
                                                       (Corte maestro aprobado)
                                                                     │
                                                       Paso 5: Embudo de Shorts 9:16

Fase 1: Ingesta resiliente móvil y MTP

Las grabaciones de cámara móvil (por ejemplo, MotionCam Pro 4K/UHD open gate) generan archivos de 40–100 GB a través de USB. Las copias GUI estándar de GVFS/MTP se bloquean o congelan en transferencias largas.

Ejecute la herramienta de ingesta secuencial resiliente:

python3 scripts/mtp_ingest.py \
  --dst "/ruta/al/proyecto/material_bruto" \
  --pattern "*.mov" \
  --date "YYMMDD"
  • Reanudación inteligente de fragmentos: Si un archivo de 10 GB se interrumpe a la mitad, el motor lee el recuento de bytes existente en el disco, busca ese desplazamiento exacto y agrega los fragmentos restantes sin descargar los gigabytes anteriores.
  • Enhebrado secuencial: Impone transferencias estrictas de un solo archivo para evitar colisiones en el conducto del protocolo MTP.

Fase 2: Proxies de edición ultraligeros (aptos para disco y CPU)

El material bruto de 4000×3008 cae por debajo de la reproducción en tiempo real en CPUs estándar (~18 fps). Estos proxies ofrecen un desplazamiento instantáneo y sin retardo en la línea de tiempo mientras consumen menos del 4% del espacio en disco original:

python3 scripts/generate_proxies.py \
  --input "/ruta/al/proyecto/material_bruto" \
  --output-dir "/ruta/al/proyecto/proxies" \
  --width 960 \
  --crf 24
  • Especificaciones:
    • Escala: 960×720 (4:3 exacto) o 960×540 (16:9).
    • Cero B-Frames (-bf 0) y GOP 60: Búsqueda instantánea de cuadros sin retardo de decodificación predictiva entre cuadros.
    • Ajuste Fastdecode (-tune fastdecode): Desactiva CABAC de alta complejidad y el desbloqueo en bucle; se decodifica a 138+ fps en FilmCraft.
    • Paso directo de audio (-c:a copy): Copia bit a bit sin pérdidas del audio estéreo original de 48 kHz, preservando formas de onda limpias y sincronización de diálogos en la pista A1.
    • Huella en disco: ~1.5 GB en total para más de 1 hora de material 4K (>96% de espacio ahorrado).

Fase 3: Reconocimiento de voz en Darija marroquí e inyección nativa en FilmCraft

La transcripción automática nativa de FilmCraft tiene como valor predeterminado el inglés ("defaultLanguage": "en"). Use el motor de transcripción en darija para extraer marcas de tiempo a nivel de palabra:

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

Inyección segura de transcripciones por stdin (evitando ARG_MAX)

Los clips largos (>5 minutos) producen miles de palabras con marcas de tiempo. Pasarlos a través de cadenas de línea de comandos provoca OSError: [Errno 7] Argument list too long.

Transmita siempre la carga útil del comando JSON a través de stdin usando filmcraft-cli run -:

import json, subprocess
TICKS_PER_SEC = 254016000000

cmd_obj = {
    "id": "transcript.set",
    "params": {
        "item": item_id,
        "transcript": {
            "language": "ar",
            "speakers": [{"name": "Speaker 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
)

Fase 4: Ensamblaje maestro de la línea de tiempo de larga duración

Orqueste todo el proyecto y la línea de tiempo de FilmCraft con un solo conjunto de comandos:

# 1. Inicializar secuencia maestra 4K (V1-V3, A1-A3)
python3 scripts/filmcraft_pipeline.py init \
  --project "/ruta/a/LongForm_Fisik101.fcproj" \
  --sequence-name "Ensamblaje maestro" \
  --width 3840 --height 2160 --fps 24.0

# 2. Importar todo el material bruto por lotes
python3 scripts/filmcraft_pipeline.py import \
  --project "/ruta/a/LongForm_Fisik101.fcproj" \
  --media "/ruta/al/material_bruto"

# 3. Ensamblar clips cronológicamente en la pista V1 / A1
python3 scripts/filmcraft_pipeline.py assemble \
  --project "/ruta/a/LongForm_Fisik101.fcproj"

# 4. Adjuntar proxies generados a todos los elementos
python3 scripts/filmcraft_pipeline.py attach-proxies \
  --project "/ruta/a/LongForm_Fisik101.fcproj" \
  --proxies-dir "/ruta/a/proxies"

# 5. Inyectar transcripciones en darija a todos los elementos
python3 scripts/filmcraft_pipeline.py attach-transcripts \
  --project "/ruta/a/LongForm_Fisik101.fcproj" \
  --transcripts-dir "/ruta/a/transcripciones"

Configuración de preferencias globales

Asegúrese de que FilmCraft reproduzca automáticamente los proxies al inicio confirmando ~/.local/share/filmcraft/preferences.json:

"enableProxies": true

Fase 5: Crecimiento en YouTube y embudo de derivación de Shorts (@fisik101)

Una vez que el corte maestro de larga duración esté pulido y aprobado:

  1. Cadencia estratégica de publicación:
    • Larga duración: 1 a 2 videos por semana (48–72 horas entre subidas para permitir que los algoritmos de Explorar y Sugeridos indexen).
    • Shorts: 2 a 3 Shorts por día, espaciados 3 a 4 horas (por ejemplo, 13:00, 17:00, 21:00 GMT+1).
  2. El embudo de video relacionado:
    • Para cada Short extraído del maestro de larga duración, establezca el enlace de "Video relacionado" en YouTube Studio al video de larga duración padre.
    • Convierte las vistas de alto volumen de Shorts directamente en tiempo de visualización de larga duración y suscriptores del canal.
  3. Lienzo y estilo de formato corto:
    • Lienzo vertical 9:16 (1080×1920).
    • Subtítulos cinéticos de alto contraste en la zona segura del micrófono/pecho (margin_v: ~420px).
    • Estructura de Gancho $\rightarrow$ Historia $\rightarrow$ Remate (el silencio $>0.4$s se elimina con un búfer de protección de consonantes de 80 ms).

Skills relacionados