タイトル | : DirectShowについて |
記事No | : 11800 |
投稿日 | : 2017/02/11(Sat) 23:44 |
投稿者 | : daigodappe |
お世話になります。
Windows8.1、Excel2010のVBAです。 (特定のコーデックで、Excel2010VBAで再生できて、VisualStudio2015Expressでは再生できなかったと言う事例なのですが、こちらのカテゴリで質問させて頂きました) 参照設定でActiveMovie control type libraryにチェックを入れ、ダイアログを準備してButton1を追加し以下をコーディングします。
[Excel2010] Option Explicit '再生する動画ファイル Private Const VIDEOFILE$ = "C:\Users\Videos\RealTimes\RealDownloader\YouTube1.mp4" 'グラフマネージャ Private mGrp As QuartzTypeLib.FilgraphManager Private ivideow As QuartzTypeLib.IVideoWindow
Private Sub CommandButton1_Click() 'グラフマネージャの作成 Set mGrp = New QuartzTypeLib.FilgraphManager '再生用のグラフを作成 mGrp.RenderFile VIDEOFILE$ 'ウィンドウ内で動画を再生させる Set ivideow = mGrp ivideow.WindowStyle = &H40000000 'WS_CHILD ivideow.SetWindowPosition 10, 30, 320, 240 Dim hwnd1 As Long hwnd1 = FindWindow("ThunderDFrame", "UserForm2") ivideow.Owner = hwnd1 'ビデオウィンドウへのメッセージをフォームで受け取る ivideow.MessageDrain = hwnd1 '再生 mGrp.Run End Sub
これを実行(Button1押下)すると、指定した動画が再生されました。 次に、上記ソースを、同一PC上のVisualStudio2015Expressで構築したプロジェクトに持って行って(一部、VS2015用に変更)同様に実行すると、サポートされていないフォーマット(エラーコード:0x80040265)とエラーが出ました。
[VisualStudio2015Express] Option Explicit On '再生する動画ファイル Private Const VIDEOFILE$ = "C:\Users\Videos\RealTimes\RealDownloader\YouTube1.mp4" 'グラフマネージャ Private mGrp As QuartzTypeLib.FilgraphManager Private ivideow As QuartzTypeLib.IVideoWindow
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'グラフマネージャの作成 mGrp = New QuartzTypeLib.FilgraphManager '再生用のグラフを作成 mGrp.RenderFile(VIDEOFILE$) 'ウィンドウ内で動画を再生させる ivideow = mGrp ivideow.WindowStyle = &H40000000 'WS_CHILD ivideow.SetWindowPosition(10, 30, 320, 240) ivideow.Owner = Me.Handle '再生 mGrp.Run() End Sub
VisualStudio2015Expressでも、同様にActiveMovie control type libraryにチェックを入れて試行しましたが、再生できませんでした。 ActiveMovie control type libraryは、参照先を見た限り、双方ともC:\WINDOWS\System32quartz.dllを参照しています。
何故だか分かる方、解決方法、回避策等お分かりの方おられますでしょうか。 VisualStudio2015Expressに何かしらの制限があるのでしょうか。 ちなみに、.mov(クイックタイムムービー)も同様に再生できませんでしたが、.aviはどちらも再生できました。 ご回答の程、宜しくお願い致します。
|