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

旧版からの変更点
(1) 1フレーム毎に書き加える点の数を任意に変更
(2) 画像サイズを背景画像のファイルから読み込むようにした
(3) 動画の圧縮に使っていたWindows Media Encoding Utilityが提供されなくなった のでMicrosoft Expression Encorderに変更
データは点のxy座標値を1行に空白文字で区切って並べたアスキーファイルとして 用意する(ファイル名は"test_.dat"、座標値は非負の整数値)。 空行があると空行の前までの点がフレームに加えられる。

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

背景のスクリーンとして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
(Visual C++の場合)。Borland C++ Compiler 5.5の場合は bcc32 mtest5_.c だけでよい。

・ 実行ファイル: mtest5_.exe

【動画を作る】

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

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

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

(圧縮法は下記参照)

Microsoft Expression Encorder

無圧縮だとあまりにファイルサイズが大きいので圧縮する。
Windows Media Encoding Utilityはもう提供されていないようなので 代わりに http://www.microsoft.com/expression/jpn/から Microsoft Expression Encorder 4 SP2をダウンロードしインストールする (product keyを聞かれるが空欄で先に進むと無料の機能制限版として動くようだ)。
ちなみにSystem RequirementsではOSはXPから7までとなっているが10でも動いている。

エンコード方法
(1) 起動画面でGet Started -> Transcoding Projectをクリック
(2) File -> Import...でエンコードしたいファイルを読み込む
(3) 画面右脇のリストからOutputタブを選びDirectoryやMedia File Name等で出力先を設定
(4) File -> Encodeを選ぶとエンコードされる


2015/09/25 14:18:02 更新