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


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

DirectShowと戦うスレ Part 4



1 名前:デフォルトの名無しさん [2008/06/22(日) 18:38:21 ]
DirectShowプログラマーのみなさん。
メソッドのデッドロックとか、わけわからん現象多くないすか。
このスレに怒りやテクをぶつけましょう。

関連スレ
Win32API質問箱 Build67
pc11.2ch.net/test/read.cgi/tech/1212931246/
くだすれDirectX(超初心者用) part.3
pc11.2ch.net/test/read.cgi/tech/1193605500/
【C++】 DirectX初心者質問スレ Part17 【C】
pc11.2ch.net/test/read.cgi/tech/1207702556/
DirectX総合スレ (Part8)
pc11.2ch.net/test/read.cgi/gamedev/1205306118/
【PureVideo】DirectX Video Acceleration【AVIVO】
pc11.2ch.net/test/read.cgi/tech/1178285897/

175 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:51:04 ]
>>174
フィルタグラフ自体は別のスレッドで動いているものなので、
スレッド間で同期をとることを考えると仕方のないことですね。

176 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:12:26 ]
>>175
そうなんですか。
ちなみに、最初のフレームから最後のフレームまで
順番に画像を抽出したい場合は>>170以外の方法でもっと効率がいいやり方はありますか?

177 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:41:58 ]
なんか知らんが、普通にエンコードする時の様にフィルタ繋げるだけでいいんでね?

178 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:50:35 ]
やりたい事は、最初のフレームから最後のフレームまで順番に
画像を取り出すだけなんですけどね。特に動画を再生する必要はないんですが

179 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:55:56 ]
>>176
毎フレームSetPositionsをするのは確かに効率が悪いです。
可能であればSampleGrabberのコールバックを使った方がいいでしょう。

自分は以下の記事を参考にしてコールバック処理を実装しました。
ttp://codezine.jp/article/detail/322

GetCurrentBufferに比べると結構面倒ですけどねw


しかし結局自分はSampleGrabberの実装を捨てることになってしまいましたorz
(まあどうでもいいことですが)

180 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:13:34 ]
>>179
ありがとうございます。
参考にさせて頂きます〜

181 名前:169 mailto:sage [2009/01/06(火) 19:14:29 ]
>>173
度々ありがとうございます
VBはいまいち理解できてないのですがVC++の場合ですと
ttp://www.geekpage.jp/programming/directshow/video-capture-save-avi.php
こちらのページの入力をビデオカメラから動画ファイルに変更するということでよろしいのでしょうか?
的外れな質問でしたらすみません

182 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:41:19 ]
>>181
そこにはキャプチャデバイスからAVIファイルに直接保存する方法が書いてありますが、
169さんの場合対象が(ネットワーク上の)ファイルからの再生だとすると
あまり参考にならないと思います。

とりあえず>>173で挙げたページと同じようにGraphEditでフィルタを繋いでみて、
自分の意図している動作をさせられるか、を確認してはいかがでしょうか。

ほな。

183 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:14:22 ]
 こちらはDirectShowについては全く無知な素人です。
 板違いな質問かもしれませんが、ことはDirectShowに関わる問題なようなので、お詳しい皆さんお助けください。
「Virtual PC」上で、NHKオンデマンドからDLしたWMVファイルをWMPで再生を試みたところ、「DirectShow フィルタ グラフに存在しないピンに操作を実行しようとしました」と表示され、再生できませんでした。
 OSはXP、WMPのバージョンは10です。
 解決法について、ご教示のほど願います。



184 名前:167 mailto:sage [2009/01/06(火) 22:10:41 ]
>>168
RunしてすぐにPauseするという事?

ttp://www.shader.jp/xoops/html/masafumi/directx9/DShow/dshow001.htm
を参考にレンダラー作ったんだけど
RunしてすぐにPauseすると一回もレンダリングが行われないで
ポーズしてしまう・・・

185 名前:169 mailto:sage [2009/01/06(火) 22:23:50 ]
>>182
ライブストリーミングの場合はアドレスが「IP:ポート番号」になるので
GraphEditではどうやってソースとして指定できるのかがわかりません
再生することはできたので
要は再生している動画を別ファイルに保存するというようなことをしたいのですが
簡単な方法などないでしょうか?
何度も質問ばかりで申し訳ありません


186 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:40:19 ]
>>184
DoRenderSampleで初回のフレームが到着したかどうかチェックして
ポーズをかけてみたらどうでしょう?
(やり方としてマットウかどうかはよく分かりませんが)

>>185
File Source (URL) で・・・、と思ったけどこれで直接URL指定する方法が分かりませんね。
一応適当なテキストファイルにアドレスを書いて File Source (Async) で開くと
勝手に ASX File Parser が繋がってFile Source (URL) で開きなおしてくれるっぽい・・・。

こっち(↓)みてコード書いた方が早いかも。
ttp://www.geekpage.jp/programming/directshow/renderfile-url.php

187 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:13:37 ]
ちょいと質問なんですが。
DirectShowがまだ何かに統合する前に作ったソフトがあるのですが
これ今でもDirectX9にしても普通にコンパイルできて動画がみれるのですが
コンパイルできてるなら特にSDKとかなくてもいいんですよね?

188 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:30:51 ]
VFWでコーディングされているのではないかとエスパー
試しにコードの一部でもうpしてみれ

189 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:50:36 ]
>>188
あ、エスパー的な質問でしたか。
とりあえずファイルをオープンするところをうpります

