はじめに
nannou は Rustのクリエイティブコーディングライブラリです。
今回の記事ではそのスケッチを動画に書き出す方法を備忘録として書いておきます。
環境
nannou : 0.14.1
Linux
概要
- nannouのAPIでフレームをキャプチャする
- png形式で保存
- ffmpegでmp4に変換
フレームをキャプチャしてpngで保存
以下のようなコードで ./cap/プロジェクト名/フレーム数.png
でpngで書き出せる。
fn captured_frame_path(app: &App, frame: &Frame) -> std::path::PathBuf {
app.project_path()
.expect("failed to locate `project_path`")
.join("./cap/")
.join(app.exe_name().unwrap())
.join(format!("{:04}", frame.nth()))
.with_extension("png")
}
fn view(app: &App, model: &Model, frame: Frame){
let file_path = captured_frame_path(app, &frame);
app.main_window().capture_frame(file_path);
}
ffmpegでmp4に変換
ffmpegはクロスプラットフォームの録画とか変換用のツールです。
公式サイトやGoogle検索を頼りにインストールしてください。
cd cap/プロジェクト名 # 先程のキャプチャしたpngのあるフォルダへ移動
ffmpeg -framerate 30 -i %04d.png -vcodec libx264 -pix_fmt yuv420p -r 60 out.mp4
を行うことで、out.mp4
という動画ファイルが完成します。
ツイッターに上げるなら
ツイッターでの動画の規約は以下
■動画の形式
スマートフォンのアプリではMP4とMOVの動画形式をサポート。ブラウザではMP4(H264形式、AACオーディオ)をサポートしています。■動画のサイズ(容量)
アップロードできるサイズは最大512MBです。■動画の時間
アップロードできる動画の長さは2分20秒間以内です。■ブラウザでアップできる動画の解像度と縦横比
最小解像度: 32 x 32
最大解像度: 1920 x 1200、または1200 x 1900
縦横比: 1:2.39~2.39:1の範囲
最大フレームレート: 40fps
最大ビットレート: 25Mbps