アプリ版:「スタンプのみでお礼する」機能のリリースについて

Directshowを用いて動画を再生しようと試みています。
Direct sdkとplarformの両方を入れて、インクルードパスとライブラリパスを通しました。
ビルドしてもエラーは無いので某所のシンプルなソースでデバッグ無しで開始をクリック。
すると、再生が終わらないようにメッセージBlock Executionが表示されるものの肝心の動画が映りません。
プログラムはしっかりと動いているはずですが、、
動画aviはMSMPEG4V2です。Directshowのコーデックで動くとのことです。何がおかしいのか、さっぱりです。
環境はwindowsXP visual studio2005
DirectxSDK2008
microsoft platform(しっかりDirectshowフォルダは存在します)

ここまで来たなら設定ミスは無いとは思いますが、(設定ミスがあれば、開けない等エラーが出ると思いますので)
どうかお願い致します。

サンプルソース

#include <stdio.h>

#include <dshow.h>

#defineFILENAME L"C:\\Documents and Settings\\057104\\My Documents\\homerun2.avi"

int
main()
{
IGraphBuilder *pGraphBuilder;
IMediaControl *pMediaControl;

// COMを初期化
CoInitialize(NULL);

// FilterGraphを生成
CoCreateInstance(CLSID_FilterGraph,
NULL,
CLSCTX_INPROC,
IID_IGraphBuilder,
(LPVOID *)&pGraphBuilder);

// MediaControlインターフェース取得
pGraphBuilder->QueryInterface(IID_IMediaControl,
(LPVOID *)&pMediaControl);

// Graphを生成
pMediaControl->RenderFile(FILENAME);

// 再生開始
pMediaControl->Run();

// 再生中にプログラムが終わってしまわないように
MessageBox(NULL,
"Block Execution",
"Block",
MB_OK);

// 資源を解放
pMediaControl->Release();
pGraphBuilder->Release();

// COM終了
CoUninitialize();

return 0;
}

A 回答 (4件)

まずは自分で調べられるところから


調べてみてはどうでしょう?

>pMediaControl->RenderFile(FILENAME);
読み込みは成功しているの?

>pMediaControl->Run();
本当に再生開始できる状態なの?
Runの実行結果はどうなっているの?

参考URL:http://msdn.microsoft.com/ja-jp/library/cc356921 …
    • good
    • 0

 こんばんは。

以下で再生出来ませんか。

// Graphを生成
//↓これはVisualBasic用だそうです
//pMediaControl->RenderFile(FILENAME);
//↓こっちがC++用
pGraphBuilder->RenderFile(FILENAME, NULL);

 http://msdn.microsoft.com/ja-jp/library/cc356929 …
    • good
    • 0
この回答へのお礼

皆様ありがとうございます.
別のプログラムを起動したら無事再生することはできました.

お礼日時:2008/11/04 18:23

調べたら


pMediaControl->RenderFile(FILENAME);
の引数はBSTR(=WCHAR*)のようですね
ということで#2の回答は間違いです
#define FILENAME L"C:\\Documents and Settings\\057104\\My Documents\\homerun2.avi"
のままでいいようです
    • good
    • 0

MessageBox(NULL,


"Block Execution",
"Block",
MB_OK);
これでエラーが出ないのならマルチバイトコードでコンパイルしているということになりますね
それなら
#define FILENAME L"C:\\Documents and Settings\\057104\\My Documents\\homerun2.avi"
は変ですね。
pMediaControl->RenderFile(FILENAME);
が失敗してるのだと思います。
どちらの環境でも大丈夫なように
#define FILENAME TEXT("C:\\Documents and Settings\\057104\\My Documents\\homerun2.avi")

MessageBox(NULL,
TEXT("Block Execution"),
TEXT("Block"),
MB_OK);
にしたほうがいいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!