Como funciona a geração de funscript com IA
O AutoScript Sync lê o movimento de um vídeo com rastreamento de movimento por IA que roda inteiramente no seu PC: ele amostra quadros, mede o movimento com fluxo óptico, adiciona modelos opcionais de pose e profundidade, funde esses sinais num único traçado de posição e coloca um ponto do script em cada mudança de direção. O resultado é um .funscript padrão salvo ao lado do vídeo. O ajuste a um dispositivo específico acontece depois, apenas na cópia enviada a esse dispositivo.
Conferido com o código do app em 21 de setembro de 2026. Descreve o app lançado, 2.121.1, salvo quando uma linha diz o contrário.
O pipeline, do arquivo de vídeo ao dispositivo
Cada etapa em um parágrafo
Decodificação e amostragem
O vídeo é decodificado pelo backend FFmpeg do OpenCV. O app pede primeiro a decodificação por hardware e recorre à decodificação por software se o codec, a build ou o driver não conseguirem fazê-la. Uma thread de trabalho decodifica adiantado num buffer de até 64 quadros, para que a decodificação e a inferência de IA se sobreponham em vez de se revezarem.
A configuração Accuracy decide quantos quadros são analisados: Fast pega a cada 4º quadro, Balanced (o padrão) a cada 3º e High a cada 2º. Em vídeo de 30 fps, isso dá 7,5, 10 ou 15 amostras por segundo; em vídeo de 60 fps, as taxas dobram. Cada quadro amostrado é reduzido para 320 px de largura antes de qualquer análise, seja qual for a resolução original. Vídeos de RV são primeiro desentortados para uma vista em perspectiva normal de um olho.
Encontrar a região em movimento
A menos que você mesmo desenhe uma caixa com Set Motion Region… ou Live Track, o motor monta um mapa de calor do movimento, pega a área conectada mais quente e a amplia em 15%. O fluxo óptico e a profundidade são medidos dentro dessa região.
Medir o movimento
O fluxo óptico é o único sinal que sempre roda: o fluxo denso DIS mede como a região se move entre os quadros amostrados. A estimativa de pose com YOLOv8 adiciona 17 pontos-chave do corpo por pessoa, e a estimativa de profundidade com MiDaS adiciona o eixo de aproximação e afastamento da câmera que o vídeo plano esconde. Os dois modelos são opcionais; sem eles, o motor roda só com o fluxo e avisa isso. Numa thread em segundo plano, o app também lê os vetores de movimento do próprio codec e um envelope de volume do áudio a 50 Hz, dentro de um limite de tempo que cresce com a duração do filme.
Fusão
O fluxo dá a velocidade, que se desvia quando é somada ao longo do tempo. Por isso o motor elege uma âncora por vídeo a partir do centro da região, da pose e da profundidade, e um suavizador Kalman/RTS funde o fluxo integrado com essa âncora num único traçado de posição. Por padrão, a âncora é uma mistura, amostra a amostra, de todos os canais legíveis, mantida apenas quando pontua pelo menos tão bem quanto o canal único eleito. Onde o rastreamento falha, a lacuna é preenchida com movimento rítmico continuado a partir dos cursos ao redor, e a parcela que foi preenchida em vez de medida é gravada nos metadados do script.
Janelas por tipo de movimento
A linha do tempo é cortada em janelas de 2 segundos. Um pequeno classificador rotula cada uma por tipo de movimento a partir de seis características de movimento, e uma passada de suavização impede que os rótulos fiquem alternando entre janelas. O rótulo decide como o movimento daquela janela é moldado. Um rótulo que você mesmo define e que cobre pelo menos metade de uma janela prevalece sobre o classificador nessa janela.
Os pontos e o arquivo salvo
Um ponto do script é colocado em cada inversão do movimento, nunca menos de 120 ms depois do anterior e pelo menos a cada 4 segundos, e a lista de pontos é então simplificada. O app grava um JSON .funscript padrão ao lado do vídeo, com o mesmo nome, depois de copiar qualquer script existente para .funscript.bak. Veja o formato funscript para saber o que há dentro.
Ajuste ao dispositivo
A cópia enviada a um dispositivo, nunca o arquivo salvo, é ajustada a esse dispositivo: pontos mais próximos do que ele consegue resolver são fundidos, trechos mais rápidos que seu limite de velocidade perdem amplitude, mas mantêm o tempo, e a densidade de pontos é limitada. Para o Autoblow AI Ultra, as inversões também são colocadas numa grade de 16 fps. No app lançado, esse ajuste vale para o envio ao Autoblow; aplicá-lo também aos dispositivos do Intiface vem na próxima atualização. Como o dispositivo depois se mantém no tempo do vídeo é explicado em correção de desvio e tempo de sincronização.
Onde cada parte roda
Toda a análise acontece no seu PC. Os módulos de análise não têm nenhum código de rede e o vídeo nunca é enviado. A configuração Hardware oferece Auto (o padrão), GPU (CUDA) e CPU.
| Etapa | Roda em |
|---|---|
| Decodificação de vídeo | O decodificador por hardware de qualquer fabricante, quando disponível; caso contrário, a CPU |
| Modelos de pose e profundidade | GPU NVIDIA via CUDA (ONNX Runtime ou PyTorch); CPU quando nenhuma GPU CUDA pode ser usada |
| Fluxo óptico | CPU (OpenCV), em todas as máquinas |
Não há aceleração AMD ou Intel para os modelos de IA, e o TensorRT não é usado. Se uma GPU CUDA for pedida mas não puder ser usada, a pose e a profundidade recorrem à CPU e o app informa o provedor realmente em uso; o botão Check GPU diz qual é. O caminho pela CPU funciona, mas é bem mais lento: um comentário no código, do PC de teste com RTX 5080, registra o modelo de profundidade pequeno a cerca de 25,8 ms por chamada na GPU contra 234 ms na CPU.
Não medimos a velocidade com um filme inteiro em nenhuma GPU além da do próprio desenvolvedor, nem num PC só com CPU, então esta página não faz nenhuma promessa de velocidade. A página de benchmarks mostra o que foi medido, em quê, e o que não foi.
O que ainda não resolvemos
Estes resultados vêm da avaliação do próprio desenvolvedor com 28 clipes curtos que ele roteirizou à mão, tirados de cinco filmes nos quais os padrões foram ajustados, usando a build posterior à 2.121.1 (compilada, ainda não lançada). É um único roteirista e uma amostra pequena, então leia-os como fraquezas conhecidas, não como um benchmark.
- Mudanças de direção perdidas. O motor fez 1,80 mudanças de direção por segundo onde o humano fez 2,29, cerca de 21% a menos. Como algumas das viradas do motor também eram extras ou fora de tempo, só mais ou menos metade das viradas do humano foram acertadas dentro de 150 ms. A concordância nas viradas de curso variou de 0,33 a 0,71 (F1, dentro de 150 ms) conforme o filme.
- Cursos rápidos saem pequenos. Nos dois filmes com os cursos mais rápidos, os cursos do motor tiveram um quarto e metade do tamanho dos do humano. A explicação provisória é que as 10 amostras por segundo do Balanced (em vídeo de 30 fps) suavizam o movimento rápido até ele sumir.
- Ele não para quando a ação para. Em trechos que o humano marcou como sem ação, o motor ainda produziu cerca de 85 mudanças de direção por minuto. Ele se recusa, sim, a fazer qualquer script quando menos de 5% das amostras mostram movimento real.
- Os rótulos de tipo de movimento não estão comprovados. Com validação separada por vídeo nos rótulos do próprio desenvolvedor, o classificador de movimento sozinho pontuou abaixo de um chute constante, e nenhum número de precisão do app padrão está em condições de ser publicado. Os rótulos que você mesmo define prevalecem sobre ele.
O editor de linha do tempo, o Re-analyze na taxa de quadros completa sobre um trecho selecionado e a solução de problemas de funscript são as respostas práticas hoje.
Leia a seguir
- Fluxo óptico: ler o movimento entre quadrosO sinal sobre o qual todo script é construído, e como ele é impedido de se desviar.
- Estimativa de pose com YOLOv8Qual modelo cada nível de Accuracy usa e o que os pontos-chave acrescentam.
- Estimativa de profundidade com MiDaSO eixo em direção à câmera, e uma escala de profundidade por vídeo.
- Como o dispositivo se mantém no tempoAs regras de sincronia para o Autoblow, os dispositivos do Intiface e o DeoVR.
- Benchmarks e mediçõesO que foi medido, em qual máquina, e o que não foi.
- O gerador de funscript com IAO que cada parte de IA contribui e como ela aprende com suas edições.
Experimente nos seus próprios vídeos
O teste dura um dia e roda no seu próprio PC; seus vídeos são analisados localmente e nunca são enviados.