Communitygithub.com

video-edit

El usuario lo usa para editar videos, unir clips, agregar portadas, extraer fotogramas/pistas de audio y exportar en mp4 (anfitrión Android weizhi:video). No aplica en escritorio por falta de MediaCodec.

¿Qué es video-edit?

Esta habilidad permite editar videos en dispositivos Android utilizando el paquete weizhi:video, ideal para recortar, unir clips sin recodificación, extraer fotogramas o pistas de audio, y exportar en formato mp4. Soporta dos versiones: v1 para operaciones simples (recortar y concatenar) y v2 para líneas de tiempo complejas con múltiples pistas, imágenes de portada, efecto Ken Burns y transiciones de fundido cruzado. Los scripts se ejecutan en jobs/*.js mediante run_js con un timeout máximo de 600000 ms. Es importante usar find_caps para obtener los esquemas de llamada precisos y evitar errores de argumentos. La habilidad está diseñada exclusivamente para Android; en escritorio no está disponible por falta de soporte de MediaCodec.

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

Preguntar en tu IA favorita

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

Vista previa

Del README del skill

Documentación

Edición de video (weizhi:video)

Alcance

HaceNo hace
probe, extraer fotogramas/pistas de audio, exportVideo exportarDecodificar mp4 completo con webview_exec
v1 remux: recortar inicio/fin, unión sin transicionesFingir soporte de transcodificación en escritorio (no hay paquete en escritorio)

Protocolo de inicio

  1. Primero, load_skill (video-edit) para leer este documento.
  2. Antes de escribir exportVideo o una línea de tiempo compleja: llama a find_caps una vez (consulta con exportVideo weizhi:video o la capacidad específica), escribe basándote en el ejemplo de llamada devuelto, no adivines los nombres de campo.
  3. Coloca los scripts en jobs/*.js, ejecútalos con run_js usando file; puedes aumentar timeout_ms (máximo 600000).
  4. Si la API reporta un error en el script (como bad argument, unsupported): vuelve a find_caps para verificar la firma y ajusta el script.

Selección de ruta

TareaAPI
Solo recortar un segmento, o unir varios segmentos de extremo a extremo, sin recodificaciónv1 exportVideo({ clips: [{ path, startMs?, endMs? }], output })
Múltiples pistas, portada de imagen, Ken Burns, fundido cruzadov2 exportVideo({ width, height, tracks, output })

Línea de tiempo v2 (puntos clave)

  • Portada / imagen: pista type: "image", durationMs es obligatorio.
  • Segmento mp4: pista type: "video", inMs / outMs; no coloques imágenes en una pista de video.
  • Fundido cruzado (solo pista de imagen): el clip posterior escribe transition: { type: "crossfade", durationMs: D }, y
    startMs_siguiente = startMs_anterior + durationMs_anterior - D (superposición exactamente de D milisegundos). No existe el campo crossfadeMs.
  • Los clips en la misma pista que no declaren transition no pueden superponerse en el tiempo; si se reporta error overlapping clips, revisa la fórmula anterior y la presencia de transition.
  • transition y las keyframes de opacidad escritas en el clip no pueden usarse simultáneamente.
  • Pista de audio: una pista separada con type: "audio".

Ejemplo (fundido entre dos imágenes + video a continuación):

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",
});

Flujo recomendado

  1. probe duración y resolución del video fuente.
  2. Si se necesita un fotograma de portada: extractFrame / extractFrames (ver find_caps).
  3. Para videos complejos: primero exporta mediante v1 un intermedio part1.mp4, part2.mp4, luego únelos con v1 o v2; evita superponer clips en una misma pista sin declarar transiciones.
  4. Banda sonora: pista audio separada, outMs alineado con la duración total del video.

Orquestación

  • Un solo script jobs/render.js realiza en serie la detección, exportación y verificación (puede volver a probe el archivo final).
  • No uses múltiples herramientas externas en lugar de un script completo.

Qué decir al usuario

Indica el nombre del archivo final y su duración; usa un enlace [video final](out/xxx.mp4). No acumules jerga técnica.

Skills relacionados