Que fait wecut ?
wecut transforme un projet JSON en MP4 (ou GIF) avec FFmpeg installé sur cette machine. Vous décrivez le montage ; WeCut effectue le travail vidéo. Il n'appelle jamais de service réseau.
Si wecut n'est pas dans le PATH, utilisez npx -y wecut (Node 16+) partout à la place. Si WeCut est connecté en tant que serveur MCP, les mêmes étapes sont les outils wecut_doctor, wecut_probe, wecut_validate, wecut_preview (renvoie les images sous forme d'images), wecut_render, wecut_list, wecut_schema, wecut_example, wecut_analyze (renvoie la feuille d'images sous forme d'image), wecut_recipe_list, wecut_recipe_show, wecut_recipe_apply et wecut_recipe_from_project ; passez un projet en tant que project (objet) ou projectFile (chemin).
Flux de travail
- Vérifiez la machine une fois :
wecut doctor. S'il signale que FFmpeg est manquant, suivez sonhint(par exemplesudo apt-get install -y ffmpeg). - Placez les médias dans l'espace de travail. Chaque chemin dans un projet est relatif au dossier depuis lequel vous exécutez
wecut(ou--root DOSSIER). Les URL sont refusées : téléchargez d'abord les fichiers. - Examinez les médias :
wecut probe media/talk.mp4 media/music.mp3donne la durée, la taille, les fps et la présence de son. Utilisez ces chiffres pourfrom/to. - Écrivez
project.json(format ci-dessous).wecut example podcast-clipaffiche un exemple complet ;wecut schemaaffiche le schéma JSON ;wecut listmontre tous les styles, polices, transitions et noms de filtres. - Validez :
wecut validate project.json. Les erreurs reviennent avec un pointeur JSON (/clips/0/to) et unhint. Corrigez et répétez. - Regardez avant le rendu :
wecut preview project.json --at 0.5,3,10écrit de petites images JPG dansout/preview/. Ouvrez-les et vérifiez le cadrage, la taille du texte et la position des légendes. - Rendu :
wecut render project.json. Utilisez--preset draftpour une vérification rapide en 540p, la valeur par défautfinalpour la livraison.
Chaque commande imprime un seul objet JSON. Codes de sortie : 0 ok, 2 entrée invalide, 3 dépendance manquante, 4 échec du rendu, 5 dépassement d'une limite. Vous pouvez passer un projet via un tube avec wecut render -.
Format du projet
{
"wecut": "1",
"output": { "file": "out/clip-01.mp4", "ratio": "9:16", "res": 1080, "fps": 30 },
"clips": [
{ "src": "media/talk.mp4", "from": 754.2, "to": 781.0, "focus": { "x": 0.42, "y": 0.5 } },
{ "src": "media/talk.mp4", "from": 795.5, "to": 812.0, "zoom": 1.15 }
],
"texts": [
{ "text": "Comment j'ai gagné mes premiers 10k€", "start": 0, "end": 3, "style": "hook", "y": 0.2, "in": { "type": "pop" } }
],
"captions": { "words": "media/talk.words.json", "src": "media/talk.mp4", "style": "karaoke" },
"audio": [ { "src": "media/music.mp3", "volume": 25, "loop": true, "duck": true, "fadeOut": 1.5 } ]
}
Règles importantes :
- Deux horloges. Les
from/tod'un clip sont en secondes du fichier source. Tout le reste (texts,overlays,audio.at,filters,effects) est en secondes de la vidéo finie.wecut validateimprime ladurationfinale. - Les transitions se chevauchent. Une
transitionsur le clip N se fond dans le clip N+1 et raccourcit la vidéo de saduration. - Cadrage. Le
fitpar défaut estcover(remplit et recadre). Orientez le recadrage avecfocus(0..1 ; x 0.3 garde le côté gauche) etzoom. Utilisez"fit": "contain"avec"background": "blur"pour afficher toute l'image. - Les positions sont des fractions du canevas, 0.5 est le centre. La
sizede la police est en pixels à 1080p. - Les images utilisent
duration(par défaut 3) et peuvent avoir unmotion: in, out, left, right, up, down. - Les emojis ne sont pas dessinés dans le texte. Mettez-les dans un PNG et utilisez
overlays.
Légendes
Donnez à WeCut une transcription avec les timings des mots et il construit les sous-titres :
words: un chemin.json,.srtou.vtt, ou un tableau en ligne[{"word": "salut", "start": 0.1, "end": 0.4}]. Lesverbose_jsond'OpenAI/Groq et le JSON de whisper.cpp sont lus tels quels.src: définissez-le sur la vidéo à laquelle la transcription appartient. Alors la transcription conserve les temps propres du fichier source, et WeCut déplace chaque mot sur la timeline de sortie à travers chaque clip découpé de ce fichier (vitesse incluse). Sanssrc, les temps doivent déjà être des temps de sortie.style:classic,yellow,box-black,box-white,bold,comic,shadow(une phrase à la fois),karaoke,karaoke-green(le mot parlé s'illumine),pop(un grand mot à la fois).
Si vous avez besoin d'une transcription : wecut doctor signale local_transcription: true lorsque ce FFmpeg possède le filtre Whisper. Sinon, utilisez le système de reconnaissance vocale que vous avez déjà et enregistrez ses timings de mots au format JSON.
Modèles : copier ce qui fonctionne
Une recette est la forme d'un montage sans son contenu : sections (par exemple un crochet de 5 s avec une carte de titre, puis le discours), emplacements de texte, style de légende et de musique, effets. L'appliquer à de nouveaux clips, mots et musique donne un projet.
- Analysez une vidéo qui a fonctionné :
wecut analyze media/viral.mp4renvoie les plans et le rythme, les coupes dans les 3 premières secondes, les flashs, le tempo, les pauses, un outro silencieux pour la plateforme (laissez-le de côté), etsheet: une image par plan dans une seule image. Regardez la feuille pour la carte de titre, le style de texte, le cadrage et le style de légende. - Choisissez ou écrivez une recette :
wecut recipe list(intégrées : news-headline, news-headline-blur, quote-hook, vlog-phrases, podcast-punch, photo-slideshow, plus lesrecipes/*.jsonde l'espace de travail).wecut recipe show <nom>liste ses rôles et emplacements de texte. Pour en écrire une, suivezwecut recipe schema. - Appliquez-la :
{
"recipe": "news-headline",
"clips": [
{ "src": "media/broll.mp4", "role": "hook" },
{ "src": "media/talk.mp4", "from": 120, "to": 165 }
],
"texts": { "label": { "text": "Nom de la page" }, "headline": { "text": "L'affirmation en une ligne", "emphasis": ["affirmation"] } },
"transcript": "media/talk.words.json",
"write": "projects/clip-01.json"
}
wecut recipe apply --input request.json (ou --input - avec le JSON sur l'entrée standard) vérifie tout et enregistre le projet ; puis preview et render-le. Les clips sans rôle alimentent body ; une section sans clip emprunte le début des images de la suivante.
- Sauvegardez la vôtre :
wecut recipe from-project projects/clip-01.json --name mon-style --write recipes/mon-style.jsonconserve les sections, transitions, emplacements de texte, style de légende, effets et la musique comme piste par défaut.
Musique : une recette peut porter sa propre piste (music.src), utilisée par défaut comme la chanson dans un modèle CapCut. Passez "music": "media/song.mp3" (ou une vidéo, dont le son est utilisé) pour la remplacer, ou "none". Une chanson tirée de la vidéo de quelqu'un d'autre peut être coupée par la plateforme après la publication ; ajouter un son tendance dans l'application lors de la publication évite cela.
Copiez la structure, pas le contenu : les images, les mots exacts et la musique des autres créateurs leur appartiennent.
Créer plusieurs clips à partir d'une longue vidéo
wecut probela source et obtenez une transcription avec les timings des mots.- Lisez la transcription et choisissez les moments (vous décidez ; WeCut ne juge pas le contenu).
- Écrivez un projet par clip, chacun avec
captions.srcpointant vers la source pour qu'une seule transcription serve chaque clip. wecut previewl'un d'eux, ajustezfocus, puiswecut renderchacun.
Dépannage
E_RANGE:todépasse la fin du fichier. Utilisezwecut probepour la durée réelle.E_PATH: le chemin est en dehors de l'espace de travail ou est une URL.E_MEDIA: le fichier n'est pas une vidéo, image ou fichier audio lisible, ou le mauvais type pour ce champ (musique dansclips, vidéo dansoverlays).E_DEPENDENCY: FFmpeg manquant, plus ancien que la version 6, ou construit sans libass. Exécutezwecut doctor.- Rendu trop lent :
--preset draft, unoutput.resplus bas, ou moins de clips par projet.render_secondsetrealtime_factordans le résultat vous indiquent la vitesse sur cette machine. - Pour voir exactement ce que FFmpeg exécutera :
wecut render project.json --dry-run.