Communitygithub.com

darija-video-editing

Pipeline completo de edição de vídeo adaptado para filmagens em Darija marroquina no FilmCraft: ingestão MTP móvel com retomada por chunks, proxies leves de edição sem lag (960x720, -bf 0), transcrição palavra por palavra em Árabe/Darija com injeção de timestamps via stdin, montagem cronológica da timeline principal e funis de Shorts a partir de vídeos longos do YouTube.

O que é darija-video-editing?

O Darija Video Editing Suite resolve os quatro principais desafios da produção de vídeo móvel em Darija marroquina. Primeiro, a ingestão MTP resiliente com retomada inteligente de chunks evita falhas em transferências de arquivos grandes via USB. Segundo, a geração de proxies ultracompactos (960×720, -bf 0, -tune fastdecode) garante playback instantâneo e zero lag na timeline, economizando mais de 96% de espaço em disco. Terceiro, a transcrição com faster-whisper em Árabe/Darija substitui o reconhecimento de fala padrão do FilmCraft, injetando timestamps palavra por palavra de forma segura via stdin para evitar o limite ARG_MAX do Linux. Quarto, o pipeline estrutura a narrativa longa primeiro e depois cria Shorts verticais 9:16 de alta retenção, vinculados diretamente ao vídeo pai para maximizar o crescimento no YouTube. A suíte opera em cinco fases: ingestão, geração de proxies, transcrição, montagem da timeline e funil de Shorts. Suporta FilmCraft e ferramentas de linha de comando Python, sendo ideal para criadores de conteúdo que filmam com MotionCam Pro ou qualquer câmera Android.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Pacote de Edição de Vídeo Darija (darija-video-editing)

Pipeline abrangente adaptado para filmagens de câmera móvel de alta taxa de bits (MotionCam Pro / Android / Open Gate) falando Darija marroquina (الدارجة المغربية) e editado no Storyteller FilmCraft.

Resolve os quatro gargalos críticos da produção de vídeo móvel em Darija:

  1. Paradas e Desconexões do Barramento MTP: Extração sequencial resiliente de arquivos com retomada por chunks em nível de byte.
  2. Lag de Playback e Inchaço de Disco: Proxies de edição ultracompactos 960×720 intra-friendly (-bf 0, -tune fastdecode) decodificando a 138+ fps enquanto economizam >96% de espaço em disco.
  3. Incompatibilidade de Idioma do FilmCraft: Substitui a transcrição padrão em inglês pelo faster-whisper (--language ar), transmitindo timestamps de palavras com segurança via stdin para contornar os limites ARG_MAX do Linux.
  4. Sinergia de Crescimento no YouTube: Estrutura primeiro a narrativa longa principal, depois cria Shorts verticais 9:16 de alta retenção vinculados diretamente ao YouTube através de funis "Vídeo Relacionado".

Protocolo Operacional de 5 Fases

[Telefone (MTP)] ──> Passo 1: mtp_ingest.py ──> [Filmagem Bruta]
                       │
                       ├──> Passo 2: generate_proxies.py ──> [Proxies 960x720 (~1,5 GB)]
                       │
                       ├──> Passo 3: darija_transcribe.py ──> [Timestamps de Palavras]
                       │
                       └──> Passo 4: filmcraft_pipeline.py ──> [LongForm_Fisik101.fcproj]
                                                                     │
                                                       (Corte Mestre Aprovado)
                                                                     │
                                                       Passo 5: Funil de Shorts 9:16

Fase 1: Ingestão Móvel e Resiliente MTP

Filmagens de câmera móvel (ex. MotionCam Pro 4K/UHD open gate) geram arquivos de 40 a 100 GB via USB. As cópias padrão GVFS/MTP GUI travam ou congelam em transferências longas.

Execute a ferramenta de ingestão sequencial resiliente:

python3 scripts/mtp_ingest.py \
  --dst "/caminho/para/projeto/filmagem_bruta" \
  --pattern "*.mov" \
  --date "AAMMDD"
  • Retomada Inteligente de Chunks: Se um arquivo de 10 GB for interrompido no meio, o mecanismo lê a contagem de bytes existente no disco, busca esse deslocamento exato e anexa os chunks restantes sem baixar novamente gigabytes anteriores.
  • Threading Sequencial: Impõe transferências estritas de arquivo único para evitar colisões no pipe do protocolo MTP.

Fase 2: Proxies de Edição Leves (Amigáveis ao Disco e CPU)