bool Open( const char *chrFileName )
{
 if( FAILED(CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&GraphBuilder )) ) return false;
 if( FAILED(GraphBuilder->QueryInterface( IID_IMediaControl, (void **)&MediaControl )) ) return false;
 if( FAILED(GraphBuilder->QueryInterface( IID_IMediaEventEx, (void **)&MediaEventEx )) ) return false;
 if( FAILED(GraphBuilder->QueryInterface( IID_IMediaSeeking, (void **)&MediaSeeking )) ) return false;
 if( FAILED(GraphBuilder->QueryInterface( IID_IVideoWindow, (void **)&VideoWindow )) ) return false;
 if( FAILED(GraphBuilder->QueryInterface( IID_IBasicAudio, (void **)&BasicAudio )) ) return false;
 if( FAILED(CoCreateInstance( CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void **)&BaseFilter )) ) return false;
 if( FAILED(BaseFilter->QueryInterface( IID_ISampleGrabber, (void **)&SampleGrabber )) ) return false;
 GraphBuilder->AddFilter( BaseFilter, L"Grabber" );
 AM_MEDIA_TYPE mt;
 ZeroMemory( &mt, sizeof( AM_MEDIA_TYPE ) );
 mt.majortype = MEDIATYPE_Video;
 mt.subtype = MEDIASUBTYPE_RGB24;
 mt.formattype = FORMAT_VideoInfo;
 if( SampleGrabber->SetMediaType( &mt ) != S_OK ) return false;
 WCHAR buff[512];
 ::ZeroMemory( buff, sizeof( buff ) );
 ::MultiByteToWideChar( CP_ACP, 0, chrFileName, strlen(chrFileName), buff, sizeof(buff) );
 if( FAILED(GraphBuilder->RenderFile( buff, NULL )) ) return false;
 if( PlayWnd != NULL ){
  VideoWindow->put_Owner( (OAHWND)PlayWnd );
  VideoWindow->put_WindowStyle( WS_CHILD|WS_CLIPSIBLINGS );
  if( FormWnd && MediaEventEx->SetNotifyWindow( (OAHWND)FormWnd, WM_GRAPHNOTIFY, 0 ) != S_OK ) return false;
 }


190 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:51:27 ]
 if( SampleGrabber->GetConnectedMediaType( &mt ) == S_OK ){
  pVideoHeader = (VIDEOINFOHEADER *)mt.pbFormat;
  BITMAPINFO BitmapInfo;
  ZeroMemory( &BitmapInfo, sizeof( BitmapInfo ) );
  CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof( BITMAPINFOHEADER ) );
  hBitmap = CreateDIBSection( 0, &BitmapInfo, DIB_RGB_COLORS, &DIBBuffer, NULL, 0 );
  DIBBufferSize = mt.lSampleSize;
  SampleGrabber->SetBufferSamples( TRUE );
 }
 if( MediaSeeking->SetTimeFormat( &(TIME_FORMAT_FRAME) ) != S_OK ) return false;
 return true;
}

こんな感じなのですが・・・

191 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 12:49:42 ]
おおう、エスパー失敗w
普通にDirectShowね。
「まだ何かに統合する前」てActiveMovie時代のことを言ってるのかな?
当時はActiveMovie SDKのインストールが必要でしたね。

Visual Studio .NET 2003辺りならPlatform SDKのサブセットみたいなのが
同梱されていたと思うので、特にSDKを追加する必要はないはず。
2005以降だとEEであればPlatform SDKかWindows SDKのインストールは
必要になると思いますです、ハイ。

192 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 13:17:20 ]
>>191
これDirectShow使うのに必要なのって
ヘッダファイル
DShow.h
QEdit.h

strmiids.lib
とDirectXがインスコされていればいいだけですよね?


193 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 13:34:24 ]
>>192
プログラムとしてインクルード/リンクすべきファイルはそんなもんですが、
各ヘッダからやはり別のWindows(Platform) SDKに含まれるヘッダを
インクルードしている形跡もあるので、注意は必要かと思います。

まあ、コンパイルしてみれば分かることですけどね。



194 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 13:40:56 ]
>>193
あ、そっか、そうですよね。
とりあえず今は普通にコンパイルが通るって事は
以前にインスコしたのがあるからなんですね。

195 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:04:57 ]
Visual Studio 2008 Standard EditionってSDK入れないとダメですか?
何かExpressは同封されてるって書いてるんですが・・・

196 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:17:50 ]
されてるって書いてあるのに何故インストしない?

BaseClassesの方ならStandardのSDKにすら入ってないよ。
いつもどうり別途Windows SDKが必要。

197 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:22:57 ]
ExpressじゃなくてStandardだから。
Standardはどうなのか知りたかった

198 名前:184 mailto:sage [2009/01/09(金) 21:51:03 ]
>>186
なるほど
DoRenderSample()
{
...
rendered = true;
...
}

movie->play();
while(!movie->isRendered())
{
}
こんな感じ?確かにあまりまっとうじゃない・・

ttp://www.geekpage.jp/programming/directshow/samplegrabber-3.php

画像の取得はCBaseVideoRendererで、1フレーム目でとめるのには
SampleGrabberを使うということはできるのかな

199 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 22:34:33 ]
>>184
そのままの意味だ。RunしないでPause。

200 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 22:37:33 ]
ttp://msdn.microsoft.com/ja-jp/library/cc356923.aspx
つか、全部書いてあるだろ。ドキュメントくらい読め。

201 名前:184 mailto:sage [2009/01/09(金) 23:53:34 ]
しかし なにもおこらない
Runして初めて表示される・・

202 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:58:38 ]
oops!レンダラ自作してるのか。悪かった。
Pauseでポスターフレーム出す処理はレンダラが実装する必要があるんだわ。

void OnReceiveFirstSample(IMediaSample *pMediaSample) {
DoRenderSample(pMediaSample);
}

これ追加するとよかばってん

203 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 08:09:02 ]
おー、OnReceiveFirstSampleってそうやって使うんか。
184じゃないけどthx



204 名前:169 mailto:sage [2009/01/12(月) 19:29:05 ]
とりあえずGraphEditを使ってみた結果
ttp://sageuploader.if.land.to/cgi-bin/1upload/src/sage1_8271.jpg
このようにすることでライブストリーミングが保存できました
あとはこれをプログラムで書くだけなのですがピンのつなぎ方がよくわかりません

再生の場合は
ttp://www.geekpage.jp/programming/directshow/renderfile-url.php
にあるように
pMediaControl->RenderFile(URL);
pMediaControl->Run();
という風にすればよいというのはわかるのですがこの場合はどうすればよいのでしょう?

SetOutputFileNameとRenderStreamを使えばよいのかな?と考えてはいるのですが
サンプルがビデオキャプチャからの取得方法ばかりで
こういった場合にどのような記述をすればよいのかわかりません


205 名前:デフォルトの名無しさん [2009/01/12(月) 22:51:43 ]
これ使って作ったツールはWindows2000でも動くかな?

206 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:18:52 ]
>>204
RenderFilleやっちゃいかん。
ソースフィルタ(URL)をフィルタグラフに登録したあと、
出力ピンを列挙してAVI Muxに1つずつ接続すればおk

たぶん。
あ、あとファイル出力も手動で指定してフィルタ繋いでね。

207 名前:169 mailto:sage [2009/01/13(火) 06:56:07 ]
>>206
ありがとうございます
以下のようなプログラムを作ってみたのですが

