DOBON.NET DOBON.NETプログラミング掲示板過去ログ

64ビットで現在の動画のフレームをImageとしてファイルに保存する

環境/言語:[Windows 7]
分類:[.NET]

こんにちは。

MacからWindowsに移行して早10ヶ月。結構Windowsでは簡単にできないことが色々あることがわかってきました。その一つが動画に関すること(閲覧、編集など)です。どうもDirectXで現在のフレームをImageとしてファイルに保存できるようですが、実際にやってみようとすると。。。DirectXのSDKは何と64ビットをサポートしていない、ということがわかりました。それではDirectShowでは?DirectShowはDirectXと同様で2010年からアップデートされていらず、64ビットをサポートしてるのかは不鮮明。ちなみにC#でつくられたサンプルは64ビットOSで起動するものの、動画ファイルを指定するとExceptionエラーが発生します。

さてもう一つメディアファイルを扱うことが出来る方法にMCI (mcisendstring) というのがありますね。これはどうも随分古いAPIだそうで。制限はあるものの、確かに動画ファイルをPictureBoxで投影することができることがわかりました。ただMCIで現在のフレームをImageとしてファイルに保存することはできないようですね。検索結果によるとcaptureというコマンドを使えば出来るということですが、実際にそれらの記事を良く読むと、どれも「captureのコマンドでファイルを保存することができない」というところまでしか行っていないようです。MCIを使って音声を記録・保存することは間違いなくできるようですが。captureとかsaveとか、色々なコマンドをつかってみましたが、どうも動画の場合はフレームをImageとしてファイルに保存することができません。

結局、64ビットのOSでも使える動画のフレームを保存させてくれる道具はVB.NET上でもあるでしょうか?何かあれば助言をお願いします。
とりあえずDirectShowを試してみることにします。
検索で色々とDirectShowについて調べ、結局「MediaDet」という単語にたどり着き、その結果何とかビデオのフレームをPictureBoxに転写することができました。この結果にたどりまでの道のりはちょっと説明できませんが(たまたま運が良かっただけ)、興味のある方は

http://sourceforge.net/projects/directshownet/forums/forum/460697/topic/3127705?message=6906576

をご覧ください。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板