Filmagens brutas de 4000×3008 caem abaixo do playback em tempo real em CPUs padrão (~18 fps). Estes proxies oferecem navegação instantânea na timeline sem lag, consumindo menos de 4% do espaço em disco original:

python3 scripts/generate_proxies.py \
  --input "/caminho/para/projeto/filmagem_bruta" \
  --output-dir "/caminho/para/projeto/proxies" \
  --width 960 \
  --crf 24
  • Especificações:
    • Escala: 960×720 (4:3 exato) ou 960×540 (16:9).
    • Zero B-Frames (-bf 0) e GOP 60: Busca instantânea de quadros sem lag de decodificação preditiva entre quadros.
    • Ajuste Fastdecode (-tune fastdecode): Desativa CABAC de alta complexidade e desbloqueio em loop; decodifica a 138+ fps no FilmCraft.
    • Passagem de Áudio (-c:a copy): Cópia bit a bit sem perdas do áudio estéreo original de 48 kHz, preservando formas de onda limpas e sincronia de diálogo na Faixa A1.
    • Espaço em Disco: ~1,5 GB total para mais de 1 hora de filmagem 4K (>96% de espaço economizado).

Fase 3: Reconhecimento de Fala em Darija Marroquina e Injeção Nativa no FilmCraft

A transcrição automática nativa do FilmCraft usa inglês ("defaultLanguage": "en"). Use o mecanismo de transcrição Darija para extrair timestamps de palavras:

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

Injeção Segura de Transcrição via Stdin (Contornando ARG_MAX)

Clipes longos (>5 minutos) produzem milhares de palavras com timestamps. Passá-los como strings de linha de comando causa OSError: [Errno 7] Argument list too long.

Sempre transmita o comando JSON via 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: Montagem da Timeline Principal em Formato Longo

Orquestre todo o projeto FilmCraft e a timeline com um único conjunto de comandos:

# 1. Inicializar sequência mestre 4K (V1-V3, A1-A3)
python3 scripts/filmcraft_pipeline.py init \
  --project "/caminho/para/LongForm_Fisik101.fcproj" \
  --sequence-name "Montagem Mestre" \
  --width 3840 --height 2160 --fps 24.0

# 2. Importar todas as filmagens brutas em lote
python3 scripts/filmcraft_pipeline.py import \
  --project "/caminho/para/LongForm_Fisik101.fcproj" \
  --media "/caminho/para/filmagem_bruta"

# 3. Montar clipes cronologicamente na Faixa V1 / A1
python3 scripts/filmcraft_pipeline.py assemble \
  --project "/caminho/para/LongForm_Fisik101.fcproj"

# 4. Anexar proxies gerados a todos os itens
python3 scripts/filmcraft_pipeline.py attach-proxies \
  --project "/caminho/para/LongForm_Fisik101.fcproj" \
  --proxies-dir "/caminho/para/proxies"

# 5. Injetar transcrições Darija em todos os itens
python3 scripts/filmcraft_pipeline.py attach-transcripts \
  --project "/caminho/para/LongForm_Fisik101.fcproj" \
  --transcripts-dir "/caminho/para/transcricoes"

Configuração de Preferências Globais

Garanta que o FilmCraft reproduza automaticamente os proxies na inicialização confirmando ~/.local/share/filmcraft/preferences.json:

"enableProxies": true

Fase 5: Crescimento no YouTube e Funil de Shorts (@fisik101)

Depois que o corte mestre longo estiver polido e aprovado:

  1. Cadência Estratégica de Postagem:
    • Longo: 1 a 2 vídeos por semana (48–72 horas entre uploads para permitir que os algoritmos Browse e Suggested indexem).
    • Shorts: 2 a 3 Shorts por dia, espaçados 3 a 4 horas (ex.: 13:00, 17:00, 21:00 GMT+1).
  2. Funil de Vídeo Relacionado:
    • Para cada Short extraído do mestre longo, defina o link de "Vídeo Relacionado" no YouTube Studio para o vídeo pai longo.
    • Converte visualizações de Shorts em massa em tempo de exibição de vídeos longos e inscrições no canal.
  3. Canvas e Estilo do Short:
    • Canvas vertical 9:16 (1080×1920).
    • Legendas cinéticas de alto contraste na zona segura do microfone/peito (margin_v: ~420px).
    • Estrutura de Gancho → História → Desfecho (silêncios >0,4s removidos com buffer de proteção de consoante de 80 ms).

Habilidades Relacionadas