ttp://uploaders.ddo.jp/upload/1mb/src/1up5294.txt

コンパイルすれば通るものの実行してもファイルが作成されません
これはピンのつなぎ方などが間違っているのでしょうか?

208 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 12:50:40 ]
なんでエラー値をチェックしないの?

209 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 16:10:02 ]
>>206さんのアドバイスが理解されていない・・・・


210 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 17:18:19 ]
>>208
チェックしてみましたがどこもエラーは返ってきませんでした

>>209
すいません・・・
>>206
ttp://msdn.microsoft.com/ja-jp/library/cc352330.aspx
の辺を参考にしてやってみたんですがどの辺がおかしかったでしょうか?

ソースフィルタ(URL)をフィルタグラフに登録、というのは
pGraph->AddSourceFilter(URL, L"Source Filter", &pSrc);
出力ピンを列挙してAVI Muxに1つずつ接続
というところはRenderStreamを2回行ってみたのですが
根本的に間違っていたりしたらすみません・・・


211 名前:169 mailto:sage [2009/01/13(火) 18:38:16 ]
あー見返すとなんか滅茶苦茶ですね
一から書き直してきます

212 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 19:57:05 ]
okwave.jp/qa4625143.html

213 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 20:29:46 ]
サンプルをビルドして動いたからと言って
安易に一歩踏み込むとすぐに樹海に迷い込むのがDirectShow。




214 名前:169 mailto:sage [2009/01/13(火) 22:44:13 ]
以下のように作り直してみたのですが、

ttp://uploaders.ddo.jp/upload/1mb/src/1up5301.txt

AddFilterからどうしてもNULLポインタが返ってきたり
GetPinがコンパイルをとおらずPin同士の接続ができなかったりしますが
とりあえずそれらの部分を除外して実行した結果
localhost:7144/test.aviのようなファイルは保存に成功できました。
しかしライブストリーミングの場合は解像度と再生時間はきちんとできた動画が作成されたのですが
再生しようとしても再生されない動画ファイルでした

やはりAddFilterやPinの接続がきちんとできていないことが原因なのでしょうか?

GraphEditでは簡単にできても実際に作るのは難しいものなのですね
単に私が駄目なだけかもしれませんが

215 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 22:55:51 ]
確かに、GraphEditの様子をそのままコードにしてくれるツールがあったら欲しいな。

216 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:37:12 ]
>>214
MSDNの通りにプログラムが書けてない。
IGraphBuilderはCoCreateInstanceしない。
ICaptureGraphBuilder2からGetFiltergraphで取得する。

217 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:01:13 ]
>>216
なるほど

hr=CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL,
CLSCTX_INPROC_SERVER,IID_ICaptureGraphBuilder2, (void **)&pBuilder);
hr=pBuilder->GetFiltergraph(&pGraph);

こういうことですね
しかしこうやってもGetPinがコンパイルを通らないのは変わらず
そこをコメントアウトして実行すると
hr=pGraph->AddFilter(pAVIMux,L"AVI Mux");の部分で
例外が出て終了する様になりました
これもコメントアウトしたばあいは前回と変わらず解像度と再生時間のみ正しい
再生されない動画ファイルが作成されるだけでした・・・

218 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:21:22 ]
なんだそのGetPinってのはどこからでてきた?自作メソッドなのか?

219 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:38:19 ]
>>218
これ使ってピン同士を接続するのかなと思ってコピペしてきたら
ただの自作メソッドでした
早とちりしてすみません
削っても動かないことに変わりはないのですが・・・

220 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:42:46 ]
>>219
もう少し頑張って勉強してからまたおいで。
エスパーじゃないから、そんなんでコンパイル通らないとか言われても困るわ。

221 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 15:41:50 ]
VideoWindow->put_OwnerでVFW_E_NOT_CONNECTEDが返ってくるのですが・・・

if( FAILED(CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&GraphBuilder )) ) return false;
if( FAILED(GraphBuilder->QueryInterface( IID_IMediaControl, (void **)&MediaControl )) ) return false;
if( FAILED(GraphBuilder->RenderFile( buff, NULL )) ) return false;
if( FAILED(GraphBuilder->QueryInterface( IID_IVideoWindow, (void **)&VideoWindow )) ) return false;
if( VideoWindow->put_Owner( (OAHWND)PlayWnd ) == S_OK ){ ←ここでS_OKにならない
  VideoWindow->put_WindowStyle( WS_CHILD|WS_CLIPSIBLINGS );
  if( FormWnd && MediaEventEx->SetNotifyWindow( (OAHWND)FormWnd, WM_GRAPHNOTIFY, 0 ) != S_OK ) return false;
}
PlayWnd をNULLにしてもS_OKにはなりませんでした。
何が原因でしょうか?

222 名前:221 mailto:sage [2009/01/15(木) 19:18:33 ]
対象コンピュータをx64にしてたらエラーがでてx86にすると正常に通りました><

ちなみに上記のコードの後に読み込みと同時に1フレーム目を表示されようと
MediaSeeking->SetPosition  ←上のコードには書いてないですが今はQueryInterfaceしてます
MediaControl->StopWhenReady();
VideoWindow->Visible( OATRUE );
を入れたのですが、何故か1回目の読み込み時には表示されず
2回目以降に表示されるのですが、何が原因ですか?

223 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 22:57:20 ]
C++で作ったフィルタをC#で使いたいんですが
作ったフィルタをregsvr32で登録しないで使う方法ってありますか?
登録するのは(ユーザーにとって)面倒だし
クラスの型がIBaseFilterにしか出来ないので
アプリケーション側からデータを渡したり出来ません。



224 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:06:15 ]
その程度の事もわからないお前には無理だ。
C#のCOMのラッピングのメカニズムも理解できていないんだろ?

225 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:08:01 ]
Wevdestサンプルで、RenderFileで作成したグラフを最後のDefault DirectSound Deviceだけ切り離して付け替える時
RemoveFilterに失敗します。処理は正常なのですが、RemoveFilterはなぜ失敗なんでしょうか?
この行をいれないとRunで失敗するので入れてるんですが、失敗してるのに意味があるんでしょうか?

CComPtr<IBaseFilter> DS_DefaultDirectSoundDevice;

