Extensão de vídeo e interpolação de quadros no Gemini Omni: API e continuidade
Fluxo prático para estender um clipe ou ligar dois quadros-chave e verificar a continuidade visual e sonora antes da entrega.
Conteúdo

Você já tem um clipe curto, mas a ação termina cedo demais; ou tem apenas o primeiro e o último quadro, sem o movimento entre eles. Com gemini-omni-1.1-flash, é possível acrescentar uma continuação de 3–10 segundos ou gerar a transição entre duas imagens-limite; ao final, você saberá qual modo escolher, como chamar a API e como decidir se o resultado está pronto para entrega.
Use extensão no final quando quiser preservar movimento, câmera e áudio de um clipe existente; use interpolação do primeiro e último quadro quando início e fim já estiverem definidos e só faltar o meio; receber um MP4 encerra a geração, mas não a revisão de sujeito, movimento, emenda e áudio.
Você deve estender o clipe ou interpolar dois quadros?
Se há vídeo de origem, comece pela extensão no final; se o resultado precisa chegar a uma imagem final específica, comece pela interpolação. A extensão não usa esse quadro-alvo como limite, então escolhê-la para esse trabalho pode criar mais um ciclo de geração e revisão.
| Trabalho | Entrada | Uso indicado | Continuidade mais crítica |
|---|---|---|---|
| Extensão no final | Um vídeo, com referências opcionais | Continuar uma ação, movimento de câmera ou cena | Pose, velocidade, direção da câmera, luz e áudio na emenda |
| Interpolação inicial/final | Primeiro quadro, último quadro e descrição | Preencher o movimento entre dois estados definidos | Identidade, relações espaciais, trajetória e chegada ao quadro final |
A extensão de vídeo enviado foi feita para incrementos curtos: o guia oficial descreve continuações de 3–10 segundos, e o guia de prompts também documenta passos de 10 segundos até 40 segundos no total. O clipe enviado deve ter no máximo 10 segundos e só pode receber material no final; use um editor convencional se precisar inserir um plano no começo ou no meio.
Decida estas quatro coisas antes da chamada
Defina modelo, saída, comportamento dos cortes e originais usados na comparação antes de gerar. Se uma dessas decisões ficar aberta, você pode precisar repetir o trabalho ou não conseguir separar uma mudança do modelo de uma mudança já presente na fonte.
Use o model ID GA
Use o model ID GA gemini-omni-1.1-flash. Ele entrou em disponibilidade geral em 27 de agosto de 2026; o endpoint anterior gemini-omni-flash-preview está programado para descontinuação em 30 de setembro de 2026.
Valide a continuidade primeiro em 720p
Na primeira tentativa, use o padrão 720p para separar problemas de continuidade da entrega em alta resolução. resolution em response_format aceita 360p, 720p, 1080p e 4k; a documentação identifica 1080p e 4k como saídas com upscale, com 16:9 como proporção padrão e 9:16 sob solicitação. Para resultados acima de 4 MB, especialmente acima de 720p, use delivery="uri", espere o arquivo ficar ativo e faça o download.
Escolha entre plano contínuo e corte intencional
Defina se a extensão é um plano contínuo ou um corte intencional. No prompt de extensão, 0s é o começo do trecho novo, não do clipe original. Peça “um único plano contínuo” e “sem cortes” quando a ação não deve quebrar. Se o corte for desejado, indique quando ocorrerá no trecho acrescentado.
Guarde o clipe original e as imagens-limite
Preserve o clipe original e as duas imagens-limite. O guia diz que Omni usa os últimos 10 segundos do vídeo como contexto e pode modificar alguns quadros finais para construir a transição. Portanto, comparar fonte e resultado faz parte da revisão de continuidade.
Já tem um clipe? Estenda a partir do final
Use extensão no final quando já existe vídeo e você quer continuar por alguns segundos a ação, o movimento de câmera ou a cena. Comece com uma chamada mínima em 720p e depois restrinja sujeito, movimento, câmera e áudio.
Execute primeiro uma chamada mínima em 720p
O exemplo em Python envia o clipe pela Files API, aguarda o processamento e passa a URI e as instruções para interactions.create. Ele fica em 720p para você resolver a continuidade antes de lidar com a entrega do arquivo em alta resolução.
import base64
import time
from google import genai
client = genai.Client()
video_file = client.files.upload(file="my_video.mp4")
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)
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "video", "uri": video_file.uri},
{
"type": "text",
"text": (
"Continue a cena como um único plano sem interrupções. "
"Mantenha o mesmo sujeito, figurino, direção da câmera, iluminação e velocidade do movimento. Sem cortes e sem novo diálogo."
),
},
],
response_format={"type": "video", "resolution": "720p"},
)
with open("extended.mp4", "wb") as f:
f.write(base64.b64decode(interaction.output_video.data))
Escreva condições observáveis no prompt
Não pare em “continue a cena”. Especifique pelo menos cinco dimensões observáveis: o que deve permanecer no sujeito, como a ação evolui, como a câmera se move, se luz e ambiente podem mudar e se cortes ou novo som são permitidos. “A mão direita continua subindo na mesma velocidade” pode ser verificado; “deixe natural” não.
Defina task apenas quando o prompt escolher o modo errado
Se o prompt não selecionar o modo, acrescente {"video_config": {"task": "extend"}} em generation_config. O guia recomenda tentar primeiro pelo texto, pois task aplica restrições mais rígidas. Para um vídeo gerado no turno anterior, previous_interaction_id permite continuar sem novo upload. O estado precisa estar armazenado: uma saída criada com store=false não poderá ser editada depois por esse ID.
Mude o plano quando houver limites de fala ou região
Há limites de fala e região. Um vídeo enviado em que alguém já fala não pode ser estendido atualmente com novo diálogo; uma continuação silenciosa ou sem pedido de fala é permitida. Fala é suportada ao estender em vários turnos um vídeo gerado pelo modelo via previous_interaction_id. Editar ou estender vídeo enviado não está disponível no EEE, Suíça e Reino Unido, enquanto a extensão de vídeo gerado pelo modelo segue disponível nas regiões atendidas.
Só tem os quadros-limite? Gere o movimento entre eles
Use interpolação quando início e fim estão claros, mas falta o movimento intermediário. Envie as duas imagens em ordem e descreva como sujeito, câmera e ambiente devem percorrer o primeiro estado até o último.
Envie primeiro as duas imagens-limite
A interpolação é adequada quando início e fim estão definidos, mas falta o movimento. Coloque as duas imagens em ordem em input e descreva como sujeito, câmera e ambiente devem percorrer os estados. O exemplo lê JPEGs locais, codifica em Base64 e solicita 720p.
import base64
from pathlib import Path
from google import genai
client = genai.Client()
first_frame_b64 = base64.b64encode(Path("first.jpg").read_bytes()).decode()
last_frame_b64 = base64.b64encode(Path("last.jpg").read_bytes()).decode()
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "image", "data": first_frame_b64, "mime_type": "image/jpeg"},
{"type": "image", "data": last_frame_b64, "mime_type": "image/jpeg"},
{
"type": "text",
"text": (
"Faça uma transição natural do primeiro para o último quadro. "
"Preserve a identidade do sujeito e a direção da câmera, mantenha a trajetória contínua e evite cortes bruscos."
),
},
],
response_format={"type": "video", "resolution": "720p"},
)
with open("interpolation.mp4", "wb") as f:
f.write(base64.b64decode(interaction.output_video.data))
Use image_to_video apenas se o modo continuar incorreto
Depois de enviar as imagens em ordem, diga claramente que a primeira é o início e a segunda é o fim. Se o modo ainda estiver errado, acrescente image_to_video como valor de task; ele complementa a descrição de sujeito, câmera e movimento, não a substitui.
Quanto maior a diferença, mais importante é ordenar as mudanças
Quadros-limite compatíveis deixam o objetivo mais claro. Mantenha identidade, proporção, eixo de câmera e disposição espacial razoavelmente consistentes; se houver grandes mudanças, dê uma ordem: primeiro o sujeito gira, depois a câmera se move e por fim a luz muda. É uma orientação de produção, não garantia; o vídeo precisa ser inspecionado.
O resultado pode ser entregue? Revise emenda, sujeito, movimento e áudio
O critério não é o vídeo “parecer próximo”, mas você conseguir apontar cada defeito e transformá-lo em uma instrução útil para a próxima geração. Assista uma vez em velocidade normal, revise a emenda devagar ou quadro a quadro e ouça o áudio separadamente.
| Dimensão | O que verificar | Texto útil para nova tentativa |
|---|---|---|
| Sujeito | Rosto, cabelo, roupa, acessórios, proporções, mãos e objetos | “Mantenha a cor do casaco e o objeto na mão direita.” |
| Movimento | Direção, velocidade, equilíbrio, contatos, olhar e trajetória da câmera | “Continue o passo para a direita sem acelerar nem inverter.” |
| Edição e imagem | Salto, exposição, temperatura, profundidade de campo, perspectiva e fundo | “Mantenha o mesmo eixo e distância focal; não corte.” |
| Áudio | Ambiente, batida, diálogo, reverberação, volume, cliques e ruído novo | “Continue o ambiente, não adicione fala e preserve a batida.” |
Na extensão, revise a emenda; na interpolação, os dois extremos
Na extensão, compare aproximadamente o último segundo da fonte com o primeiro da continuação e verifique se o resultado alterou os quadros finais originais. Na interpolação, avalie o caminho e confirme que o início corresponde à primeira imagem e o fim chega à segunda, em vez de apenas reproduzir um estilo parecido.
Restrinja uma variável por revisão
A cada revisão, restrinja uma variável principal. Corrija primeiro a identidade, depois o movimento e então câmera e som. Isso facilita avaliar cada mudança. Use “a manga esquerda muda de cor na emenda”, não “deixe mais cinematográfico”.
Não force este endpoint em trabalhos inadequados
Este endpoint não é um editor de uma chamada quando o trabalho precisa inserir um plano no meio de uma peça longa, continuar diálogo existente ou raciocinar sobre vários clipes de origem. Se qualquer limite abaixo atingir o projeto, divida-o em planos ou migre primeiro para um fluxo de edição convencional.
- O clipe enviado só pode ser estendido no final e deve ter até 10 segundos.
- Não é possível acrescentar diálogo a um vídeo enviado em que alguém fala; edição de voz também não é suportada.
- Referências de áudio não podem ser enviadas; áudio de referência de vídeo é ignorado.
- São aceitos no máximo três vídeos de referência, de até três segundos cada; raciocínio entre vários vídeos não é suportado.
- Instruções de sistema,
temperature,top_p, sequências de parada e campo separado de negative prompt não são suportados. Escreva proibições no prompt comum. - Todo vídeo gerado contém SynthID invisível, e entradas e saídas passam por filtros de segurança.
- A documentação afirma suporte completo a prompts em inglês; outros idiomas não foram avaliados e podem variar.
A saída prática é gerar planos curtos separadamente e depois montar e mixar tudo em um editor convencional. Isso costuma economizar mais tempo do que insistir para uma extensão no final fazer inserção no meio, continuação de diálogo ou raciocínio entre vários clipes.
Passe por esta lista antes da entrega
Uma chamada bem-sucedida não equivale à aprovação de qualidade. Antes de entregar, confirme que:
- você guardou o vídeo de entrada, o resultado e as duas imagens-limite;
- você registrou o model ID, a resolução e o prompt completo;
- você revisou a emenda quadro a quadro e verificou se os quadros finais da fonte mudaram;
- você confirmou que a interpolação começa na primeira imagem e chega de fato à segunda;
- você ouviu o áudio separadamente para detectar cortes, cliques ou ruído novo;
- você conferiu região, duração de entrada, diálogo e limites das referências.
Se algum item não estiver explicado, revise o resultado em vez de aprová-lo apenas pelo status da API.