• ベストアンサー

DirectXを使った動画再生プログラム

最近DirectXを使った動画再生プログラムを作っているのですが、いろいろ調べてみてもやり方がわかりません。 どなたか知っている方がいらっしゃいましたら教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

> 別子 'LPDIRECTDRAW7' がシンタックスエラー 単純にIncludeの順番か環境に問題があるかもしれません。 DShow.hの中のヘッダでddraw.hがIncludeされていて、 DirectXSDKが入ってないとか。。。 恐らく、LPDIRECTDRAW7はddraw.hに書かれていると思うので、 DirectXSDKをインストールしてみてはどうでしょうか?

その他の回答 (4)

回答No.5

あ、すみません。 #include <DShow.h>でもOKでした。 ところで今入れているDirectXとVisual Studioのバージョンは何ですか? 最新版のDirectXSDKをインストールし直す → PlatformSDKをインストール が無難な解決策のように思えます。

hiroikawa
質問者

お礼

何度もすいません。 さらに変更を加えると以下のようなエラーが発生しました。 --------------------構成: Douga - Win32 Debug-------------------- リンク中... strmiids.lib(strmiids.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください link.exe の実行エラー Douga.exe - エラー 1、警告 0 ご指摘をお願いします。

hiroikawa
質問者

補足

DirectXはMicrosoft DirectX SDK (August 2007) Visual Studio は C++6.0 を使用しています。 少し変えてみたら以下のようなエラーが出てきました。 ouga.obj : error LNK2001: 外部シンボル "_IID_IMediaControl" は未解決です douga.obj : error LNK2001: 外部シンボル "_CLSID_FilterGraph" は未解決です douga.obj : error LNK2001: 外部シンボル "_IID_IGraphBuilder" は未解決です Debug/Douga.exe : fatal error LNK1120: 外部参照 3 が未解決です。 link.exe の実行エラー ご指摘をお願いします。

回答No.4

#include <DShow.h> ↓ #include <dshow.h> に変えてみては?

回答No.2

http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#filelist ここにあるpsdk-x86.exeは導入しましたか? DirectShowはPlatformSDKに2005年より移行されていますので。。

hiroikawa
質問者

お礼

ありがとうございます。 それも導入したのですが、全く動きません。 どうすればいいか分からない状況です。

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

>いろいろ調べてみてもやり方がわかりません。 調べた結果何がわからなかったのでしょうか? 1から10まで教えるのは土台無理ですし、 他人のコードをそのまま使うだけではそれ以上のものを 作ることはできないでしょう。 とはいえ、サンプルをみてコードを読むことは 悪いことではないので、この辺りを『参考』に してみてください。 http://codezine.jp/a/article/aid/322.aspx 上記のサイトは登録制なのでサンプルを見る場合には 登録してください。(無料です)

hiroikawa
質問者

お礼

これを実行すると、以下のようなエラーが出ました。 \program files\microsoft platform sdk\include\strmif.h(30727) : error C2061: 構文エラー : 識別子 'LPDIRECTDRAW7' がシンタックスエラーを起こしました。 c:\program files\microsoft platform sdk\include\strmif.h(30740) : error C2061: 構文エラー : 識別子 'LPDIRECTDRAW7' がシンタックスエラーを起こしました。 cl.exe の実行エラー Douga.exe - エラー 29、警告 0 ここには一部しか載せていません。 補足にも書きましたが、よければご指摘お願いします。

hiroikawa
質問者

補足

以下に書いたプログラムを載せますので(長いですが・・・)、もしよければご指摘願います。 ・FilterGraph.cpp #include <Windows.h> #include <String.h> #include <DShow.h> #include <conio.h> #include <stdio.h> IGraphBuilder * pigb = NULL; IMediaControl * pimc = NULL; void main () {OPENFILENAME fname; static char fn [256] ; memset ( &fname, 0, sizeof (OPENFILENAME) ); fname.lStructSize = sizeof (OPENFILENAME) ; fname.lpstrFile = fn; fname.nMaxFile = sizeof (fn); fname.Flags= OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if( !GetOpenFileName ( &fname ) ) return; WCHAR filename [ MAX_PATH ] ; HRESULT hr; CoInitialize (NULL) ; MultiByteToWideChar ( CP_ACP, 0, fn, -1, filename, MAX_PATH ); hr = CoCreateInstance ( CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**) &pigb ); if (SUCCEEDED (hr) ) { pigb -> QueryInterface (IID_IMediaControl, (void**) &pimc ); hr = pigb -> RenderFile( filename , NULL ); if( SUCCEEDED(hr) ) { pimc -> Run (); printf("再生中です。再生終了後どれかキーを押してください") ;getch (); } } if( pigb ) pigb -> Release () ; if( pimc ) pimc -> Release () ; CoUninitialize (); return; }

関連するQ&A