動画を扱う基礎的な方法をみてゆきます。

プロジェクト名は video とします。

movie.png

以下、ofApp.hofApp.cpp の違いに注意してください。


動画ファイルを読み込んで表示させる

ofVideoPlayer オブジェクトを使うと、動画の読み込みや、再生などの操作を行うことができます。

まずはじめに ofApp.h ヘッダファイルに、 ofVideoPlayer オブジェクトを追加します。

class ofApp : public ofBaseApp {
    public:
    ...略...
    
    ofVideoPlayer movie;
};

次に、動画ファイルの読み込みと再生を行います。読み込みたい動画ファイル画像を bin/data/ に配置してください。

サンプルの動画ファイルはこちら。

fingers.mov

fingers.mov

void ofApp::setup() {
    ofBackground(255, 255, 255);
    
    movie.load("fingers.mov");    // 動画ファイルの読み込み
    movie.setLoopState(OF_LOOP_NORMAL);
    movie.play();
}

void ofApp::update() {
    movie.update();
}

void ofApp::draw() {
    ofSetColor(255, 255, 255);
    movie.draw(20, 20);
}

再生の状況をテキストで表示

現在のフレーム数、再生時間、再生速度を表示させてみます。

void ofApp::draw() {
    ofSetColor(255, 255, 255);
    movie.draw(20, 20);
    
    // 再生の状況をテキストで表示
    ofSetColor(0, 0, 0);
    ofDrawBitmapString("frame: " + ofToString(movie.getCurrentFrame()) + "/" + ofToString(movie.getTotalNumFrames()), 20, 380);
    ofDrawBitmapString("duration: " + ofToString(movie.getPosition() * movie.getDuration(), 2) + "/" + ofToString(movie.getDuration(), 2), 20, 400);
    ofDrawBitmapString("speed: " + ofToString(movie.getSpeed(), 2), 20, 420);
}

マウスとキーボードで動画を操作

再生フレームや再生速度を変更できるようにします。