Comment fonctionne la génération de funscript par IA

AutoScript Sync extrait le mouvement d'une vidéo grâce à un suivi de mouvement par IA qui tourne entièrement sur votre PC : il échantillonne des images, mesure le mouvement par flux optique, ajoute des modèles optionnels de pose et de profondeur, fusionne ces signaux en une seule courbe de position et place un point de script à chaque changement de direction. Le résultat est un .funscript standard enregistré à côté de la vidéo. L'adaptation à un appareil précis se fait plus tard, uniquement sur la copie envoyée à cet appareil.

Vérifié par rapport au code de l'application le 21 septembre 2026. Décrit l'application publiée, 2.121.1, sauf mention contraire sur une ligne.

Le pipeline, du fichier vidéo à l'appareil

AutoScript Sync analysis pipeline Decode, sample every Nth frame at 320 pixels, find the moving region, measure it with DIS optical flow plus optional pose and depth and background motion-vector and audio passes, fuse in a Kalman smoother, label 2-second motion-type windows, place points at reversals, save the funscript, then fit a copy to the device. Decode the video (hardware decoding first, software fallback) Sample every 4th / 3rd / 2nd frame (Fast / Balanced / High), shrink to 320 px Find the moving region (motion heatmap, or the box you draw) DIS optical flow YOLOv8-pose MiDaS depth Motion vectors Fuse into one position trace (Kalman/RTS smoother) Label 2-second windows by motion type Points at direction changes → .funscript saved beside the video Fit a copy to the connected device (speed, spacing, point density) always on optional optional + audio envelope, background passes
Le fichier enregistré s'arrête à la dernière flèche pleine. L'étape en pointillés ne s'applique qu'à la copie que l'application envoie à un appareil ; le fichier sur le disque n'est jamais adapté à un appareil en particulier.

Chaque étape en un paragraphe

Décodage et échantillonnage

La vidéo est décodée par le backend FFmpeg d'OpenCV. L'application demande d'abord le décodage matériel et se rabat sur le décodage logiciel si le codec, la version ou le pilote ne le permet pas. Un thread de travail décode en avance dans une mémoire tampon de 64 images au maximum, pour que le décodage et l'inférence IA se chevauchent au lieu de se relayer.

Le réglage Accuracy détermine combien d'images sont analysées : Fast prend une image sur 4, Balanced (par défaut) une sur 3 et High une sur 2. Sur une vidéo à 30 i/s, cela fait 7,5, 10 ou 15 échantillons par seconde ; sur une vidéo à 60 i/s, ces fréquences doublent. Chaque image échantillonnée est réduite à 320 px de large avant toute analyse, quelle que soit la résolution d'origine. Les images VR sont d'abord redressées en une vue en perspective normale d'un seul œil.

Trouver la zone en mouvement

Sauf si vous tracez vous-même un cadre avec Set Motion Region… ou Live Track, le moteur construit une carte de chaleur du mouvement, prend la zone connexe la plus chaude et l'élargit de 15 %. Le flux optique et la profondeur sont mesurés à l'intérieur de cette zone.

Mesurer le mouvement

Le flux optique est le seul signal toujours actif : le flux dense DIS mesure comment la zone se déplace entre les images échantillonnées. L'estimation de pose YOLOv8 ajoute 17 points clés du corps par personne, et l'estimation de profondeur MiDaS ajoute l'axe vers la caméra et à l'opposé que la vidéo plate masque. Les deux modèles sont optionnels ; sans eux, le moteur fonctionne sur le flux seul et l'indique. Sur un thread d'arrière-plan, l'application lit aussi les vecteurs de mouvement propres au codec et une enveloppe de volume sonore à 50 Hz, dans un budget de temps proportionnel à la durée du film.

Fusion

Le flux donne une vitesse, qui dérive quand on la cumule dans le temps. Le moteur élit donc un point d'ancrage par vidéo parmi le centre de la zone, la pose et la profondeur, et un lisseur Kalman/RTS fusionne le flux intégré avec cet ancrage en une seule courbe de position. Par défaut, l'ancrage est un mélange, échantillon par échantillon, de tous les canaux lisibles, conservé seulement s'il obtient un score au moins aussi bon que l'ancrage unique élu. Là où le suivi décroche, le trou est comblé par un mouvement rythmique prolongé à partir des mouvements voisins, et la part comblée plutôt que mesurée est inscrite dans les métadonnées du script.

Fenêtres de type de mouvement

La timeline est découpée en fenêtres de 2 secondes. Un petit classifieur attribue à chacune un type de mouvement à partir de six caractéristiques de mouvement, et une passe de lissage empêche les étiquettes de clignoter d'une fenêtre à l'autre. L'étiquette détermine la forme donnée au mouvement de cette fenêtre. Une étiquette que vous posez vous-même et qui couvre au moins la moitié d'une fenêtre prend le pas sur le classifieur pour cette fenêtre.

