Skip to content

Instantly share code, notes, and snippets.

@hirontweet
Last active December 20, 2016 16:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hirontweet/1ba487848a7bb22bacad14d57abe2f91 to your computer and use it in GitHub Desktop.
Save hirontweet/1ba487848a7bb22bacad14d57abe2f91 to your computer and use it in GitHub Desktop.
IGGG Advent Calendar 2016, entry 21 「moviepyで写真に動きをつけてみよう」

moviepyで写真に動きをつけてみよう

JUMBO!

こんにちは、21日目を担当します。好きな図形は斜め45度の三角形こと、すぱさんです!
TwitterもGithubと同じユーザIDでやっているのですが、大丈夫です!生きてます!アハハハ

ではでは、さっそくやっていきましょう!

タイムラプス動画を作る

今回はPythonのライブラリで大量の写真からタイムラプス動画を生成するというテーマです!

でも、なんでPythonでやるんさ?フリーソフト出てるだろ、そんぐらい。と思われるかもしれませんが、これがあんまりない!あっても、無料版は制限がかかってしつこい!なら、もうプログラミング言語のライブラリとかで作れるんじゃない?で検索したらありました、MoviePy
タイムラプス専用のライブラリではありませんが、その一部にタイムラプスみたいに画像を1秒間に何枚表示して動画を作成するという機能がありました。
他にもタイムラプスを作るライブラリはあったのですが、いろんな機能があるライブラリのMoviePyにしてみました。(と言って、この機能しか使っていないけど(笑))

MoviePyの準備

Windowsをメインに使っていますが、コマンドをポチポチ打つことが多いときは、Vagrantでubuntuのインスタンスを立ち上げてぶん回してます。 では、Pythonのpipコマンドを使ってインストールします。

$ sudo pip3 install moviepy

他にもMoviePyでいろいろする上で他のライブラリなどをインストールする必要がありますが、今回はその必要が無いので、無視します。

Let's generate!

スクリプトのインポートをします

from moviepy.video.io.ImageSequenceClip import ImageSequenceClip

このImageSequenceClipが今回使う関数です。 第一引数には「画像の名前リスト」、「フォルダ名」、「Numpyのフレーム(ほかの動画の列)」などを指定することができるみたいです。
今回は、2000枚ほどある画像を一つの動画にするので、「フォルダ名」、正確には「フォルダへのパス」を渡すことにしました。

あとは、一秒間に表示されたい画像の枚数(fps)を指定するだけ。通常、映像は24fpsとか30fps、60fpsでみるので、まずそれらの値で確認してみて、調整しましょう。

フォルダへのパス、出力するファイル名、fps値を指定して生成するためのスクリプトをGithubに公開したので、ぜひお試しあれ!

おまけ

過去に、Googleが出していたPicasaで作成したタイムラプスです。
撮影場所は、群馬県前橋市の東部バイパスと17号の交差点の歩道橋で撮影しました。

Youtube

Hasta la vista!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment