LoginSignup
23
22

More than 5 years have passed since last update.

oFの映像をキャプるよ

Posted at

フロー

 流れとしては、ofxExportImageSequenceで連番書き出し→ffmpegで統合といった感じです。

1.ofxExportImageSequenceで連番書き出し

1-1.比嘉さんのレポジトリからcloneしてきます。

1-2.書き出したい範囲を囲みビルド

 プロジェクトに追加し、連番書き出しを行いたい範囲をbegin()/end()で囲みビルドするだけです。以下にも記載していますが、ぶっちゃけexampleをみた方が良いかと思います。

//この2行は.hファイルに記述
#include "ofxExportImageSequence.h"
ofxExportImageSequence exp;


void ofApp::setup(){
    exp.setup(1280, 720, 30);
    exp.setOutputDir("out");
    exp.setOverwriteSequence(true);
    exp.setAutoExit(true);
    exp.startExport();
}
void ofApp::draw(){
    exp.begin();
    ofClear(0);
    /*書き出したい何か*/
    exp.end();

    exp.draw(0, 0);
}

1-3.こんな感じでdataフォルダの中に、outというフォルダが生成され、連番画像が書き出されます。

スクリーンショット 2016-05-11 23.14.26.png

2.ffmpegで統合

 ffmpegとは、オープンソースの動画/音声ファイルのエンコーダー&デコーダーです。多種多様なファイル形式やコーデックを扱える上、マルチプラットフォームの凄いヤツです。まずは、ffmpegを手に入れましょう。
 

2-1.ffmpegをインストール

ターミナルから、homebrewでffmpegをインストールします。

brew install ffmpeg

2-2.ffmpegで統合

 これで、ffmpegが使用可能になったので、ターミナルで連番があるディレクトリまで移動して、連番画像を統合します。書き出し設定は、コーデックH.264、拡張子mov、30fpsです。処理中は、しばらくターミナルにコマンドがダーっと流れますので、コーヒーでも飲みながら待つと良いでしょう。連番画像名や書き出しファイル名やフレームレートは適宜変えてくださいね。(mbaだと60fpsちょっときつかった。。。。)

  • -r 30:フレームレートを指定
  • -i "out_%05d.tif":インポートする連番ファイル名を指定
  • -vcodec libx264:コーデックをh.264に指定
  • -pix_fmt yuv420p:エンコーダーに渡すピクセルフォーマットを指定
  • out.mov:最終的に書き出すファイル名を指定
ffmpeg -i "out_%05d.tif" -r 30 -vcodec libx264 -pix_fmt yuv420p out.mov
23
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
22