====== 画面のキャプチャ ======
Processingにはデフォルトで連番画像を動画に変換する手法( https://www.youtube.com/watch?v=G2hI9XL6oyk )がありますが、少し情報も古く手順も多いためあまりおすすめしません。お仕事でハイエンドな動画をProcessingから出力する以外はあまり用途がないかなと思います。品質にはこだわらず簡単にProcessingの実行画面を動画にする場合は下記の方法がおすすめです。
* macOS: https://support.apple.com/ja-jp/HT208721
* Windows10: https://www.pasoble.jp/windows/10/screen-capture.html
===== ちょっと手間だけど,授業取りまとめ用途 =====
上記のやり方でそのまま画面キャプチャしても動画は作成できますが,教員として学生が提出したプログラムを動画ファイル化
する場合は結構手間です.そこで,指定された動画ファイルに自由にエフェクトを付与する課題をサンプルに一部自動化のためのメモを残します.
まだうまく動作が確認できてないので,これは宿題です.
学生からは sample.mp4 を読み込んで,動画に対してエフェクトを掛ける課題を課したとします.機械的に動画ファイルを作成するため,まずはdraw()関数の最後に以下の記述を追加します.こうすると,動画ファイルの再生が終わったタイミングで自動でプログラムも終了してれます.
if ( movie.time() < movie.duration()) {
frameRate(30);
movie.noLoop();
saveFrame("frames/####.png");
} else {
StringList strout=new StringList(); //出力が入る変数
StringList strerr=new StringList(); //エラーが入る変数
String absolute_path_to_png = "/Users/baba/Desktop/gomi/frames/";
String absolute_path_to_mp4 = "/Users/baba/Desktop/gomi/";
String filename_mp4 = "output.mp4";
String command_ffmpeg =
"ffmpeg -i "
+absolute_path_to_png+
"*.png -vcodec libx264 -pix_fmt yuv420p -r 30 "
+absolute_path_to_mp4+filename_mp4;//+";rm "+absolute_path_to_png+"*.png";
print(command_ffmpeg);
//shell(strout, strerr, command_ffmpeg); //三つ目の引数に実行したいコマンドを入力する
exec(command_ffmpeg);
for (String el : strout) {
println(el);
}
for (String el : strerr) {
println(el);
}
exit();
}