動画のエクスポート

グラフのグループを動画としてエクスポートするには、ビデオライター(vw) オブジェクトを使用する必要があります。実際のフレームと共に動画をエクスポートするには、必ずビデオライターオブジェクトを作成する必要があります。いくつかのウィンドウをフレームに見立てて作成し、ビデオライターに渡します。1度に1つのビデオライターでのみ作業できます。つまり、vw.Create( ) メソッドでビデオライターオブジェクトを作成した後、新たなvw.Create( )メソッドを実行する前に、vw.Release( ) を実行してビデオライターをリリースする必要があります。

ここに、ビデオライターオブジェクトの作成、グラフの作成、ビデオライターオブジェクトのリリース方法を示すスクリプトのサンプルがあります。また、LabTalk サンプルカテゴリー内にあるサンプル全体も合わせてご確認ください。

ビデオライターオブジェクトを作成する

動画をエクスポートする時に最初に行うべきことは、ビデオライターオブジェクトをvw.Create( )方法で作成する事です。最低限、ビデオのファイル名(ファイル名を含む)は指定する必要があります。また、ここでは圧縮方法のためのコーデック値、1秒ごとのフレーム数等を指定できます。

例えば、このスクリプトは動画ファイル"test.avi"を既存のファイルパス、D:\Exported Videos\ に作成し、他の設定はデフォルトを維持します(つまり、圧縮なし、1フレーム毎秒、640px横×480px縦の大きさ)。

vw.Create("D:\Exported Videos\test.avi");
//上記スクリプトは次のスクリプトと同義
//vw.Create("D:\Exported Videos\test.avi", 0, 1, 640, 480);

FourCCコードを使用すると、圧縮方法を指定できます。例えば、以下のスクリプトはWMV1圧縮形式を使用して動画を作成します。

//4つの記号コードで codec を定義
int codec = vw.FourCC('W', 'M', 'V', '1');
//800*600 動画ファイルをUser Filesフォルダ内の test.avi を作成
vw.Create(%Y\My Video.avi, codec, 1, 800, 600)

ビデオ作成が成功したかチェックするには、vw.Create( )を使用します。うまく作成できている場合は、vw.Create( )メソッドが、0を返します。例:

//ファイルのパス、 D:\AAA があるなら、以下のスクリプトは0を返すはず
//パスが存在しない場合、エラーコードを返す
int err = vw.Create(D:\AAA\test.avi);
if(err==0)
   type "video creation is successful";
else
   type "video creation failure, the error code is $(err)";

ビデオライターオブジェクトでグラフを作成する

ビデオライターオブジェクトが作成されると、vw.WriteGraph( ) 方法を使用してビデオライターオブジェクトの中にグラフを作成します。ぐらふウィンドウに加え、関数グラフや行列、レイアウトページなどの他のウィンドウを使用することもできます。

例えば、このスクリプトは現在のアクティブなウィンドウをビデオに渡します。

vw.WriteGraph( );

ウィンドウ名や書き出すフレームの数を指定できます。例えば、以下のスクリプトはGraph1を5フレーム分追加します。

vw.WriteGraph(Graph1,5);

ループ構造を使用してグラフをビデオに追加する事もできます。これにより、複数のスクリプト行を記入する手間を省く事ができます。以下のサンプルはプロジェクト内の全てのグラフウィンドウを動画にまとめ、各グラフは2フレームとして挿入されます。

doc -e P
{
   vw.WriteGraph(,2);
}

このメソッドで、先程のサンプルと同じように、エラーコードの有無を確認できます。返ってくる値が0の場合、グラフ作成(または他のウィンドウ)がうまくいっている事を示します。

ビデオライターオブジェクトをリリースする

各ビデオライターオブジェクトでは、リリースしないと実際のビデオが作成されないので、この操作はとても重要です。このステップで使用するメソッドは、vw.Release( )です。

以下のスクリプトは、空のグラフウィンドウと共に、動画ファイル"example.avi"をUser Filesフォルダに作成するスクリプトのサンプルです。

int err = vw.Create(%Y\example.avi);
//ビデオが作成できる場合、既存のグラフをビデオに書き出す
if(0 == err)
{
    //デフォルトのテンプレートで空のグラフウィンドウを作成
    win -t plot;
    vw.WriteGraph( );
}
//ビデオライターのリリース
vw.Release( );

vw.Release( ) メソッドも値を返します。0は動画作成がうまくいったことを示しますが、1の場合は作成に失敗した事を示します。