その他 技術

コマンドラインからmp4動画の任意場面をキャプチャする

キャプチャに使用するプログラムはフリーの動画プレイヤーとして有名なVLC Media Playerです。
インストールするとGUIで使用できるのはもちろんですが、CUIでも使用できます。
そして、VLCにはキャプチャ機能が備わっており、CUIからも使用できます。つまり、これはプログラムから起動(例えばfork&exec)させ、裏(GUI表示なし)でキャプチャができることを意味しています。

キャプチャは以下のコマンドで可能です。

cvlc hoge.mp4 --rate=1 --video-filter=scene --vout=dummy --start-time=0 --stop-time=0.5 --scene-format=jpg --scene-ratio=500 --scene-prefix=foo --scene-replace --scene-path=. vlc://quit

start-timeとstop-timeでキャプチャする対象となるシーンの位置を指定します。(単位は秒)
できるだけコマンド実行を早く終わらせるために、start-timeとstop-timeの間は小さくしたほうがいいです。(ちなみに同じ値にするとキャプチャできません。)
scene-ratioはキャプチャをする間隔(何フレーム毎にキャプチャするか)で、上記のように比較的大きな値にしておけばキャプチャは1度しか行われません。(上記の場合0.5秒間なので500フレームもあるはずないということです。最初のフレームをキャプチャした後、次のキャプチャまで500フレーム待ちますが、その前にstop-timeになって終了、、、という流れです。)

実行後、実行したディレクトリに
foo.jpg
というファイルができているはずです。

-その他, 技術

© 2021 BLuE AND PuRE