お世話になります。
現在x64版のDirect Showを利用して、aviファイルから任意のフレーム画像を取得する
プログラムを作成しております。
Direct Showは今まで使ったことが無かったのですが、ネットにあるサンプルなどを
参考に手探りで作業を進めております。最終的にはx64版を作る必要があるのですが、
メインで作業しているPCが32bit環境であるため、とりあえずx86版で作業を進め、
なんとか期待する動作をするものが出来ました。
最終的に処理する動画ファイルは1440x810のものと、3840x2160の2つがあり、
x86版ではどちらも期待する動作をしてくれるのですが、x64にてコンパイルし64bit環境で
動作させると1440x810の方は問題ないのですが、3840x2160の方はうまく動作しません。
なお、プログラムは以下のような流れでDirectShowを利用しております。
CoInitialize
CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, &pIGB);
pIGB->QueryInterface( IID_IMediaControl, &pIMC );
pIGB->QueryInterface( IID_IID_IMediaSeeking, &pIMS );
CoCreateInstance( CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, &pIBF );
pIBF->QueryInterface( IID_ISampleGrabber, &pISG );
pIGB->AddFilter( pIBF, NULL );
pISG->SetMediaType(&stMT); // stMTはMEDIATYPE_Video,MEDIASUBTYPE_RGB24,FORMAT_VideoInfoを設定
pIGB->RenderFile( ファイル名, NULL );
:
調べてみると、RenderFileのところでx64の場合はVFW_E_NO_TRANSPORTが帰ってきているようです。なお、その64bit環境でx86コンパイルしたものを動かすと問題なく動作します。
なお、もともとDirect X SDK 9.0を使っていましたが、念のため最新版のものをダウンロードして
試してみましたが、症状は変わりませんでした。また、Videoドライバも変えてみましたが、同様に
変化なしです。
どんな原因が考えられるか、どなたかご助言頂ければ助かります。
なお、開発環境・動作環境は以下の通りです。
Windows 7 Pro 64bit版
VisualStudio 2010 Pro
Direct X SDK 9.0 or Direct X Jun_2010
C++ (純粋なネィティブプログラム)
No.1ベストアンサー
- 回答日時:
↓あたりを参考に調べてみてはいかがでしょうか。
VFW_E_NO_TRANSPORTについてのQ&A
http://social.msdn.microsoft.com/Forums/en-US/wi …
DirectShowのフィルタについて(ちょっと古い情報みたいです。)
http://www.geocities.co.jp/SiliconValley/7406/ti …
grapheditについて
http://blogs.msdn.com/b/windows_multimedia_jp/ar …
この回答への補足
grapheditを使ってフィルタを自動生成してみたところ、
x64版では同じ様にピン関係のエラーが表示され、うまくいきませんでした。
ただしx86版では問題なく自動生成されたので、x86版の結果を頼りに
x64版で手動でフィルタを追加していったところ、AVI SplitterからAVI Decompressorへの
入力で失敗していることがわかりました。
結局のところ64bit版のコーデックが無いために、このようなエラーになっていたようです。
(考えてみれば当然な気がしますが、全然気づきませんでした^^;)
なにぶん動画関係とか疎かったので、頂いた情報は大変参考になりました。
ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Makefile作成時の拡張子.oとは?
-
エクセルVBAではRound...
-
VB5の逆コンパイルについて
-
ヘッダファイルを使わずに定義...
-
ILSpyで、デコンパイルできない。
-
VBAを何回も作り直して、容量が...
-
pyc 編集 閲覧
-
OpenCVを Borland C++ Builder...
-
ExcelVBAで『ByRef 引数の型が...
-
【VC++6.0(MFC)】警告「LINK : ...
-
Borland C Builder で OpenCVを...
-
” OS ビルド ” の意味が分か...
-
C++Builderでの警告
-
DirectX9SDKが入ってるPCでDi...
-
Xcodeでのcのコンパイルエラー...
-
Visual C++ 2005 Express Editi...
-
C++のhppファイルをCでinclude
-
Texのfancyheadingsで第~章と...
-
[c++] <pthread.h>がinclude で...
-
マクロ コンパイルがグレーバック
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
「fatal error C1189」を回避す...
-
Makefile作成時の拡張子.oとは?
-
ILSpyで、デコンパイルできない。
-
1 つ以上の複数回定義されてい...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
C言語でヘッダファイルにグロー...
-
” OS ビルド ” の意味が分か...
-
マクロ コンパイルがグレーバック
-
【VC++6.0(MFC)】警告「LINK : ...
-
クリティカルエラー Expressio...
-
PRO*C コンパイルエラー
-
[c++] <pthread.h>がinclude で...
-
<math.h>があるのにsqrtが・...
-
ビルドとリビルドの違いを教え...
-
CImageクラスの使用について
-
戻り値について
-
コンパイルエラー:ユーザ定義...
おすすめ情報