Communitygithub.com

Edição de Vídeo

Usado quando o usuário precisa cortar vídeos, unir clipes, adicionar capa com foto, extrair quadros/faixas de áudio, exportar MP4 (host Android weizhi:video). Não aplicável em desktop sem MediaCodec.

O que é Edição de Vídeo?

Esta skill permite edição de vídeo no Android através da API `weizhi:video`, com suporte a operações como corte, junção de clipes, extração de quadros e faixas de áudio, e exportação em MP4. Ela oferece duas versões de API: v1 para cortes simples e junções lineares sem recodificação, e v2 para timelines mais complexas com múltiplas faixas, imagens estáticas (como capas), efeitos Ken Burns, crossfade e suporte a áudio separado. A skill depende de capacidades específicas do dispositivo (MediaCodec) e não funciona em ambientes desktop sem suporte. O uso requer carregamento da skill (`load_skill`), consulta de capacidades (`find_caps`) para obter exemplos precisos de chamadas de API, e execução de scripts JavaScript colocados em `jobs/*.js` via `run_js`. A documentação detalhada inclui regras para crossfade, uso de transições e boas práticas para evitar erros de sobreposição de clipes.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fengshihao/agent1-skills/tree/main/skills-src/video-edit

Perguntar na sua IA favorita

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

Prévia

Do README da skill

Documentação

Edição de Vídeo (weizhi:video)

Escopo

FazNão Faz
probe, extrair quadros/faixas de áudio, exportVideo exportarUsar webview_exec para decodificar MP4 inteiro
v1 remux: cortar início/fim, junção sem fadeFingir suporte a transcodificação em desktop (pacote não disponível em desktop)

Protocolo de Início

  1. Primeiro load_skill (video-edit) leia este documento.
  2. Antes de escrever exportVideo ou timeline complexa: find_caps uma vez (query com exportVideo weizhi:video ou capacidade específica), siga o exemplo de chamada retornado, não invente nomes de campos.
  3. Coloque scripts em jobs/*.js, execute com run_js usando file; pode aumentar timeout_ms (limite 600000).
  4. Erros de API no script (ex.: bad argument, unsupported): execute novamente find_caps para verificar assinatura e ajuste o script.

Seleção de Rota

TarefaAPI
Apenas cortar um trecho, concatenar vários segmentos sem recodificarv1 exportVideo({ clips: [{ path, startMs?, endMs? }], output })
Múltiplas faixas, capa com foto, Ken Burns, crossfadev2 exportVideo({ width, height, tracks, output })

Timeline v2 (Pontos Chave)

  • Foto / imagem: faixa type: "image", durationMs obrigatório.
  • Trecho MP4: faixa type: "video", inMs / outMs; não coloque imagens em faixa de vídeo.
  • Crossfade (apenas faixa image): no clipe seguinte, defina transition: { type: "crossfade", durationMs: D }, e
    startMs_next = startMs_prev + durationMs_prev - D (sobreposição exata de D milissegundos). Não existe campo crossfadeMs.
  • Clipes na mesma faixa sem transition declarado não podem ter sobreposição temporal; erro overlapping clips indica verificar a fórmula e transition.
  • transition e keyframes de opacidade escritos no mesmo clipe não podem ser usados simultaneamente.
  • Faixa de áudio: type: "audio" como faixa separada.

Exemplo (duas imagens com fade + vídeo em seguida):

import { exportVideo } from "weizhi:video";

const D = 300;
await exportVideo({
  width: 720,
  height: 1280,
  tracks: [
    {
      type: "image",
      clips: [
        { src: "a.jpg", startMs: 0, durationMs: 1000 },
        {
          src: "b.jpg",
          startMs: 1000 - D,
          durationMs: 1000,
          transition: { type: "crossfade", durationMs: D },
        },
      ],
    },
    {
      type: "video",
      clips: [{ src: "clip.mp4", startMs: 1700, inMs: 0, outMs: 5000 }],
    },
  ],
  output: "out/final.mp4",
});

Fluxo Recomendado

  1. probe duração e resolução do vídeo fonte.
  2. Se precisar de quadros de capa: extractFrame / extractFrames (veja find_caps).
  3. Vídeos complexos: pode exportar part1.mp4, part2.mp4 intermediários com v1, depois concatenar com v1 ou v2; evite sobrepor clipes em uma faixa sem declarar transição.
  4. Trilha sonora: faixa audio separada, outMs alinhado à duração total do vídeo.

Organização

  • Um único script jobs/render.js executa sequencialmente: detecção, exportação, verificação (pode usar probe novamente no resultado).
  • Não use múltiplas ferramentas externas no lugar de um único script.

Como Falar com o Usuário

Informe o nome do arquivo final e sua duração; use link [Vídeo final](out/xxx.mp4). Evite jargão técnico.

Habilidades Relacionadas