[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 10:56 / Filesize : 216 KB / Number-of Response : 647
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

DirectShowと戦うスレ Part 2



1 名前:デフォルトの名無しさん [2006/11/08(水) 00:25:56 ]
前スレ
pc8.2ch.net/test/read.cgi/tech/1026666092/

98 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 17:08:23 ]
今、WMVを無圧縮AVIにするプログラムを作っているのですが
(最終的に別のソフトでxvidでmp4にする予定)
出力されるAVIが映像の再生時間だけ2倍になってしまいます
(音は普通に再生)

Directshowでの調整がうまくいかなかったので一度AVI作成後にRateとScaleとMicroSecPerFrameを調整して
AVI状態ならずれの修正はできたのですが、それをmp4に変換すると再生がおかしくなってしまい
原因がつかめなかったのでDirectshowでAVI作成するところまでもどってきたのですが
Grapheditでマスターストリーム指定で30秒くらいのファイル一個だけですがうまくいったので<wmv9
IConfigAviMuxをソースに追加してみてSetMasterStreamが成功はしているのですが
結果に反映されてくれません。

ソースは以下のようなものなのですがどこがいけないのでしょうか

-------------------------------------------------------------------------
IGraphBuilder*pGraph= NULL;
ICaptureGraphBuilder2*pBuilder= NULL;
IBaseFilter*pSrc= NULL;
IBaseFilter*pMux= NULL;
IBaseFilter*pAudioDec= NULL;
IBaseFilter*pAVIDec= NULL;
IPin*pPinIn= NULL;
IPin*pPinOut= NULL;
IMediaSeeking*pSeek= NULL;
IMediaSeeking*pRate= NULL;
IMediaEvent*pMediaEvent= NULL;
IMediaControl*pMediaControl;
longevCode;


99 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 17:08:55 ]
CoInitialize(NULL);

CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&pGraph);
CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC, IID_ICaptureGraphBuilder2, (void **)&pBuilder);

IBaseFilter *pAVIMux =NULL;//+id{CLSID_AVI mux}_GUID
pAVIMux = searchFilter(pGraph, L"AVI Mux" );

IConfigInterleaving *pConf = NULL;
IConfigAviMux *pConfMux = NULL;
pGraph->AddFilter(pAVIMux, L"AVI Mux");

LONG lo = -1;

pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, OutputFile, &pMux, NULL));

pBuilder->GetFiltergraph(&pGraph));
pGraph->AddSourceFilter( InputFile, L"SourceFilter", &pSrc));

pAVIDec = AVI Decompressorフィルタ取得
pAudioDec = WMAudio Decoder DMOフィルタ取得

pGraph->AddFilter(pAVIDec, L"AVI Decompressor");
pGraph->AddFilter(pAudioDec, L"WMAudio Decoder DMO");

pPinOut = GetPin(pSrc, PINDIR_OUTPUT);
pPinIn = GetPin(pAudioDec, PINDIR_INPUT);
pGraph->Connect(pPinOut, pPinIn);

pBuilder->RenderStream( NULL, NULL, pSrc, pAVIDec, pMux );

100 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 17:10:19 ]
pBuilder->RenderStream( NULL, NULL, pSrc, NULL, pMux );
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
pGraph->QueryInterface(IID_IMediaEvent, (void **)&pMediaEvent);

pMux->QueryInterface(IID_IMediaSeeking, (void**)&pSeek);

CLSID id;
pAVIMux->GetClassID(&id);
CoCreateInstance(id, NULL, CLSCTX_INPROC, IID_IConfigAviMux, (void **)&pConfMux);
pAVIMux->QueryInterface(IID_IConfigAviMux, (void**)&pConfMux);
pConfMux->QueryInterface(IID_IConfigAviMux, (void **)&pAVIMux);
pConfMux->GetMasterStream(&lo);
pConfMux->SetMasterStream(1);
pConfMux->GetMasterStream(&lo);

if (pMediaControl->Run() == S_OK)
{
途中経過表示など
}

//終了処理
if(pRate != NULL) pRate->Release();
if(pConf != NULL) pConf->Release();
if(pAVIMux != NULL) pAVIMux->Release();
if(pConfMux != NULL) pConfMux->Release();

if(pAudioDec != NULL) pAudioDec->Release();
if(pAVIDec != NULL) pAVIDec->Release();
if(pGraph != NULL) pGraph->Release();
if(pBuilder != NULL) pBuilder->Release();

101 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 17:11:22 ]
if(pSrc != NULL) pSrc->Release();
if(pMux != NULL) pMux->Release();
if(pMediaEvent != NULL) pMediaEvent->Release();
if(pSeek != NULL) pSeek->Release();
if(pMediaControl != NULL) pMediaControl->Release();
if(pPinIn != NULL) pPinIn->Release();
if(pPinOut != NULL) pPinOut->Release();
CoUninitialize();
-----------------------------------------------------------------------
いろいろ試行錯誤していたので少し読みにくくてもうしわけありません。

102 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 17:21:22 ]
CLSID id;
pAVIMux->GetClassID(&id);
CoCreateInstance(id, NULL, CLSCTX_INPROC, IID_IConfigAviMux, (void **)&pConfMux);
pAVIMux->QueryInterface(IID_IConfigAviMux, (void**)&pConfMux);
pConfMux->QueryInterface(IID_IConfigAviMux, (void **)&pAVIMux);

の辺りを主にいじっていました(コードを実行する場所をかえたりなども)






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<216KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef