![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。
現在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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(コンピューター・テクノロジー) Windows 11 Version 22H2 の (KB5023706)のアップデートに失敗する 2 2023/03/25 21:06
- WordPress(ワードプレス) Wordpress 複数プラグインの不具合? 1 2022/10/09 21:52
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- その他(開発・運用・管理) VisualStudioSetup.exeの設定について(Rustのインストールの準備として) 2 2023/04/17 12:54
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Makefile作成時の拡張子.oとは?
-
VBAを何回も作り直して、容量が...
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
定数式とはどういう意味でしょ...
-
1 つ以上の複数回定義されてい...
-
ILSpyで、デコンパイルできない。
-
C/C++の文法チェックツール
-
Fortranについて教えてください
-
sys/types.hの必要性について
-
ビルドとリビルドの違いを教え...
-
” OS ビルド ” の意味が分か...
-
CとC++、どちらでコンパイ...
-
Macで Arduino Unoでコンパイル...
-
<math.h>があるのにsqrtが・...
-
複数のサブディレクトリを一緒...
-
ExcelVBAで『ByRef 引数の型が...
-
「DeclareステートメントにPtrS...
-
cygwinのgccが、エラーになって...
-
エクセルVBAではRound...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
” OS ビルド ” の意味が分か...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
ILSpyで、デコンパイルできない。
-
Makefile作成時の拡張子.oとは?
-
エクセルVBAではRound...
-
C言語でヘッダファイルにグロー...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
マクロ コンパイルがグレーバック
-
戻り値について
-
C言語でmからnまでの合計を求め...
-
C++コンパイル時に『 C1083: in...
-
コンパイルエラー:ユーザ定義...
-
クリティカルエラー Expressio...
-
PRO*C コンパイルエラー
-
【VC++6.0(MFC)】警告「LINK : ...
-
[c++] <pthread.h>がinclude で...
おすすめ情報