hr = DS_graph->FindFilterByName(L"Default DirectSound Device", &DS_DefaultDirectSoundDevice);
hr = DS_DefaultDirectSoundDevice->FindPin(L"Audio Input pin (rendered)", &pin_DefaultDirectSoundDevice);
hr = pin_DefaultDirectSoundDevice->ConnectedTo(&pin_DefaultDSDeviceTo);
hr = pin_DefaultDSDeviceTo->Disconnect();
hr = DS_graph->RemoveFilter(DS_DefaultDirectSoundDevice);
hr = DS_graph->ConnectDirect(pin_DefaultDSDeviceTo, pin_WaveDest_In, NULL);

226 名前:デフォルトの名無しさん [2009/01/15(木) 23:39:31 ]
もはや時代はMediaFoundation

227 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:52:39 ]
>>225
エラーコードは何ぞ?

試してないから外してるかもしれないけど、
pin_DefaultDSDeviceToをReleaseしてないから、ってなオチはない?

228 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 00:01:29 ]
hr = pin_DefaultDSDeviceTo->Disconnect();
hr = pin_DefaultDirectSoundDevice->Disconnect();

229 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 00:43:07 ]
エラーなくなりました。
フィルターを削除する時繋いであったピンを解除。
繋ぎ換えるのにも解除後接続ですね。覚えました
意外と融通きかないんですね・・・
ありがとうございました。

230 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 03:43:18 ]
wmvが登場したとき wmvのコンテナに対応したソースフィルタを
書けと言われたときはくらくらと眩暈がした。

231 名前:デフォルトの名無しさん [2009/01/16(金) 12:36:29 ]
ふうん

232 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 13:31:35 ]
1フレーム毎にイベントを取りたいのですが
イベント通知コードは何になるんですか?

233 名前:221 mailto:sage [2009/01/16(金) 15:57:23 ]
>>222で最初のフレームが表示sれないって話なんですが
どうやら一瞬表示してるみたいで
VideoWindow->Visible( OATRUE );の下にSleep( 1000 );と入れると
1秒間最は初のフレームを表示して、1秒後に消えてしまいます。
そして2回目に>>221を走らせた時はずっと最初のフレームを表示した状態になります
何が原因でしょうか・・・



234 名前:221 mailto:sage [2009/01/16(金) 16:11:44 ]
わかりました。
どうやらStatic Textに描画されてるのがまずかったみたいです。
Picture Controlにしたら消えなくなりますた。。。
なにこれ・・・

235 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 17:00:57 ]
Windowsの描画の基本的な所を理解していないのが問題

236 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 17:10:21 ]
>>235が基本を教えてくれるそうです。
では、どうぞw

237 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 01:24:29 ]
他人が理解できる説明の仕方を意識しよう。あと、日本語を学べ。

238 名前:デフォルトの名無しさん [2009/01/19(月) 09:02:44 ]
ではまず国語辞典を勉強したらよろしいでしょうか?わかりません><

239 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 16:28:00 ]
単語を覚えるだけでは言語を会得できないな。
日本語でも英語でもプログラミング言語でも。

240 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:49:44 ]
GetConnectedMediaTypeでVFW_E_NOT_CONNECTEDが返って来るのですが原因は何でしょうか?
その前にやってるSetMediaTypeはちゃんとS_OKが返ってきてます。

241 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:22:51 ]
VFW_E_NOT_CONNECTED だから
繋げろ!

242 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:30:15 ]
>>241
言い忘れてましたが、VFW_E_NOT_CONNECTEDが出るのはGetConnectedMediaTypeだけで
他は普通にOKなので動画の再生はできています。


243 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:51:39 ]
再生にサンプルグラバは関与してますか?
そうでなければ別にサンプルグラバが繋がってなくても再生に支障はありませんよ。

少々面倒でもROTを登録して外部からフィルタグラフを覗けるようにしておくと
デバッグが便利ですよ。



244 名前:243 mailto:sage [2009/01/19(月) 18:52:57 ]
× ROTを登録
○ ROTに登録

245 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 19:03:42 ]
>>243-244
やりたい事はと言うと、再生して指定フレームの画像をbmpとして保存したかったのです。
その為にサンプルグラバでAddFilter後にビデオヘッダを取得したりと・・・
とりあえずGraphEditでみてみようとおもいます・・・

ちなみに、同じソースを別PCで動かすとGetConnectedMediaTypeでエラーはでませんし
正常にbmpファイルに落とすことができています。



246 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:24:24 ]
>指定フレーム
フレームで指定ってできるんだっけ?
○番目のフレームとか。

247 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:41:20 ]
つSetPositions

とはいえ、TIME_MEDIA_TIMEしか使えないストリームだと
ちょっと難しいけど。

248 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:49:54 ]
SetPositionsって時間指定じゃん

249 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:40:38 ]
TIME_FORMAT_FRAMEを指定してから使うよろし。
>>247でも書いてるけど、すべてのストリームでTIME_FORMAT_FRAMEが使えるとは限らない。

本格的にやるならDESを使うんですかね。
自分はやったことないので分からないですが。

250 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:56:17 ]
コーデックの関係でSampleGrabberでの画像抽出ができずBasicVideoを使っているのですが
BasicVideoのGetCurrentImageで画像を取ると3秒もかかってしまうのですが
これをもっと早く取る方法ってありますか?

251 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:27:45 ]
ムリポ

「コーデックの関係でSampleGrabberでの画像抽出ができず」辺りを
もう少し詳しく話した方が、いい話が聞けるかもよ?

252 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:56:00 ]
>>251
そうですね。失礼しました。
カノープス社のコードックであれしてるaviファイルから静止画を取りたいのですが
これが何故かSampleGrabber->GetConnectedMediaTypeでエラーになるんです。
ちなみにほかのaviファイルでは正常に静止画が取得できています。
それで試しにBasicVideoで静止画と取ってみたら取れたのですがこれが遅くて・・・

253 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 17:57:02 ]
小出しはやめてね



254 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 18:04:39 ]
カノープスのコーデックといってもHQとかMJPGとかいろいろある

255 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 18:11:38 ]
HQです。
今色々試してたんですが、SetMediaTypeするときの
サブタイプをMEDIASUBTYPE_RGB32にすると
GetConnectedMediaTypeでエラーが出ずに通ったのですが・・・
これすると、映像がさかさまになってる・・・

256 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:17:22 ]
>>255 さかさまってビットマップか?

257 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:44:12 ]
---------------------------------------------------------------------------
可能な限り速くコマ送りするのってどうするんですか?
IVideoFrameStepを使うと1倍速以上にはならないし、逆方向には進めません。
独自レンダラでレンダリングした画像を
加工して1コマずつ連番BMP出力したいだけなんですが。
(将来的にはDirectShowを使った出力も実装したいが、取りあえずBMPで)

