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:
- Paradas e Desconexões do Barramento MTP: Extração sequencial resiliente de arquivos com retomada por chunks em nível de byte.
- 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. - 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 viastdinpara contornar os limitesARG_MAXdo Linux. - 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) ou960×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).
- Escala:
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:
- 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).
- 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.
- 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).