Resolvi meu problema usando o primeiro snippet da minha pergunta (alterando a taxa de quadros do clipe de 30fps para 120fps), mas também definindo AssumeFPS(30)
para o vídeo final combinado, anexando essa função ao final do último filtro Eu usei. Então, por exemplo:
clip30 = AviSource("0326.avi").ChangeFPS(120)
clip120 = AviSource("0326-120fps.avi")
StackHorizontal(clip30, clip120).AssumeFPS(30)
funciona bem. Agora eu tenho um vídeo que tem a duração do clipe de 120fps a 30fps (quatro vezes a duração da gravação original) com cada quadro de 30fps quadruplicado, exatamente como eu queria.
Eu realmente não sei porque o AssumeFPS(30)
final foi necessário, já que o clipe que eu ganho sem ele também está em 30fps. Eu verifiquei a saída quadro a quadro no AviDemux, e sem essa chamada final para AssumeFPS
, os quadros de clip30
não são quadruplicados como deveriam.