>>255
memcpyを使って画像を自力で反転するしかないのでは。
(画像の横幅*4byteのサイズでコピーを繰り返す)
4byteなのはMEDIASUBTYPE_RGB32で32bitの画像と指定したからです。
もしRGB24なら3byteです。

258 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 00:52:55 ]
>>255
BITMAPINFOHEADERか何かで上下反転してるかどうかの判定は
可能じゃなかったかな?

>>257
SampleGrabberを使ってた時の経験だけど、SetSyncSource(NULL)では
うまくいかなくて、SetRateで適当に100倍くらいを設定して全力取得したり
したことはあります。ただ、コーデックによってはうまくいかないかも。

259 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 09:47:42 ]
MIDIをWAVEに変換する方法はあるんでしょうか?
再生される以上どこかで電圧値に置き換わってると思うんですが、サウンドボードで変換されてるんですか?
MIDIデフォルトOUTを置き換えても不可能でしょうか?WAVE関連のものに置き換えできませんでした

260 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:15:08 ]
>>256
いえRGB32にすると映像の方がさかさまになるんですよ。
RGB24にすると映像は正常なのですがGetConnectedMediaTypeでエラーになりまふ
>>258
あ、そうなんですか?
ちょっとヘルプみてみます。

261 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:32:57 ]
>>260
取得できたAM_MEDIA_TYPEからBITMAPINFOHEADERを引っ張り出して
biHeightの正負を見てみそって。

一応ココ(↓)見とき。
ttp://msdn.microsoft.com/ja-jp/library/cc352308.aspx
ttp://msdn.microsoft.com/ja-jp/library/cc371307.aspx
ttp://msdn.microsoft.com/ja-jp/library/cc352096.aspx

フォーマットによって成功したりしなかったりはColor Space Converterが
途中に入るかどうかによるのかもしれん。

262 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:38:29 ]
>>261
ありがとうございます。
しかしbiHeightが負で判別できた場合はどうやって映像を正常に表示できるんでしょうかこれ。


263 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:56:49 ]
ん?
レンダリング結果も上下反転してるの?
BMPに保存したときだけじゃなくて?



264 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:02:18 ]
BMPファイルのヘッダの高さもそのままマイナスにすれば普通は問題ない
まれに対応していないソフトもある

265 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:32:50 ]
>>263-264
静止画は正常で動画の方が逆になるんですよね・・・
でもRGB24にすると動画は正常になるけど
GetConnectedMediaTypeでエラーになって・・・

266 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:47:44 ]
それがDirectShowの仕様です

267 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 18:26:01 ]
全フレームの画像を取得したいのですが
SetPositionsでフレームを移動して取ると時間がかかるので
もっと効率的な方法はどうしたらいいですか?

268 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:41:02 ]
>>259
WavDestとFileWriterでよかばってん
>>267
ストリーム流しながらのサンプルグラバでよかばってん

269 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:52:30 ]
ばってん何?

270 名前:257 mailto:sage [2009/01/23(金) 22:24:25 ]
>>258
SetRateは(貴方が書いているように)コーデックによっては使えないので・・
SetSyncSource(NULL)しても再生は別スレッドで行われているのに
どうやって
レンダリング→BMP出力→レンダリング→BMP出力→...
のように同期させられるんでしょうか。

271 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:27:17 ]
基本的な事だけどpushとpullモデル理解しているか?

272 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:37:32 ]
>>257
サンプルグラバとNullRenderer使えよ

273 名前:257 mailto:sage [2009/01/23(金) 23:17:54 ]
>>271
push??pull?
ttp://unkar.jp/read/pc11.2ch.net/tech/1162913156
色々調べてみたら、これがヒットしました。
・・・ソースフィルタを作って加工したデータをこのフィルタに送るんでしょうか



274 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:20:49 ]
MSのドキュメントも読んでいないなんて死んだほうがいい

275 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:38:54 ]
>>268
ダメです、MIDIParsaとWevDestがつながりません。
pMediaType->SetType(&MEDIATYPE_Midi);
の変更もしてみたんですがダメです。グラフエディタでつながらないと出ます
お願いします

276 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 13:47:34 ]
>>275
情報少なすぎてわかるわけがないよ。エスパーじゃないし。
わかるように書いてよ。

277 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 15:04:31 ]
MIDIのトランスフォームフィルタを自作するか見つけてくる必要がある。

278 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 17:51:50 ]
まったく作れそうな気がしません
音源はどこから引っ張ってくればいいんですか?

279 名前:267 mailto:sage [2009/01/26(月) 11:45:44 ]
>>268
再生しながらはどのようにゲットすればいいですか?
イベントですか?
でもイベントでは1フレームずつ入ってこなかったしなあ


280 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 18:15:47 ]
コールバックですよコールバック
このスレでも何度か話題に出てるんで探してみれ

281 名前:デフォルトの名無しさん [2009/01/29(木) 21:59:01 ]
COutputQueueを使ってコマ送りって可能?

282 名前:デフォルトの名無しさん [2009/01/30(金) 13:26:27 ]
サンプルグラバのGetCurrentBufferで静止画を取得する時に
動画サイズのまんまではなくて縮小して取得したい時はどうしたらいいですか?

283 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:50:00 ]
自分で縮小でも拡大でも好きにすればいいんじゃない?



284 名前:デフォルトの名無しさん [2009/02/02(月) 03:20:48 ]
複数の音楽ファイル(mp3とWMA)の一部ずつ(サビの部分)を繋いで、一つのWAVにしたいのですが、
どう作ればいいのか判りません。
最初の曲は、サビまでシークしてしてから、WAVEファイルにはできているようです。
ですが、2曲目を処理しようとすると、グラフを停止しないと、接続できないという現状です。
例えば、2つの曲をフェードインアウトで繋げる処理はどう書けばいいのでしょうか?
なにかヒントやサンプルなど教えてもらえるとありがたいです。

285 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 04:29:59 ]
高校の物理をちゃんと勉強していれば簡単な事なんだけどね

286 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:56:55 ]
DESじゃないのん?

287 名前:デフォルトの名無しさん [2009/02/03(火) 01:16:38 ]
>>286
DESってDirectshow編集サービスのことですよね。
ちょっと調べてみます。 ありがとうございました。

