スクリーン上に点を打っていく様子を動画にする(windows)

スクリーンサイズが256x256の場合を説明する。
データは点のxy座標値を空白文字で区切って並べたアスキーファイルとして 用意する(ファイル名は"test.dat"、座標値範囲は0-1023)。

・ サンプルデータファイル: test.dat
・ このファイルを作ったCプログラムソース:makedat.c
・ その実行ファイル: makedat.exe

背景のスクリーンとして256x256・24bitカラーのBMPファイルをペイント等を 使って作る(ファイル名"test.bmp"): 

・ サンプルスクリーンファイル: test.bmp

【動画を作るプログラム本体】

・ Cプログラムソースファイル: mtest5.c

今さらながらVideo for Windowsを使っている。 AVIファイルを作るにはAVIFileOpenでファイルを開き(新規作成)、 AVIFileCreateStreamでストリームを開き、ビットマップへのハンドルを AVIStreamWriteに渡すことで画像(ビットマップ)を1枚1枚ストリームへ 付け加えていくことができる。今回の場合はビットマップに1点打つごとに AVIStreamWriteすればよい。 全部書き終わったらAVIStreamRelease、AVIFileRelease、AVIFileExitを 順に呼べばよい。 ということのようだ。

コンパイル。vfw.libをリンクする必要がある:
cl vfw32.lib mtest5.c
(VCの場合)。BCCの場合は bcc32 mtest5.c だけでよい。

・ バイナリ: mtest5.exe

【動画を作る】

mtest5.exeと同じディレクトリにtest.bmpとtest.datを置いておいて mtest5.exeを実行すれば動画"TEST01.AVI"が出来上がる。

・ 上のtest.bmpとtest.datから作った動画: TEST01.AVI (サイズが大きいので注意:約40MB)

動画のファイルサイズが無駄に大きいので圧縮する。 Windows Media Encoding 8 Utility ( Windows Media Audio 8 と Windows Media Video 8のページでダウンロードできる) を使う場合は
wm8eutil -input test01.avi -output test01.wmv -v_mode 2 -v_quality 100
とかすると圧縮されたtest01.wmvができる。

・ 圧縮した動画:  test01.wmv (ファイルサイズ約13kB)

・ バッチファイル: conv.bat


2004.07 (↑の文章を書いたのは2009.12)

原子によるダブルスリットの実験で縞が現れる様子 を放送大学(だったかな?)の 講義番組用に動画にする必要がありプログラムを作成。

2012/03/21 18:25:35 更新