ウィンドウをキャプチャしてAVI動画を作る (.NET)
機能のつづき: ウィンドウをキャプチャしてアニメーションGIFを作る (.NET) - f8g
AVIファイルの生成
WindowsではDirectShowを使ってAVIファイルを作ることができます。だた、DirectShowを.NETで使おうとすると結構面倒なので、これもまたその辺のライブラリを使って簡単にやります。
http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx
昨日みたいに適当にコンパイルして参照しちゃいましょう。
' 下記以外は前と一緒 Dim AviManager As AviFile.AviManager Dim AviStream As AviFile.VideoStream Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim bmp As Bitmap = Me.GetBitmapByHwnd(Me.GetHwndByTitle("メモ帳")) ' 最初のフレームか If Me.AviStream Is Nothing Then Timer1.Enabled = False ' 一回止めないとヤバイ Me.AviStream = Me.AviManager.AddVideoStream(True, 1.0! / (Timer1.Interval / 1000.0!), bmp) Timer1.Enabled = True Else Me.AviStream.AddFrame(bmp) End If bmp.Dispose() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then Me.AviManager = New AviFile.AviManager(SaveFileDialog1.FileName, False) Timer1.Enabled = True End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Timer1.Enabled Then Timer1.Enabled = False Me.AviManager.Close() End If End Sub
最初のフレームのとき止めないとヤバイのは、
みたいなダイアログが出てきてから動画を作るのに、バックグラウンドでTimerが動いてて、変なことになるからです。多分。
今回利用したライブラリは動画を作るだけじゃなく音声も付けられるようなので、自作ラップと一緒に動画にして楽しむ、といった使い方もできます。