288 名前:デフォルトの名無しさん [2009/02/05(木) 14:32:39 ]
質問です。
MP4ファイルの頭に5Kほどのデータを付加したファイルを再生する
フィルターをASyncサンプルに手を加えて作りました。
GraphEditではファイルを選択して、VideoRendererとPIN接続すると、
MP4Splitterとffdshow codecが間に入り再生できます。
このファイルをGraphEditにD&Dするとはじかれます。

これをIGraphBuiderでグラフを作って再生したいのですが、
どうしても自作フィルターとMP4SplitterとのConnectで
CANNOT_CONNECTが帰ってきてしまいます。
自作フィルタにファイルパスを与えてグラフに追加するという、
GraphEditでの動作をどのようにプログラムしていいのかわかりません。
方法をご存知の方、ご教授ください。
ベースとするフィルタを間違えているのでしょうか?




289 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:14:59 ]
デバッグすりゃ原因がわかるだろ

290 名前:デフォルトの名無しさん [2009/02/05(木) 15:17:29 ]
>>289
知らないならレスしないで下さい。ウザいだけです。。

291 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:01:11 ]
俺もデバッグすりゃ原因が分かると思う。

292 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:50:34 ]
IGraphBuilder::RenderFile() を使っちゃってる、に1票

・・・じゃないよね。
自作フィルタはちゃんと自前でCoCreateInstanceしてる?

293 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:51:15 ]
あ、メリット値を適切に設定してるなら別ね。



294 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:14:08 ]
GraphBuilderに自作SourceFilterとVideoRendarerだけ追加したら
後はRendaerFileでいいんじゃないの?
そうすりゃMP4Splitterとffdshow codecが勝手に間に入るだろ

295 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:36:50 ]
LONGLONG tmp = (LONGLONG)(frame * Renderer->getATPF());
pMediaSeeking->SetPositions(&tmp,AM_SEEKING_AbsolutePositioning,
NULL,AM_SEEKING_NoPositioning);

AverageTimePerFrameを使ってシークするのって駄目なんですか?
たまに思った位置にシークできないファイルがあります。

296 名前:デフォルトの名無しさん [2009/02/07(土) 01:54:57 ]
ISampleGrabberについての質問です。
DirectShowでmp3を再生中にISampleGrabberのGetCurrentBufferを行うと、
再生中の場所の波形データが取得できると思うのですが、
毎回GetCurrentBufferを行っても、1秒間に約3回ほどしか取得するデータに変化がありません。
リアルタイムに現在再生中の場所の波形データを取得するにはどうしたらよいのでしょうか。

297 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:37:21 ]
oshiete1.goo.ne.jp/qa4695764.html
okwave.jp/qa4600803.html


298 名前:デフォルトの名無しさん [2009/02/08(日) 10:12:29 ]
>>297
ありがとうございます。
解決しました。

299 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 11:17:10 ]
質問したなら、どう解決したのか書いて欲しい。
それにしてもマルチポストなんて今時珍しいね。
回答が付いているところにも驚いた。

300 名前:デフォルトの名無しさん [2009/02/08(日) 13:21:49 ]
初歩的な質問ですが
キャプチャーボードにチューナ・S端子・コンポジットがあるのですが
その切り替えはDirectShowでできるのでしょうか?
カメラで入力した映像を解析ソフトを作ってみたのですがWebカメラでは物足りなくて
手元にあったボードを使ってみたのですが初期でチューナーになってしまうので
お願いします

301 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:32:30 ]
映像解析ソフトを作るとはハイレベルだ

302 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:28:15 ]
>>300
つ Crossbar

303 名前:300 mailto:sage [2009/02/08(日) 17:55:56 ]
できるんですね。ありがとうございます



304 名前:デフォルトの名無しさん [2009/02/09(月) 09:54:17 ]
2つの動画を同時再生したいんですが、2回同じ表示手続きをしないとダメですか?

305 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 10:42:16 ]
グラフ2つ作れば良いだけの話では?

306 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 11:58:32 ]
>>305
あ、すみません。
そこの所をもうちょっと教えてください。
どこか参考になるサイトとかもあったらお願いしまふ

307 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 12:54:37 ]
>>306
1つのソースでレンダラ2つ出したいならスプリッタを使う。
別々のソースを表示したいならグラフビルダ2つ用意する。

308 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 13:45:22 ]
>>307
別の動画を再生したいからグラフを2つ作るんですね。
それで再生とかする場合はMediaControlも2つですよね?


309 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 15:24:10 ]
質問です。

IMediaDet::get_StreamLength() および get_FrameRate() で得られた値を使って
非圧縮AVIファイルの総フレーム数を取得するコードを書いていますが、
あるVista環境にて総フレーム数を間違うことがあります。
(822フレームと算出してもらいたいところ、830となったりします。)

何か特殊なフィルタがインストールされているのではないかと思うのですが、
客先環境のため、簡単にチェックできません。
とりあえず不具合回避策は準備したので緊急度は低いのですが、
このようなことが起こるケースについて何かご存知の方がいらっしゃいましたら、
ご教示ください。

310 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 16:11:46 ]
>>308 いえす


311 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 16:16:20 ]
>>310
ですよね。
と、言う事はやはり再生等に必要なアレは2つずつ用意しないといけないんですね。
ちなみに、同じコールバック関数を呼ぶようにした場合ってどっちの動画か見分ける術ってありますか?

312 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 16:24:04 ]
>>311
アレじゃわかんない。
コールバックって何よ。ISampleGrabberCB::SampleCBだったら
パラメータのIMediaSample で区別ができるかもしれない。
が、流す動画による。

313 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 16:27:03 ]
>>312
BufferCBを使ってるんです><
ちなみにアレとは
MediaControl、MediaEventEx、SampleGrabber、VideoWindowです。。。



314 名前:デフォルトの名無しさん [2009/02/19(木) 17:11:04 ]
クズ共ちょっと教えてください。
XP64ビットOSでVC2009で32ビット用でコンパイルすると正常に動画再生ができるが
64ビット用でコンパイルすると音だけでて映像が表示されないんです。
お前達のようなゴミにはわからないかもしれませんが宜しくお願いします。


315 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:16:53 ]
VC2009

316 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:26:03 ]
コーデック

317 名前:デフォルトの名無しさん [2009/02/19(木) 17:33:45 ]
思ったとおり役に立たないクズしかいないですね

318 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:35:46 ]
>>316

319 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:58:51 ]
ここはエスパー板じゃないんで、314の期待するような能力者は居ません。

もうちょっとヒントが多ければ優秀な推理マニアが現れるかもね。

