Gemini Omni 1.1 Flash génère des clips de 10 secondes. L'extension de scène est la façon de dépasser cette limite : chaque appel d'extension ajoute 10 secondes supplémentaires, jusqu'à un total cumulatif de 40 secondes.
Le mécanisme existait dans le modèle d'aperçu, mais il n'était pas très utile. L'aperçu examinait la dernière seconde de séquence avant de continuer, ce qui est un contexte suffisant pour maintenir les couleurs à peu près cohérentes et rien d'autre. Les personnages changeaient de vêtements. Les mouvements de caméra se réinitialisaient. La version GA du 27 août 2026 a étendu cette fenêtre à 10 secondes de contexte précédent, et Google attribue à ce changement une « meilleure cohérence visuelle et adhésion narrative ».
Ce guide explique comment l'appeler, quelles sont les limites réelles et comment éviter qu'une séquence de 40 secondes ne s'effondre au troisième segment.
L'appel d'extension de base
L'extension fonctionne via l'API Files. Téléchargez le clip, puis passez son URI avec une invite décrivant ce qui se passe ensuite :
import base64
from google import genai
client = genai.Client()
video_file = client.files.upload(file="my_video.mp4")
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "document", "uri": video_file.uri},
{"type": "text", "text": "Continue the scene."},
],
)
with open("extended.mp4", "wb") as f:
f.write(base64.b64decode(interaction.output_video.data))
Les téléchargements sont traités de manière asynchrone, alors interrogez l'état du fichier avant d'envoyer l'interaction :
import time
while video_file.state == "PROCESSING":
time.sleep(10)
video_file = client.files.get(name=video_file.name)
if video_file.state == "FAILED":
raise ValueError(video_file.state)
Si la vidéo que vous étendez provient d'Omni lors de la même session, ignorez entièrement le téléchargement et enchaînez plutôt sur l'ID d'interaction. Ce chemin est moins coûteux en jetons et conserve plus d'état :
res2 = client.interactions.create(
model="gemini-omni-1.1-flash",
previous_interaction_id=res1.id,
input="The camera pulls back to reveal the whole street.",
)
Le tutoriel de l'API couvre le reste de l'interface de requête, y compris les options de résolution et de livraison.
Introduire un personnage dans l'extension
Vous pouvez joindre des médias de référence à une extension et y faire référence depuis l'invite. Les références téléchargées obtiennent des emplacements que vous adressez comme <IMAGE_REF_0>, <IMAGE_REF_1>, et ainsi de suite :
video_file = client.files.upload(file="my_video.mp4")
character_img = client.files.upload(file="character.png")
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "document", "uri": video_file.uri},
{"type": "document", "uri": character_img.uri},
{"type": "text", "text": "Extend this video: have the character shown in <IMAGE_REF_0> enter the scene and wave."},
],
)
Les références vidéo fonctionnent également, limitées à trois clips de trois secondes chacun. Le modèle les lit pour le mouvement et l'apparence ; l'audio des clips de référence est ignoré.
Les limites à connaître avant de planifier une séquence
40 secondes est le plafond. Quatre segments au total : une génération plus trois extensions. Il n'y a aucun moyen d'aller plus loin dans une seule séquence.
Ajout seulement. L'extension ajoute à la fin d'un clip. Vous ne pouvez pas insérer des séquences au début ou au milieu. Si le segment deux est incorrect, vous régénérez à partir du segment deux et tout ce qui suit disparaît avec lui.
L'entrée téléchargée est limitée à 10 secondes. C'est la limite pour la vidéo que vous téléchargez. Les chaînes multi-tours via previous_interaction_id n'y sont pas soumises, car le modèle détient déjà l'état antérieur.
Pas de dialogue sur les téléchargements étendus. Vous pouvez étendre silencieusement le clip téléchargé de quelqu'un d'autre, ou travailler dans une interaction multi-tours, mais vous ne pouvez pas ajouter de dialogue lors de l'extension d'un téléchargement.
Restrictions régionales. Le téléchargement et l'édition de vidéos ne sont pas disponibles dans l'Espace économique européen, en Suisse et au Royaume-Uni. Les vidéos générées par le modèle restent modifiables dans ces régions, de sorte que le chemin previous_interaction_id y fonctionne toujours, tandis que le chemin de téléchargement ne fonctionne pas.
Une vidéo à la fois. Le modèle ne raisonnera pas sur plusieurs vidéos d'entrée.
Ébaucher l'arc complet avant de le rendre
Voici le flux de travail qui permet d'économiser le plus d'argent et le plus de frustration.
Une séquence de 40 secondes en 720p coûte environ 4,06 $ en sortie vidéo, et le mode d'échec est spécifique : l'histoire dérive quelque part dans le segment trois, vous régénérez donc les segments trois et quatre, et parfois cela modifie quelque chose que vous aimiez au début du segment trois. Vous pouvez passer par plusieurs rendus complets pour trouver la version qui tient.
Ébauchez d'abord l'arc complet en 360p. Il génère jusqu'à 60 % plus vite pour un tiers du coût, de sorte que les mêmes quatre segments coûtent environ 1,35 $. Confirmez que l'histoire survit aux quatre extensions, puis refaites le rendu en 720p ou plus avec les invites que vous avez validées. L'article sur les tarifs contient le calcul complet.
Définissez la résolution dans le format de réponse :
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "document", "uri": video_file.uri},
{"type": "text", "text": "Continue the scene."},
],
response_format={"type": "video", "resolution": "360p"},
)
Écrire des invites qui survivent à quatre segments
Quelques schémas qui tiennent mieux que d'autres.
Décrivez le changement, pas toute la scène. Le modèle voit déjà 10 secondes de ce qui a précédé. Redécrire le décor l'invite à réinterpréter ce qui est déjà à l'écran. « La caméra zoome sur la porte » vaut mieux qu'un nouveau paragraphe sur la pièce.
Donnez-lui un mouvement par segment. Les extensions qui demandent deux temps ont tendance à livrer une version précipitée des deux. Dix secondes, c'est une action.
Maintenez les ancres de continuité explicites. Nommer la chose qui doit rester constante (« la même veste rouge », « le même angle bas ») donne au modèle quelque chose à quoi s'accrocher à travers la jointure.
Ne luttez pas contre la limite d'ajout seulement. Planifiez votre séquence dans l'ordre de lecture. Il n'y a aucun moyen de corriger le début plus tard sans tout régénérer après.
L'élaboration des invites a beaucoup de poids ici, et le guide d'invite de Veo couvre des principes qui se transfèrent entre les modèles vidéo.
Vérifier vos extensions de la même manière deux fois
Quatre appels en chaîne signifient quatre endroits où un changement de comportement du modèle peut apparaître, et la sortie vidéo est difficile à vérifier visuellement pour les régressions lorsque vous ne regardez que le rendu final.
Enregistrez chaque étape comme sa propre requête dans Apidog, avec l'URI du fichier et l'ID d'interaction dans des variables d'environnement afin de pouvoir réexécuter un segment spécifique sans reconstruire la chaîne à la main. Affirmez la forme de la réponse, car une extension à plus haute résolution peut pousser le fichier au-delà de 4 Mo et vous faire passer du base64 en ligne à un URI. Augmentez le délai d'attente bien au-delà de la valeur par défaut ; les extensions prennent plus de temps que la génération initiale car le modèle lit d'abord 10 secondes de contexte.
Ce harnais coûte dix minutes et est rentabilisé la première fois que vous avez besoin de savoir si le problème de jointure vient de votre invite ou d'une mise à jour du modèle. Téléchargez Apidog pour le configurer.
FAQ
Quelle est la durée maximale d'une vidéo Gemini Omni ? 40 secondes cumulatives, construites à partir d'une génération de 10 secondes plus trois extensions de 10 secondes.
Puis-je étendre une vidéo que j'ai filmée moi-même ? Oui, jusqu'à 10 secondes d'entrée, en dehors de l'EEE, de la Suisse et du Royaume-Uni. Téléchargez-la via l'API Files et passez l'URI.
Puis-je ajouter au début d'un clip ? Non. L'extension ajoute uniquement à la fin.
Pourquoi mon personnage change-t-il d'apparence entre les segments ? Généralement, l'invite redécrit la scène au lieu du changement, ou l'ancre de continuité n'est pas explicite. Nommez ce qui doit rester identique et envisagez de passer une image de personnage comme référence dans l'extension.
Chaque extension coûte-t-elle un supplément ? Oui. Chaque extension facture ses propres 10 secondes de sortie vidéo, plus les jetons d'entrée pour le contexte qu'elle lit.
Et si j'ai besoin de plus de 40 secondes ? Veo 3.1 étend 7 secondes à la fois jusqu'à 148 secondes, en 720p seulement. La comparaison des modèles couvre ce compromis, et le guide de l'API de Veo contient les détails d'intégration.
L'extension de scène est la fonctionnalité qui fait passer Omni de la démo à un produit livrable, mais elle récompense la planification. Scénarisez les quatre temps, ébauchez l'arc complet en 360p, limitez chaque invite à un seul mouvement, et ne dépensez de l'argent en 720p que pour la version dont vous savez déjà qu'elle fonctionne.
