![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
今現在、DIRECTSHOWで動画でいろいろしてみようと思ったのですが、壁に当たりました。
デバッグ無しで開始すると、
RenderFile hr 40258と表示されます。
ソースですが関連するところを書くと
#include <windows.h>
#include <string.h>
#include <dshow.h>// DirectShowのヘッダファイル
#include <qedit.h>// SampleGrabber用
#include <conio.h>// getch()用
#include <stdio.h>
#include "list502.h"
#pragma warning(disable:4996)
void main( void )
{
// インターフェース用のポインタ
// フィルタグラフ用
IGraphBuilder *pigb = NULL;
IMediaControl *pimc = NULL;
IMediaSeeking *pims = NULL;
// サンプルグラバ用
IBaseFilter *pF = NULL;
ISampleGrabber *pGrab = NULL;// これらは後で解放すること。
IMG0img00;// 表示ウィンドウ用の構造体
BYTE *buffer;// 外部バッファ
AM_MEDIA_TYPE amt;
WCHAR filename[ MAX_PATH ];
HRESULT hr;
img00.hi = (HINSTANCE)GetWindowLong( HWND_DESKTOP, GWL_HINSTANCE );
img00.x = 100; img00.y = 100;
gr_reg();// 表示用ウィンドウの登録
CoInitialize(NULL);// COMの準備
// FilterGraphの初期化
CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&pigb);
// フィルタグラフのインターフェースを得る
pigb -> QueryInterface( IID_IMediaControl, (void **)&pimc );
pigb -> QueryInterface( IID_IMediaSeeking, (void **)&pims );
// グラバフィルタを作りフィルタグラフに追加
CoCreateInstance( CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (LPVOID *)&pF);
pF -> QueryInterface( IID_ISampleGrabber, (void **)&pGrab );
pigb -> AddFilter( pF, L"SamGra" );
// グラバフィルタの挿入場所の特定のための設定
ZeroMemory( &amt, sizeof(AM_MEDIA_TYPE) );
amt.majortype = MEDIATYPE_Video;
amt.subtype = MEDIASUBTYPE_RGB24;
amt.formattype = FORMAT_VideoInfo;
pGrab -> SetMediaType(&amt);
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 ;
// ファイル名の変換
MultiByteToWideChar( CP_ACP, 0, fn, -1, filename, MAX_PATH );
// 再生するファイルを指定、この時点で使用するフィルタが決まる
hr = pigb -> RenderFile( filename, NULL );
printf( "RenderFile hr %x\n", hr );
if(hr != 0)return;
ポイント箇所は
WCHAR filename[ MAX_PATH ];
hr = pigb -> RenderFile( filename, NULL );
printf( "RenderFile hr %x\n", hr );
hrが0だと、成功を意味していると思います。それ以外だとリターンで終了します。
強引にhr=0で強引に0にしてみたら
Just-in-Timeで例外が発生しました。これは強引に0にしたからだと思います。
%xは16進数を意味しているはずです。
余談ですが、動画ファイル以外(テキストファイルなど)を開くと
hr=80040625と出ます。
この数字(16進)はエラーコードなのでしょうか?
どうかhrが40258になってしまう理由および解決策をお教え下さい。
お願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
const TCHAR* DXGetErrorDescription9(HRESULT hr);
とか役にたつかも。
これじゃないのかな
----------------------------------------------------------------------
hr{0x40258}, errorDescription{Cannot play back the audio stream: no audio hardware is available.}
VFW_S_AUDIO_NOT_RENDERED:Partial success; the audio was not rendered.
オーディオ ストリームを再生できない。
ユーザーのコンピュータにサウンド カードがない場合、このメソッドは VFW_S_AUDIO_NOT_RENDERED を返す。この場合にはオーディオのプレビューは行われないが、ビデオ プレビューには影響はない。
----------------------------------------------------------------------
DirectXのリファレンスの「Error and Success Codes」
ページにエラーコードの一覧みたいなのがありましたよ。
----------------------------------------------------------------------
0x80040625は該当するものが見つかりませんでした。
この回答への補足
ありがとうございます
IGraphBuilder::RenderFileに
VFW_S_AUDIO_NOT_RENDERED 不完全な成功。オーディオがレンダリングされなかった。
とMSDNのページに書いてありました.
不完全な成功ということは,サウンドカードさえあれば成功するということでいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既定のコンストラクタがありま...
-
【gcc・cygwin】multiple defin...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
戻り値を返す関数の前に(void)...
-
ウインドウの移動禁止
-
C++でイベントドリブンなコード...
-
C# Controls.Addで動的に配置し...
-
参照型を格納できるコンテナに...
-
関数名の名前の衝突について。
-
C#を勉強中でC#で壁紙を変更す...
-
多重定義が起きている?--lnk20...
-
C++にてtemplateで受け取った任...
-
派生クラスの自動生成
-
Arduinoを使ってMIDI機器のコン...
-
CreateThreadのエラー
-
const_castのつかいどころを教...
-
gcc: incompatible pointer type
-
関数ポインタについて
-
構造体を宣言と共に初期化する方法
-
クラス間でのクラスの共有?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがありま...
-
【gcc・cygwin】multiple defin...
-
戻り値を返す関数の前に(void)...
-
C++にてtemplateで受け取った任...
-
多重定義が起きている?--lnk20...
-
gcc: incompatible pointer type
-
静的でないメンバ関数の呼び出...
-
int main()、void main()、void...
-
Notepad++の関数リスト表示の変...
-
C# KeyDownイベントでショート...
-
C# Controls.Addで動的に配置し...
-
(void)0 はどんな意味ですか
-
ArduinoでMouse関数を使用して...
-
DLLの関数呼び出しで引数がある...
-
void*型の配列について
-
ウインドウの移動禁止
-
const_castのつかいどころを教...
-
VC++でGetKeyboardStateがうま...
-
C言語 プロトタイプ宣言
-
stddef.hって何?
おすすめ情報