320 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:53:51 ]
だからさ、64bitプロセスには64bit版コーデックが要るんだよ。

321 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 02:26:18 ]
知ってるがおまえの程度がAA略


322 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 08:21:22 ]
64ビットアプリにゃ64ビットDLL(この場合コーデック)が必要という常識も知らず
クズ呼ばわりってどんだけおめでたいんだ・・・。
コピペ厨房の俺でさえ知ってるわ。


323 名前:デフォルトの名無しさん [2009/02/20(金) 09:56:16 ]
>>322
その程度の知識しかないから役立たずのクズって言ってるの
だから知らないならレスするなって



324 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 10:14:37 ]
64bit Windowsが普及しない原因を知ってれば、
容易に気が付くだろ。知識なんかほとんどいらね。
バカじゃねーの?

325 名前:デフォルトの名無しさん [2009/02/20(金) 10:36:15 ]
知らないからって必死になるなって

326 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 11:09:56 ]
>>314
が必死になってるのか。

327 名前:デフォルトの名無しさん [2009/02/24(火) 11:30:20 ]
VideoWindow->put_OwnerにHBitmapを与えて再生した時に
ウィンドウフレーム無しの動画が画面上に表示されるのですが
これHBitmapだからそのまま変換して画像としてファイルに保存できますか?

328 名前:デフォルトの名無しさん [2009/02/24(火) 12:05:30 ]
ISampleGrabbberCBコールバックのBufferCBで受け取るDIBデータを
指定したサイズで受け取るにはどうしたらいいですか?

329 名前:328 [2009/02/24(火) 15:01:36 ]
現状では動画のオリジナルサイズになっているのですが
これをVideoWindowで再生させてるウィンドウサイズと同じ大きさにしたいです

330 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 16:02:56 ]
リサイズ機能なんてねーよw
普通はレンダーが勝手に表示サイズ合わせるだろ

331 名前:328 mailto:sage [2009/02/24(火) 16:08:50 ]
そうですか。やっぱり無いですか・・・

332 名前:デフォルトの名無しさん [2009/02/24(火) 22:55:54 ]
すみません。最近ARIBの仕様書がWebで閲覧できることをしったので、
地デジチューナーからSI情報を取得して、中身をさわってみたいと
思いました。
DirectShowでそんなかんじのことができるのでしょうか?
(SIのパースまで、という意味ではなく、データセクションが
抜ければ十分うれしいです)

参考になるURLなどございましたらご教授の程お願いできますでしょうか?
よろしくお願いいたします。

333 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:33:05 ]
>328
質問の内容を十分理解せず、脊髄反射的回答しちゃうけど、
動画のリサイズはDESでできた気がするデス。



334 名前:328 mailto:sage [2009/02/25(水) 10:01:30 ]
>>333
あ、すみません。
DESってどんなのでしょうか?
何か参考になるサイトとかあったら教えてください><

335 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 00:27:55 ]
Directshow Editing Servicesの略DES。
この辺を参考にすると良いDES。
ttp://msdn.microsoft.com/ja-jp/library/ms867700.aspx
ttp://msdn.microsoft.com/ja-jp/library/dd148668.aspx

ほとんど329しか読まずに応えてしまったけど、
・ソースそのものが変化してしまう
・再生中にサイズを変えるとかは不可能
なんで要注意。

336 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:13:01 ]
質問失礼します。
4chの音声を同期を取りながら再生する方法を一週間ほど考えているのですが、やり方が全くわかりません。
2つのオーディオチャンネルを結合して、ステレオにするフィルタはCodeZineで見つけたので作ってみました。
ただ、これだと(当然ですが)LとRから再生されてしまうので・・・。
単純にLとL、RとRを加算して一つのステレオとして出したいのですが、どうすれば良いのでしょうか?
お知恵を貸して下さい、よろしくお願いします。

337 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 02:20:38 ]
意味がわからん

338 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 08:40:43 ]
Codezineのサンプルソースをベースに、そういうフィルタをつくればいいじゃん。

339 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 10:39:12 ]
ミキシングしたいとか?

340 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 15:19:59 ]
最終的に何がしたいのだろうね?
自分でMTRつくりたいのか?w

341 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 15:27:11 ]
>>340
お前みたいなクズはレスするな。

342 名前:デフォルトの名無しさん [2009/03/18(水) 03:08:51 ]
あげ
ミキシングしたいのかな?質問が意味不明

343 名前:デフォルトの名無しさん [2009/03/18(水) 14:10:56 ]
有識者の皆様に質問です。

デバッグビルド時にフィルタグラフをROTに登録しています。
ttp://msdn.microsoft.com/ja-jp/library/cc370087.aspx

以前は普通に GraphEdit から "Connect to Remote Graph" で接続できていたのですが、
今日久しぶりに当該コードをメンテナンスしようとしたら接続できなくなっていました。

[症状]
 - "Connect to Remote Graph" でリストには表示される。
 - 選択してOKをクリックしても、何もグラフ上に表示されず。
 - 再度 "Connect to Remote Graph" でリストを表示すると、見えなくなっている。
 - デバッグ実行でも、コマンドラインからの実行でも症状変わらず。

この問題について、何か心当たりのある方はいらっしゃいますか?



344 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 15:17:56 ]
>>343
Vista で実行して困っているのなら
msdn.microsoft.com/en-us/library/ms787252.aspx

345 名前:343 mailto:sage [2009/03/18(水) 16:45:18 ]
>>344
ありがとうございます。
環境書いてませんでした。OSはXP(32bit)です。
念のためこの環境でも proppage.dll を登録してみましたが、やはり変わりませんでした。

なお、ひとつ間違いがありました。
pROT->Register() の第1引数になぜか 0 を指定してました。
ROTFLAGS_REGISTRATIONKEEPSALIVE に変更することで、何度 "Connect to Remote Graph" を
選択してもリストに "pid 0xXXX(ddd) IFilterGraph = XXXXXXXX" が出てくるようにはなりました。
ただ、やはり選択→OKしてもフィルタ構成は表示されません。うーむ・・・。

ちなみに、Windows SDK 6.0A/6.1 に含まれる GraphEdt ではリストにすら
表示されませんでした。
指定すべきモニカの文字列フォーマットが変わってたりするのでしょうか・・・。

346 名前:343 mailto:sage [2009/03/18(水) 17:07:55 ]
解決しました。
きっかけはこちら。
ttp://questionbox.jp.msn.com/qa1612988.html

