xe3_fm2_videocapture
*DelphiXE3_FireMonkey_VideoCapture [[index]] #contents **はじめに DelphiXE3,FireMonkey2でビデオキャプチャーを試してみたら上手くいかなかった...orz ↓ DelphiXE4 Trial,FireMonkey3でビデオキャプチャーを試してみたら、なんとか上手くいった。 ↓ DelphiXE4製品版でやってみたら、何もしなくてもちゃんと動いた。これにて終了。 **サンプルを元にやってみる(XE3) 2013-04-21 サンプルはこれ >C:\Users\Public\Documents\RAD Studio\10.0\Samples\FireMonkey\VideoCaptureHD とりあえず動くけど、すぐに例外で止まる。 調べてみたら、サンプルが良くないらしい。 スレッドで競合起きてるみたい。 [[http://blogs.embarcadero.com/teamj/2012/09/26/3484/]] [[FireMonkey Demo - VideoCaptureHD - Video capture rendering stutter or freezes!>http://qc.embarcadero.com/wc/qcmain.aspx?d=108967]] [[SampleBufferToBitmap only seems to work for TImage>http://qc.embarcadero.com/wc/qcmain.aspx?d=109802]] という訳で、これをそのままやってみるが、まだ問題が有る。 1.停止が上手くいかない。停止使用とするとハングアップする。 2.画面上部のボタンの描画が発生すると、例外が発生する時が有る。(Layout1を非表示にすると発生しない) 不具合発生環境 Windows7 64bit DelphiXE3 ちなみにMacOSXでは問題無く動く。 WindowsXPでは例外とか発生しないが、ビデオキャプチャウィンドウが別に開いてしまうので、アプリとして見た目が変わり過ぎてしまいます。 さて...、どうしたものやら。 **サンプルを元にやってみる(XE4 Traial) XE4のTrial版がアップされていたので、XE4で試してみました。 XE4のサンプルを試して見るも、やはり例外が発生する。 >C:\Users\Public\Documents\RAD Studio\11.0\Samples\FireMonkey\VideoCaptureHD で、色々と試して見たところとりあえずの対策が見つかりました。 **対策方法発見(XE4 trial) 2013-04-24 下記3点の対策を行って、今のところは、例外が出ずに動いています。 1,2番目のは、例外対策。 3番目の対策しないと、アプリケーション終了時に固まります。 1.SampleBufferReadyでSynchronizeする >procedure TForm240.SampleBufferReady(Sender: TObject; const ATime: TMediaTime); >begin > VideoCamera.SampleBufferToBitmap(buffer_bmp, True); > TThread.Synchronize(nil, image_update); >end; > >procedure TForm240.image1_update; >begin > Image1.Bitmap.Assign(buffer_bmp); >end; 2.SampleBufferReadyでSyncする為のバッファーのBitmapは、関数外に置く BitmapをFormCreateで生成、FormDestroyで破棄する。 3.FireMonkeyのソースにパッチを当てる ※Trial版はFireMonkeyのソースが入っていなかったので、FireMonkeyのソースは、XE3の物を使いました。 FMX.Media.Win.pasのソースを、VideoCaptureHDプロジェクトフォルダにコピー。 下記関数の中にある「TThread.Synchronize(nil, Sync);」をコメントアウト >procedure TVMRRenderer.SampleBufferToBitmap(const ABitmap: TBitmap; const ASetSize: Boolean); > 途中省略 > //TThread.Synchronize(nil, Sync); > 環境 DelphiXE4 Trial DelphiXE3のFireMonkeyソース Windows7 64 **まとめ とりあえずXE4にアップデートした方が良さそうですね〜
2024-11-21 18:24:55 32400