Les points et le fichier enregistré

Un point de script est placé à chaque inversion du mouvement, jamais moins de 120 ms après le précédent et au moins toutes les 4 secondes, puis la liste de points est simplifiée. L'application écrit un JSON .funscript standard à côté de la vidéo, sous le même nom, après avoir copié tout script existant vers .funscript.bak. Voir le format funscript pour ce qu'il contient.

Adaptation à l'appareil

La copie envoyée à un appareil, jamais le fichier enregistré, est adaptée à cet appareil : les points plus rapprochés que ce qu'il peut distinguer sont fusionnés, les segments plus rapides que sa limite de vitesse perdent de l'amplitude mais gardent leur timing, et la densité de points est plafonnée. Pour l'Autoblow AI Ultra, les inversions sont en plus placées sur une grille à 16 i/s. Dans l'application publiée, cette adaptation s'applique à l'envoi vers l'Autoblow ; son application aux appareils Intiface arrive avec la prochaine mise à jour. La façon dont l'appareil reste ensuite calé sur la vidéo est décrite dans correction de dérive et timing de synchronisation.

Où tourne chaque partie

Toute l'analyse se fait sur votre PC. Les modules d'analyse ne contiennent aucun code réseau et la vidéo n'est jamais envoyée en ligne. Le réglage Hardware propose Auto (par défaut), GPU (CUDA) et CPU.

Quel processeur utilise chaque étape
ÉtapeTourne sur
Décodage vidéoLe décodeur matériel de n'importe quel fabricant quand il est disponible, sinon le CPU
Modèles de pose et de profondeurGPU NVIDIA via CUDA (ONNX Runtime ou PyTorch) ; CPU quand aucun GPU CUDA n'est utilisable
Flux optiqueCPU (OpenCV), sur toutes les machines

Il n'y a pas d'accélération AMD ou Intel pour les modèles d'IA, et TensorRT n'est pas utilisé. Si un GPU CUDA est demandé mais ne peut pas être utilisé, la pose et la profondeur se rabattent sur le CPU et l'application indique le fournisseur réellement utilisé ; le bouton Check GPU vous dit lequel. Le chemin CPU fonctionne mais bien plus lentement : un commentaire du code issu du PC de test RTX 5080 note environ 25,8 ms par appel pour le petit modèle de profondeur sur le GPU, contre 234 ms sur le CPU.

Nous n'avons pas mesuré la vitesse sur un film entier avec un autre GPU que celui du développeur, ni sur un PC sans GPU, donc cette page ne promet aucune vitesse. La page des benchmarks expose ce qui a été mesuré, sur quoi, et ce qui ne l'a pas été.

Ce que nous n'avons pas résolu

Ces points viennent de la propre évaluation du développeur sur 28 courts extraits qu'il a scriptés à la main, tirés de cinq films sur lesquels les réglages par défaut ont été ajustés, avec la version qui suit la 2.121.1 (compilée, pas encore publiée). C'est un seul scripteur et un petit échantillon : lisez-les comme des faiblesses connues plutôt que comme un benchmark.

  • Changements de direction manqués. Le moteur a produit 1,80 changement de direction par seconde là où l'humain en a fait 2,29, soit environ 21 % de moins. Comme certains changements du moteur étaient aussi en trop ou mal placés dans le temps, seule à peu près la moitié des changements de l'humain ont été retrouvés à 150 ms près. La concordance des inversions de mouvement allait de 0,33 à 0,71 (F1, à 150 ms près) selon le film.
  • Les mouvements rapides sortent trop petits. Sur les deux films aux mouvements les plus rapides, les mouvements du moteur faisaient un quart et la moitié de la taille de ceux de l'humain. L'explication retenue pour l'instant est que les 10 échantillons par seconde de Balanced (sur une vidéo à 30 i/s) lissent et effacent le mouvement rapide.
  • Il ne s'arrête pas quand l'action s'arrête. Sur les passages que l'humain a marqués comme sans action, le moteur produisait encore environ 85 changements de direction par minute. Il refuse en revanche de créer un script quand moins de 5 % des échantillons montrent un vrai mouvement.
  • Les étiquettes de type de mouvement ne sont pas prouvées. Évalué en validation par vidéo sur les propres étiquettes du développeur, le classifieur de mouvement seul a obtenu un score inférieur à une réponse constante, et aucun chiffre de précision de l'application par défaut n'est publiable. Les étiquettes que vous posez vous-même prennent le pas sur lui.

L'éditeur de timeline, Re-analyze à pleine fréquence d'images sur une plage sélectionnée et le dépannage funscript sont les réponses pratiques aujourd'hui.

À lire ensuite

Essayez-le sur vos propres vidéos

L'essai dure une journée et tourne sur votre propre PC ; vos vidéos sont analysées localement et jamais envoyées en ligne.