quartz.dll を登録したら治りました。
ええー、quartz.dll ってデフォルトで登録されてませんでしたっけ?って感じですが・・・。

なお、この状態なら Windows SDK 6.0A/6.1 に含まれる GraphEdt でも接続できました。
でもタイミングによってなぜか Runtime Error が出ます。


どうもお騒がせしました。

347 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:11:09 ]
>>345
regsvr32 "C:\WINDOWS\system32\quartz.dll"

348 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:11:39 ]
orz

349 名前:デフォルトの名無しさん [2009/03/19(木) 02:31:25 ]
347
明日はいいことあるさ

350 名前:デフォルトの名無しさん [2009/03/23(月) 11:02:01 ]
RenderFileの戻りが遅いのですがこれを早くする方法を教えてください

351 名前:デフォルトの名無しさん [2009/03/23(月) 11:53:31 ]
なぜ遅いか考えたことある?



352 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 12:24:34 ]
俺のRenderFileは早いよ

353 名前:デフォルトの名無しさん [2009/03/23(月) 13:13:05 ]
早くする方法があったら教えてください



354 名前:デフォルトの名無しさん [2009/03/23(月) 13:17:47 ]
お前、馬鹿だろ



355 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 15:05:10 ]
「RenderFileの戻りが遅い」と判断する根拠がよく分からないよ。
サンプルプログラムやWMPに比べて異常に遅いと体感できる、
もしくは実測してこうだった、などの比較はできてますか?


とりあえずエスパーで二つほど。

 ・インストールされているコーデック(パック)を片っ端からアンインストールする
 ・予め使うことが予定されているフィルタをフィルタグラフに登録しておく

あとはもう少し詳しい状況を教えてもらえれば、他にも何か言えることがあるかも。

356 名前:デフォルトの名無しさん [2009/03/23(月) 15:23:29 ]
RenderFile関数から抜けてくるまで2秒くらいかかります。
早くする方法があったら教えてください

357 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 15:25:57 ]
速くするためには、まず何の理由で遅いのかを調べようぜ

358 名前:デフォルトの名無しさん [2009/03/23(月) 17:56:43 ]
RenderFileの戻りが遅い理由って舞い糞ソフトに聞けばいいんですかね?
関数の内部事情なんて僕には検討もつきませんが。
っていうか、知らない人はレスしないで下さい。ウザイだけですよっと。

359 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 18:11:52 ]
うちじゃ2秒もかからないからな。
お前のとこだけで遅いのに理由がわかるわけないだろう。

360 名前:デフォルトの名無しさん [2009/03/23(月) 18:16:06 ]
ごめん2秒じゃなかった1秒ちょいだった
ちなみにファイルサイズは4GBくらい
まあ、どうせお前らの持ってるエロ動画なんて100MB前後だろ?

361 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 18:35:09 ]
お前の持ってるちんこ同士がけこーんしてるような動画は1ビットも要りません

362 名前:デフォルトの名無しさん [2009/03/23(月) 18:51:50 ]
どうせDVDでも引っこ抜いて4GBなんだろ、



363 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 19:02:34 ]
しかたないなあ。
たまたまシンプルな再生プログラム書いてたのでテストしてみたよ。
6GB超のAVIファイルを RenderFile() に突っ込んで要した時間は 169[ms] でした。

はい、次の情報どうぞ。



364 名前:デフォルトの名無しさん [2009/03/23(月) 19:05:04 ]
すんませんでしたとしか言いようがありませんよ

んー、とりあえずお前らのソースみてやるからスレに貼ってください。

365 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 19:15:01 ]
HRESULT SimplePlay(LPCWSTR lpwstrFile)
{
CComPtr<IGraphBuilder> m_pGraph;
CComQIPtr<IMediaControl, &IID_IMediaControl> m_pControl;
CComQIPtr<IMediaEvent, &IID_IMediaEvent> m_pEvent;

HRESULT hr = CoInitialize(NULL);
if (FAILED(hr)) return hr;
hr = m_pGraph.CoCreateInstance(CLSID_FilterGraph);
if (FAILED(hr)) return hr;
hr = m_pGraph.QueryInterface(&m_pControl);
if (FAILED(hr)) return hr;
hr = m_pGraph.QueryInterface(&m_pEvent);
if (FAILED(hr)) return hr;

366 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 19:16:22 ]
DWORD tTmp = timeGetTime();
hr = m_pGraph->RenderFile(lpwstrFile, NULL);
tTmp = timeGetTime() - tTmp;
if (FAILED(hr)) return hr;

hr = m_pControl->Run();
if (FAILED(hr)) return hr;

for (;;) {
long code = 0;
hr = m_pEvent->WaitForCompletion(0, &code);
if ((FAILED(hr) && hr != E_ABORT) || code == EC_COMPLETE) {
break;
}
}

367 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 19:17:27 ]
CoUninitialize();
return S_OK;
}

>>365-367 まとめてみてください。
RenderFile()を抜けた後の tTmp の値を教えてね。
エラー処理に関するコメントは No thank you です。

368 名前:デフォルトの名無しさん [2009/03/23(月) 19:24:45 ]
>>365-367
ありがとうございます。
やってることはお前いや貴様と一緒ですね
やっぱその他の環境の問題なんですかねこれ。
あ、ちなみにOSはXP64ですよですよ。
もうちょい調べてみます。わざわざありがとうございました、

369 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:34:07 ]
EnumPins グラフ 構築
で検索

370 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 10:53:26 ]
つーか情報の小出しに付き合ってられんわ

371 名前:デフォルトの名無しさん [2009/03/24(火) 11:38:52 ]
>>370みたいな奴って知らないのにレスするタイプだよね

372 名前:デフォルトの名無しさん [2009/03/24(火) 11:47:37 ]
>>371みたいな奴って煽りのしかレスできないタイプだよね



373 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 11:50:58 ]
最初の情報は遅いってだけ
次に2秒かかると出て
次に4GBと出て
自分のソースは出さずに人に要求して
それからOSがXP64と出た

で、>>355のレスには何も反応していない。
これで原因分かるのに間抜けだよな。



374 名前:デフォルトの名無しさん [2009/03/24(火) 12:26:25 ]
単細胞って幸せだと思った

375 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 14:44:08 ]
最初の書き込みでゴミって判るのに、反応する奴がいるのが不思議

376 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 14:59:53 ]
過疎るくらいなら枯れ木も山の賑わいくらいに思ってた方がいいかな、と思って。
不快だったらゴメンね。

377 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:05:55 ]
ごめんねほんと






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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