Videobearbeitung (weizhi:video)
Umfang
| Macht | Macht nicht |
|---|---|
probe, Frames/Audio extrahieren, exportVideo exportieren | Mit webview_exec ganze MP4-Datei dekodieren |
| v1 Remux: Anfang/Ende kürzen, nahtloses Zusammenfügen | Vorgeben, Desktop-Transcoding zu unterstützen (kein Paket auf Desktop) |
Startprotokoll
- Zuerst
load_skill(video-edit) ausführen, um diesen Text zu lesen. - Vor
exportVideooder komplexer Timeline: Einmalfind_capsaufrufen (query enthältexportVideo weizhi:videooder die konkrete Fähigkeit), dann das zurückgegebene Aufrufbeispiel verwenden. Keine Feldnamen erraten. - Skripte in
jobs/*.jsablegen, mitrun_jsüberfileausführen;timeout_mskann erhöht werden (max. 600000). - API-Fehler im Skript (z. B.
bad argument,unsupported): Erneutfind_capsaufrufen, die Signatur prüfen und das Skript korrigieren.
Routenwahl
| Aufgabe | API |
|---|---|
| Nur einen Abschnitt schneiden, mehrere Abschnitte aneinanderhängen, ohne Neucodierung | v1 exportVideo({ clips: [{ path, startMs?, endMs? }], output }) |
| Mehrere Spuren, Titelbild, Ken Burns, Crossfade | v2 exportVideo({ width, height, tracks, output }) |
Timeline v2 (Wichtig)
- Standbilder / Bilder: Spur mit
type: "image",durationMsist Pflicht. - MP4-Clips: Spur mit
type: "video",inMs/outMs. Bilder nicht in Video-Spuren einfügen. - Crossfade (nur image-Spur): Nächster Clip erhält
transition: { type: "crossfade", durationMs: D }, und
startMs_next = startMs_prev + durationMs_prev - D(Überlappung exakt D Millisekunden). Es gibt keincrossfadeMs-Feld. - Clips auf derselben Spur ohne deklariertes
transitiondürfen sich zeitlich nicht überlappen; Fehleroverlapping clips: dann obige Formel undtransitionprüfen. transitionund selbst geschriebene Opacity-Keyframes im selben Clip dürfen nicht gleichzeitig verwendet werden.- Audiospur:
type: "audio"als separate Spur.
Beispiel (zwei Bilder mit Überblendung + anschließendem Video):
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",
});
Empfohlener Workflow
probeauf Quellvideo anwenden: Dauer und Auflösung ermitteln.- Titelbild benötigt:
extractFrame/extractFrames(siehefind_caps). - Komplexes Projekt: Zuerst mit v1 Zwischenergebnisse
part1.mp4,part2.mp4exportieren, dann mit v1 oder v2 zusammensetzen. Vermeiden, Clips ohne deklarierte Überblendung einfach übereinanderzulegen. - Hintergrundmusik: Separate
audio-Spur,outMsan die Gesamtlänge des Bildes anpassen.
Ablauf
- Ein Skript
jobs/render.jsführt Erkennung, Export und Überprüfung (erneutesprobeder Ausgabe) nacheinander aus. - Äußere Ebene nicht mehrere Werkzeuge anstelle eines vollständigen Skripts verwenden.
Was dem Benutzer gesagt wird
Dateiname und Dauer des fertigen Videos nennen. Mit [Fertiges Video](out/xxx.mp4) verlinken. Keine Fachbegriffe anhäufen.