ikuzakの備忘録

数学関連のツールTeX,Tikz,Manim,Geogebraなどの備忘録です。

【Manim】複数のシーンをつなげる

あれやこれやと調べたものの…

複数のシーンをConcatしたい

Manimで1つのファイルの中で、いくつかの'Scene'に分けて作ったのだけど、
もちろん別々にレンダリングしたら、出来上がる動画ファイルは複数に分かれるワケで…。
その出来上がった動画ファイル全てをつなげて1つの動画ファイルにしたかったのだけど、これもちょっと色々ありました。

ffmpegのconcat

Manimの仕組みとしては、単一のシーンであっても、アニメーション単位で一部分の動画(partial_movie_files)が生成されて、
ffmpegによってシーン単位で1つの動画にまとめるconcat処理をするみたい。

それと同じようにffmpegで複数シーン動画を1つの動画にconcatできんじゃねーの?

と最初は考えていたのだけど。

ここを参考にconcatを試してみたのだけど、出来上がった動画がどうもおかしい。
シーン同士のつなぎ目、つまり、つなげる前のそれぞれの動画間で、映像と音声が合わなくなってる。

なんでェ…?

と思って、色々探ってみると、映像トラックと音声トラックのduration(全長)が違っているのが原因だと判明。
manim-voiceoverで音声を追加していたのだけど、もちろん動画の間、ずっと音声が流れているわけではなく、
音声トラックの最後からまだアニメーションは続くようになっているので、全長が異なる、と。

その全長を調整できりゃよかったのだけど、どうにもffmpegの仕様が分からんので、ここでffmpegでconcatする方法を断念。

この記事、書いてて思ったけど、映像トラックの終了時点にあうようにvoiceoverを空白テキストの読み上げをあえて入れることで全長を無理やり合わせるとかできねぇかな…?

結局aviutilを使った。

編集ツールとして、よく使われているだけあって、やっぱ優秀だよね。
ただ、私が全然使いこなせてねぇし、よく分かってねぇので、映像トラックと音声トラックで別々でプロジェクトに読み込んで、1つの動画にまとめたんだけど、なんかいい方法が他にあんのかな?

で、紆余曲折を経て作った拙作を公開

/* -----codeの行番号----- */