1 名前:デフォルトの名無しさん [2006/11/08(水) 00:25:56 ] 前スレ pc8.2ch.net/test/read.cgi/tech/1026666092/
474 名前:473 [2007/05/08(火) 16:25:19 ] すみません、間違えてさげてしまったΣ ついでに訂正・・・ ×streams.hとやらがありませんでした。 ○streams.hとやらが必要みたいですが、ありませんでした。 何がやりたいかわかりやすく書くと、 ゲームの中のテレビに任意の動画を流したい、ということです。
475 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:11:28 ] >>473 D3Dのテクスチャに動画をレンダリングするのは、 SDKのサンプルにそのものずばりのがある。 DirectShow 関連のSDK が利用できないのであれば、 動画ファイルをWMVなりAVIで用意して、AVI関連APIや Windows Media Format SDKでデコードすれば良いと思う。
476 名前:473 mailto:sage [2007/05/08(火) 18:42:40 ] 回答ありがとうございます! >WMVなりAVIで用意して、AVI関連APIやWindows Media Format SDKでデコード なるほど!動画関連のAPIに詳しくなかったので盲点でした。 その辺はこれから調べようと思うんですが、一つ質問させてください。 >SDKのサンプルにそのものずばりのがある。 これなんですが、WindowsSDKのことでしょうか? 最初DirectXSDKのサンプルかと思ったのですが見当たらなかったので・・・
477 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 19:01:25 ] >これなんですが、WindowsSDKのことでしょうか? そうです。 Windows 2000 だと Windows server 2003 SP1 Platform SDK を利用することになります。 SDK の導入あたりから書かれたページを見つけたので読んでみてはいかがでしょうか。 ttp://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=17
478 名前:デフォルトの名無しさん [2007/05/10(木) 01:38:59 ] DirectShowに足突っ込んで間もないのですが、質問です。 VMR9を使って動画の再生を行おうとしているのですが、動画の 元サイズとアスペクト比を取得しようと IVMRWindowlessControl9::GetNativeVideoSizeを使っているのですが、 このメソッドのセットする値が期待した値になりません。 long x, y; long aspx, aspy; HRESULT hr = pVMRWindowlessControl9->GetNativeVideoSize(&x, &y, &aspx, &aspy); このコードで720×480のmpeg2ファイルを読み込むと期待としては x = 720 y = 480 aspx = 4 aspy = 3 こんな感じになると思っていたのですが、実際は x = 720 y = 540 aspx = 720 aspy = 540 となってしまいます。元々のサイズとアスペクト比を取得したいのですが、 これではできません。他の方法があるのでしょうか? ちなみに、IBasicVideo2を使うとちゃんとできるんですよね。他の機能を実装 するためにVMR9を使わざるを得ないのですが・・・
479 名前:デフォルトの名無しさん [2007/05/16(水) 14:14:00 ] どうもすいません。 Webカメラから取った動画を保存できるようにプログラムを書いたのですが、そこまで完成したのを見せたところ。 「こんどはコレ再生して、再生時間を表示できるようにできないかな?」 と言われてしまいましたが、正直何を使って実現すれば良いかどうかから思い当たるところがありません。 そのインターフェースを使えばよいかどうかだけでも、教えていただけないでしょうか…。 IAMDroppedFramesあたりかな、とも思ったのですがいまいち思ったように動いてくれていません。
480 名前:479 [2007/05/16(水) 14:43:41 ] すいません。 先ほど、話をしなおしたのですが。私の勘違いがあって。 「Webカメラから取った動画」に「現在の時間」を残せないか?という要求でした。 具体的には動画の何処かの隅っこに、現在時間を画像として書き込んでしまうようなものを想像していたみたいです。 質問するのではなく、自前でフィルタを書くべきみたいですね。すいませんでした。
481 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 17:19:42 ] でも正確なキャプチャ時刻を得るのは難しいよな。 誤差が33ms以内とか
482 名前:デフォルトの名無しさん [2007/05/17(木) 00:56:53 ] あぁ。僕もそんな要望きたからやった。 単に秒まで出すだけならたやすい。 インプレイスフィルタが1番楽。次点は資料がたくさんあるトランスフォームフィルタ。 1・TranceFormメソッドをオーバーライド 2・IMediaSampleからDIBポインタをとる 3・DIB→デバイスコンテキストに変換 4・WinAPIのTextOutで文字書く 5・デバイスコンテキスト→DIB変換 たったこれだけでおk
483 名前:460 [2007/05/20(日) 19:49:18 ] ごめんなさい。弱音を吐きます。 結構頑張ったけど、2,3のステップの所のコードが作れません。
484 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 05:05:45 ] 時間でいいなら、必要な文字の画像を準備して、合成するだけでいいんじゃね? 厳密なアルファブレンドだと処理が重いから、切り抜き程度でいいと思う。
485 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 08:39:41 ] CreateDIBSectionとかググれ
486 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 15:14:30 ] >>483 客の要求仕様に基づいてプログラムを作ってるならしようがないけど、もしかすると 「>>460 が作業する工数 >>>>>>> 撮影時に時計を一緒に写す手間」じゃないか? もしそうなら道楽で予算を無駄遣いしてることになるから、正直適当なとこでやめて 本業に精を出した方がいいような気がする・・・
487 名前:483 [2007/05/21(月) 17:40:41 ] みなさん、ありがとうございます。 >>484 うん、最初にそんな感じのことを思いついて、ドット絵の様な汚い文字を無理やり表示させてみました。 どうしても気持ち悪いので、なんとかしたいですが、後回しかも…。 >>484 ヒントありがとうございます。 後日完成を目指すです。
488 名前:デフォルトの名無しさん [2007/05/21(月) 21:30:57 ] フィルタを作成しているのですが、リリースモードでビルドした場合に、そのフ ィルタを使用すると強制終了が起こってしまいます。 コンパイルエラーは出ません。 デバッグモードでビルドした場合は、問題は起こりません。 強制終了が起こる場所は、おそらくmallocをしているところだと思います。 正確にはmallocを使用している関数で落ちるのですが、その関数の内部は見えま せん。 デバッグとリリースで、mallocが使えないことってあるのでしょうか。
489 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:47:43 ] >デバッグとリリースで、mallocが使えないことってあるのでしょうか。 ありません。
490 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 03:24:02 ] GrapEditをホストにして普通にデバッガで追ってみれば?
491 名前:488 [2007/05/23(水) 00:27:49 ] 何かよくわかりませんが、msvcrt.libをリンクしないようにしたら上手く行きました。 どうもありがとうございました。
492 名前:デフォルトの名無しさん [2007/05/23(水) 08:32:54 ] >>460 よ フィルタを作るのが最善の解決方法かどうかまだ悩んでいるようだけど自分はそれが1番楽な方法だと思う。 俺はヒントというかフィルタの作り方手順を書いたものだが、手順2、3のどこがわからんのか明確化してくれ。 手順3については>>485 で調べられると思うけど
493 名前:483 [2007/05/24(木) 10:22:39 ] >>492 どうも、お手間をおかけして申し訳ありません。 インプレイスフィルタということで、SDKサンプルのEZrgb24を基本に作っておりました。 フィルタのTansform関数で、引数としてIMediaSampleを受けりますが これを ・DIB形式に変換 ・それをデバイスコンテキストの代入 のところで躓いておりました。 一応やっつけ実装で納得はしてもらったのですが、自分で恥ずかしいので、後で直したいというのが正直なところです。 若輩者で申し訳ありません。
494 名前:デフォルトの名無しさん [2007/05/24(木) 21:37:23 ] いや、俺も若輩ものだから…。楽なのはソースを渡して解析して貰う事なんだがな それすら今は体力的に自信ない
495 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 02:39:17 ] ちょっといいことを教えてあげよう。 EZrgb24ってさインプレイスフィルタじゃないお( ・ω・)∩ 違いはね。何のフィルタクラスを継承してるかで決まるんだ ちなみに「EZrgb24」は「CTransformFilter」を継承してるお
496 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 03:59:41 ] WinAPIのDIBってボトムアップ形式のみでなかった?
497 名前:デフォルトの名無しさん [2007/05/25(金) 08:12:46 ] ボトルアップってどういう意味? 座標原点の話しかな。DIBは他画像形式に比べると上下逆さまだけど、変換時にY座標をマイナス値を指定すればどうとでもなる
498 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 08:34:21 ] ボトムアップなら単語そのままの意味だが ボトルアップは飲み終わったボトルを投げ上げるという意味だな
499 名前:デフォルトの名無しさん [2007/05/25(金) 18:04:09 ] なるほど〜私はてっきりボトルを飲み干す事かとおもたよぉ〜 で、、意地悪しないでDIBのボトムアップを教えてくれ
500 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 23:13:53 ] >>497 でほざいていることがまさにボトムアップ つーかキーワードがこれだけでてんのに自力で検索くらいしようとは思わんのかね
501 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 23:26:22 ] ただ単にBITMAPの話じゃん 画像いじるなら基礎の基礎
502 名前:デフォルトの名無しさん [2007/05/26(土) 12:58:18 ] 自作ソースフィルタってどうやってフィルタグラフに追加するんですか? IGraphBuilder::AddSourceFilterを使ってもデフォルトのソースフィルタが呼ばれるし、 普通のフィルタ同様に、 CoCreateInstance&AddFilterすると、ソースフィルタに読み込むファイル名が指定できません。
503 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:01:49 ] >>500 >>496 の聞きたいことの意味がわからんかっただけで 俺は知ってるからおk。 今日はPCだからしらべてみたけど、ボトムアップという表現 はあんまり使われてないぞ?? ■Google調べ 「DIB ボトムアップ」検索結果 っミ【114件】
504 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:27:02 ] DirectShow スレということで、本家のDirectShowカテゴリ内のページ。 トップダウンとボトムアップの、メモリ上のピクセルの並びの違いについてごくごく簡単に説明している Top-Down vs. Bottom-Up DIBs ttp://msdn2.microsoft.com/en-us/library/ms787796.aspx サンプル画像のセンスの無さには相変わらず笑わせてくれる。
505 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:27:48 ] ありがとう。本家MSDNが使ってる言葉なのか 今後使っていくよ。 まぁBITMAPの仕様の話であって あんまりDirectShowとは関係ないとこで使うことになりそうだけど
506 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:32:32 ] >>502 ごめんボトムアップに気を取られていた 自作フィルタを登録する方法はコマンドラインから 「regsvr32 ぱす&自作フィルタ.ax」でレジストリ登録が必要です。 その後「Graphedt」でフィルタグラフに登録できることを確認するんだよ それでもできなかったらまた質問しましょう
507 名前:502 [2007/05/27(日) 02:21:11 ] >>506 すいません、説明不足でしたが、レジストリ登録、GraphEditでの確認は出来ています。 ただアプリケーションから自作ソースフィルタを使ってファイルを読み込む方法がわかりません。 GraphEditで追加したときは、読み込むファイルを聞いてくるのですが、アプリからソースフィルタを追加しても、ファイルを聞いてこないのです。
508 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 04:22:30 ] なるほど。 窓枠の提供はどこがやるの?って事だと認識しました。 自作ソースフィルタを「GraphEdit」で開いた場合、 ファイル選択ウィンドウはディスクトップ画面のド真ん中に出ますか? もし真ん中に出ない場合、「hWnd」をデスクトップから取っていないことになります。 アプリケーションから渡してやる(=ファイル選択ウィンドウを作って選択結果をフィルタに渡すような設計) にしてやる必要があるかと思います。 自作ソースフィルタのファイル選択ダイアログを出す部分のソースを晒せば解決できると思いますよ
509 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 04:26:48 ] ソースフィルタはIFileSourceFilterインターフェースを持ってるでしょ。 AddFilterした後でそれを呼び出して(QueryInterface)、Loadメソッドを 実行してやるんだよ。 でも、そんな基本的な所でつまずいてるのにソースフィルタ自作とかよく出来たな。
510 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 12:31:49 ] 手っ取り早くソース晒せといいたい
511 名前:502 [2007/05/28(月) 12:17:00 ] >>508 ,509,510 回答ありがとうございます。 >>509 まさにそれでした!ありがとうございました。 無知ですいません。
512 名前:デフォルトの名無しさん [2007/05/28(月) 18:24:46 ] 簡易動画編集のようなことをやるために、複数の動画ファイルを連結して1つのファイルにエンコードしようとしています。 いまのところ、ファイルごとに構築した再生用のフィルタグラフから静止画を取り込みまくって 録画用のフィルタグラフに流し込むやり方を考えているのですが、 こういうバカっぽいやりかたでなく、もっとエレガントな方法はないもんでしょうか。
513 名前:デフォルトの名無しさん [2007/05/28(月) 23:44:50 ] この辺を使ってビデオ再生やってます。 IGraphBuilder IMediaControl IMediaEventEx IVideoWindow IBasicVideo ビデオ再生自体は問題ないのですが、サウンドデバイスが複数 あった場合に、音声の出力先を指定するにはどうしたら良いで しょうか? 現状、Windowsの標準のサウンドデバイスのみ音が出ます。 よろしくお願い致します。
514 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:38:22 ] DirectShowを使わない
515 名前:デフォルトの名無しさん [2007/05/29(火) 03:07:01 ] ええええええ まじっすかあああ? DirectShowって使えねーなぁ!! ゴミじゃん。M$てめえやる気あんのか?殺すぞ
516 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:00:31 ] >>5 15 真偽の程が全く不明な一文にそこまで熱くなれるのもすげえな
517 名前:473 mailto:sage [2007/05/29(火) 14:57:28 ] かなり亀レスですみません、あまり作る暇なくて 少しずつやっていたんですが、出来ました。 教えていただいた ttp://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=17 ↑ここと、あとはここのサンプルソース↓ ttp://www.greenwood.co.jp/~k-aki/article/directshow_movie/directshow_movie.html を見ながらやって作れました。 (下のURLのサンプルソースは、多分GraphEditで使えるようなDLLとして作るものではなく、 ほぼCBaseRendererを継承してメソッド書いてるだけだったのでわかりやすかったです) 色々ありがとうございました。次は音を取得するのに挑戦しまつ ヽ( `・ω・)ノ
518 名前:デフォルトの名無しさん [2007/06/01(金) 16:33:46 ] test
519 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:49:21 ] DirectShow編集サービスでWMV9のAVIファイル作ろうとしてるんだけど、 エンコードパラメータの設定がうまくできません。 IAMVfwCompressDialogsで出したダイアログだと、変更が反映されないし。 かといってWMV9フィルタの出力ピンからIAMStreamConfigをqueryしてGetFormatするとエラーになります。 AviUtilだとうまくやっているみたいなんですが、やり方が間違ってるんでしょうか・・・
520 名前:デフォルトの名無しさん [2007/06/10(日) 04:56:19 ] __ /:::::::::::::`ヽ_ _ n /::::::::::::::::::::::::::l l L_ ,─' ヽ_ _|::::::::::::::::::::::::/) / _彡__ 三_ ヽ、 l/::::::::::::::::::::::::ヽ / ∠, - 、:::::::\ `丶、 `/::::ノT` ^ 'l´l:::::|´ /(・|・)) |::::::::::::ヽ `ヽW ̄  ̄W /ヽ、_●_/ \::::::::l `1 l ヽ /'´`\_|__三、ヽ::::| l / / | __ | l:::l l |__\( ヽ-'"´) //:/ / , |::::::::::ヽニ二二ニ_∠_'/__ | l /つ 、/(〒) ヽ::::::::::::::::::
521 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:23:28 ] すいませんが教えてください。 この↓を参考にしてMFCで動画再生アプリを作っているのですが、 ttp://www.geekpage.jp/programming/directshow/setnotifywindow.php DirectShowで動画再生しているウインドウが、別のウインドウの陰に隠れてから 手前に表示されたときなどに再描画されません。 再描画するにはどうすればいいですか?
522 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:34:50 ] ビデオウインドの親ウインドでWM_ERASEBKGNDをDefaultWindowProcに渡さない。
523 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:50:53 ] >>522 できました。ありがとうございます
524 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:13:25 ] まさかだが、>>520 は DirectShow にかけたネタなのか?
525 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:36:29 ] どらえもんだとおもいます
526 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 22:43:54 ] 直見せというか、モロダシ?
527 名前:デフォルトの名無しさん [2007/06/12(火) 07:31:58 ] ドラえもんShoWです。 スマンむしゃくしゃしてやった。 今は反省してる
528 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 10:11:14 ] 静ちゃん・・・
529 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 21:39:31 ] 静ちゃんは原作名だよね。 原作も途中からアニメに合わせて「しずかちゃん」になってる。 最近にふにふ動画やようつべを見てるんだけどフレームレート変更フィルタ作れば「速聞」みたいなサービス作れるかな
530 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 21:49:48 ] 最近ようつべてw いつの人間だよ
531 名前:デフォルトの名無しさん [2007/06/14(木) 01:02:27 ] 新しいほうがいいにきまってる ::::::::::::::::::::::::::::: ,.-ヽ :::::::::::::::::::::: ____,;' ,;- i へ、 /;へ\ :::::::::::::::::: ,;;'" i i ・i; // _l::|___l::|_ヽ:ヽ ::::::::::::::: ,;'":;;,,,,,, ;!, `'''i; / ̄ ̄ ̄ ̄\,, |l/−、 −、:::::::::::::::`::| ::::::::::: ,/'" '''',,,,''''--i / __ヽ /::::::| ・|・ | 、::::::::::::::\ ::::::::: ;/ .,,,,,,,,,,,,,,,,, ;i'⌒i; | | |、 /::/ `-●−′ \:::::::::::ヽ ::::::: i;" ___,,,,,,, `i". | ∩─| | ,|/ ── | ── ヽ:::::::::| ::::::: i; ,,;'""" `';,,, "`i; | ∪ `l |. ── | ── .|::::::::| ::::::: | ''''''i ,,,,,,,,,, `'--''''" ヽ __/ _.ノ | ── | ── |:::::_l__ ::::::: |. i'" "; |――― 、". ヽ (__|____ /::::| 新 | ::::::: |; `-、.,;''" /  ̄ ̄ ̄ ̄^ヽ∞=、 \ /:::,/| 品 | :::::::: i; `'-----j | | | |っ:::::) l━━(t)━━━━┥ |___|
532 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 00:31:23 ] Platform SDK インストールしたけど、GraphEdit入ってなかった
533 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 06:58:35 ] >>532 C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\graphedt.exe
534 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 14:14:45 ] カメラって暗くなると露光を変化させるためにフレームレートがころころかわるやん? フレームレートを一定にするフィルタを作った人いる?
535 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 15:54:38 ] >>533 あ、あった。さんきゅー スタートメニューにショートカット作ってよねー
536 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 16:27:00 ] フレームレートがころころ変わる??
537 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:43:24 ] >>536 うん。そのカメラの最低露光付近で以下を調べる 「カメラ」-「レンダラ」 の接続で「レンダラ」のプロパティ「品質」タブ 平均フレーム率が明るさで変化するのがわかるよ
538 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:51:45 ] 操作説明する前に何の設定をしている場面なのかを言ってくれ 我々はエスパーじゃないんでね
539 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 02:49:07 ] 確かにそういうカメラもあったような気がする。 っていうか安物のカメラは結構フレームレートいい加減だったりする
540 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 02:58:43 ] >>537 「そのカメラ」ってどのカメラよ?
541 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 03:47:55 ] つかカメラやらタブやら、話が唐突すぎるし悪文だしで理解不能
542 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 08:57:09 ] プロパティ「品質」タブってグラフエディットでの話か? だとしたらあれはソースそのもののフレームレートではないよ? 俺ならよくわからん糞カメラだけのためのフィルタなど作る気にはなれないな
543 名前:デフォルトの名無しさん [2007/06/17(日) 16:58:49 ] まあ作ってやってもいいが、ここから先はビジネスになるよ
544 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 17:22:39 ] たぶんグラフエディットのことだろうね。 ところでソースそのもののフレームレートじゃないっていうのはどういうこと? レンダラが捨てるって事?
545 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:00:33 ] >>543 まじで?たのむ っI >>544 ソースフィルタが一定間隔に絵を出してこなくなるということだよ レンダラが捨てるわけではないみたい
546 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:32:00 ] >>545 >ソースフィルタが一定間隔に絵を出してこなくなるということだよ >レンダラが捨てるわけではないみたい つまりソースフィルタが実際に出力しているフレームレートだよね。 それが明るさで変動するね、って話だったと思うんだけど。
547 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:12:30 ] >>546 うん。その話です。 私は「フレームレートを一定にするフィルタを作った人はいますか?」 という質問をした者なんですが、 暗いときに光を映す場合、フィルムに光を取り込む時間を長めに 取ってやる必要があります。ちゃんとした画像を取り込むのと シャッタースピードはトレードオフ関係になるのかと思います。 一般的なカメラは上記を自動で行っているので周囲の明るさが変化すると フレームレートがころころ変わっていく・・・と思っています。 これを時系列処理が必要なフィルタに通した場合問題がおきるので、 フレームレートを一定にするフィルタが必要なのでは?と考えています どなたか作成した人はいらっしゃいませんか?
548 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:21:29 ] >>544 メディアタイプとしてののフレームレートってことだとおもう。 レンダラのレートはレンダラが表示できてるレートってことじゃね? デコーダがうんこだったりPCすぺっくがうんこだと激低かと
549 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:26:05 ] カメラって何だ?デジカメ?かむコーダ? 記録するフォーマットは何よ?グラフ構成は?DirectShow経験有り? 出すべき情報が出てない感じ。
550 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:36:52 ] >>549 カメラ・・・USBカメラ(Qcam)を想定していただければいいです 記録フォーマット・・・なし。記録してもしなくてもよし。 グラフ構成・・・ソースフィルタのみ。 ただ、見るために「ソース」-「レンダラ」でお願いします Directshow経験・・・およそ3ヶ月。画像関係の変換フィルタ作成ならわかるくらい >>548 PCスペックが悪くてフレーム落ちすることはこの際無いという前提でお願いします >>538->>548 「ソースフィルタのフレームレートが外光によって変化すること」 に話の争点がいっていますが、できれば 「フレームレートを一定にする変換フィルタ」についての事を話したいです。
551 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:48:10 ] そのカメラが本当に正しい絵を取るために露光時間を調節しているのかどうかは不明だが 本来なら正しいレートでがんばって出すべきだと思う(この辺はMSがどう設計しているのかによるが。) で、そのメーカのソースフィルタがそう実装されてないから後ろでなんとかしましょう、ってことですね? (Qcamって路地クールのやつでしょ。あれはなんかキャプチャした絵を解析しているっぽいから感光待ちじゃないような希ガス) どっちかっていうとそのカメラのソースフィルタの性能の問題、あるいはバグに近いので そもそも、それを正しくするフィルタの需要って無い気がする 自分もそういうフィルタはしらない。 でも一般化して「レートを一定にする中間フィルタ」という意味では需要もあるかもしれないね。
552 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:51:12 ] タイムスタンプチェックしてバッファしておいた前回映像を投げてやれば良いような気もするが グラフ構成ソースフィルタのみ??ダウンストリームが無いのに変換フィルタ?? うーん 何がしたいのかますますわかんねーな… [ソース]-[レンダラ]はダイレクトで繋がるの?メディアタイプはRGB? 本来期待されるべきフレームレートはいくつですか? ソースが吐き出すタイムスタンプ確認してみた?てんでバラバラの間隔だったのかな
553 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 20:24:27 ] >>552 ご回答ありがとうございます。 「タイムスタンプにて・・・の件」 DirectShowのフィルタ同士の動きはイベントドリブンです。 なので、スレッドを立てて別レートで処理するシステムを考えました >「ソースフィルタ」-ここ6fps-「レート安定フィルタ」-ここ15fps-〜 私のコーディング技術の問題でレート安定フィルタ以降のアロケータを6fps以上で 使うとロックしてしまいうまくいきません。 >[ソース]-[レンダラ]はダイレクトで繋がるの? 繋がりますが私の想定する使い方とは若干違います。 カメラのフレームレートを争点にしていたのでこれを出しました。 本来使いたいのは 「ソース」-「時系列処理が必要なフィルタ」-「レンダラ」 です。 >メディアタイプはRGB? なんでもいいです。私の作ったフィルタは「RGB24」「RGB555」「RGB565」「IYUV」 「I420」のいづれかを想定して設計しております。 >本来期待されるべきフレームレートはいくつですか? 固定されていれば何でも。あえて決めるとすれば15fpsでよいです 6fpsのカメラであれば同じ画像を2.5回程度下流ストリームに投げるものでいいです >ソースが吐き出すタイムスタンプ確認してみた?てんでバラバラの間隔だったのかな う〜ん。どのカメラでやったか定かではないのですがQcamかbuffaloのカメラでは バラバラでした。自分でも少々不確定なので試していないということでお願いします
554 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 16:38:27 ] ちょっと前のFPS倍化の話と同じじゃん。 つーか、サンプルのレートばらばらでも動くように作れよ。
555 名前:デフォルトの名無しさん [2007/06/18(月) 22:19:44 ] VMR9でのデインターレースについて調べてるんですが、デインターレース について何も設定しなければ、デフォルトの設定でデインターレースが有効 なってるんでしょうか? テストプログラムで調べてるんですが、VIDEOINFOHEADER2のdwInterlaceFlags が必ず0になってるんで、デインターレースの設定のしようがないんですが・・・
556 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 14:35:18 ] >>555 >VIDEOINFOHEADER2 の dwInterlaceFlags が必ず0になってるんで 「なってるんで」ってのは意味不明だな。0 ならインターレース解除は行われない。 まともな MPEG2 デコーダーでインターレース物のファイルをデコードすれば 適当な値が入るはず。
557 名前:555 mailto:sage [2007/06/19(火) 16:38:40 ] >>556 そのメディアが確実にインターレースであると確認する方法がないんですよ。 (見た目ではインターレース縞は確認できるけど) 今、手元にあるDVD数種からVOBをそのままコピーして拡張子をmpgに変えて テストしてるんですが、InterVideo、Mainconcept、ffdshowどれも0でセット されてますね。InterVideoはデコーダがインターレース解除じているように 見えますけど。
558 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 17:10:25 ] ffmpeg でのビデオの設定で、インターレース解除はオフに(チェックを外す)、 出力で「オーバーレイミキサーを使用する」「ハードウェアインターレース解除」をオンに、と設定してみて。
559 名前:555 mailto:sage [2007/06/19(火) 18:07:20 ] >>558 ありがとうございます。ffdshowでそのような設定にしたところ、 dwInterlaceFlagsに0以外が設定され、VMR9初期状態のデインターレスモード がGUID_NULLから変化しました。何も設定しなくても、インターレース ストリームが繋がればデインターレースが有効になっていることが確認でき ました。「ハードウェアインターレース解除」をオンにするっていうのは レンダラーにインターレースストリームであることを通知するって意味 だったのね。(わかりにくい)
560 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:32:28 ] ハードウエアインターレース解除をONってのは ハードウエアでデインタレースするって意味だが。 あとオーバーレイミキサを使用したらVMR9はつながらないということはない?
561 名前:555 mailto:sage [2007/06/20(水) 00:51:24 ] >>560 VMR9に繋がってますねぇ。まあ、ffdshowのその設定のとこのバルーンヘルプを 見ると、VIDEOINFOHEADER2ヘッダを使用するかどうかって設定らしいので、 VMRと繋がるかどうかは関係ないんじゃないかな。 あと、ハードウエアインターレース解除をONにしないとdwInterlaceFlagsに0 を入れてくるので、VMRにハードウェアデインターレースさせるって意味みたいね。
562 名前:デフォルトの名無しさん [2007/06/20(水) 01:44:55 ] フリーMLの方にも同じ質問してない?あっちにも途中経過報告よろ。
563 名前:555 mailto:sage [2007/06/20(水) 02:45:26 ] >>562 あい、あっちにも報告します。 その後、ひとつ確認ミスがあったので、報告を。 InterVideoは自前でデインターレースしているのではなく、VMR9のデインター レースを有効にしているようです。InterVideoはなぜかデバッグモードでアプリ を起動すると、接続を拒否するようです。(デバッグトレースを見られるのが いやなのかな)それで、InterVideoが繋がってるつもりで、実はMaincncept が繋がっていたという落ちでした(^_^;)
564 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 00:45:35 ] qedit.hとvmr9.hは同居できないかもな。 vmr7.hとvmr9.hは同居できない。なぜなら前者はDirectX7に基づいていて、後者はDirectX9にもとづく。 そしてDirectX7と9は定義の一部が被るので一緒に使えない。 qeditもおそらく同じだろ。 と、さりげなくレスしてみる。
565 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 14:12:31 ] >>564 vmr9.h (+その他もろもろ)がインクルードされた後に、 #define _D3DRMOBJ_H_ #define __D3DRM_H__ #include <Qedit.h> でOK。
566 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:48:41 ] カメラで画像を取り込みながら、画像処理をしたいのですが、 これはDirectShowを使えば可能なのでしょうか? 具体的にいうとカメラから取り込んだ画像は、リアルタイムで画面に描画しながら、 ある間隔でその画像を取得して画像処理を行いたいです。 また、サンプルなどがあれば教えていただきたいです。
567 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:57:54 ] 可能だYO!サンプルはたくさんあるYO!調べろYO!
568 名前:デフォルトの名無しさん [2007/06/25(月) 12:04:22 ] まず、GraphEditで カメラ−画像変換フィルタ−VideoRenderer と繋いであげるといいと思うよ。 画像変換のフィルタは標準では入っていないので、SDK付属のサンプルをビルドしてOSに登録してあげてください。 個人的にはEZrgb24フィルタがお勧め。 VideoRendererはDirectShowフィルタとして標準で入っているので、探してください。
569 名前:デフォルトの名無しさん [2007/06/25(月) 22:59:28 ] フィルタを開発するのに、ある時間の映像を静止画として、メモリに保存しておいて その画像と現在の画像の差分を出力したいのですが、メモリ上にコピーを保存するコードが分からないのですが 似た様な事を昔やった方や、やり方分かる方いらっしゃらないでしょうか?
570 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 23:05:00 ] 単に必要な分だけバッファ確保すればいいんちゃうの?
571 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:53:20 ] EZrgb24 フィルタを改造して映像に文字を表示するフィルタを作りたいんですが, どのような手順を踏めばいいのでしょうか? CEZrgb24::Transform(IMediaSample *pMediaSample) 関数を改造して, 1) CreateDIBSection() で DIB 作成 2) TextOut() で表示 で試したんですが,文字が表示されませんでした…. AM_MEDIA_TYPE* pType = &m_pInput->CurrentMediaType(); VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pType->pbFormat; HDC hDC = GetDC(NULL); HDC hdcMem = CreateCompatibleDC( hDC ); // メモリDC を作成 ReleaseDC( NULL, hDC ); void* lpRGB; HBITMAP hDIB = CreateDIBSection( hdcMem, (BITMAPINFO*)&(pvi->bmiHeader), DIB_RGB_COLORS, &lpRGB, NULL, 0); // hDIB は NULL ではありませんでした. このように pvi->bmiHeader から DIB を作成しているんですが,ここが間違っているんでしょうか?
572 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 04:21:27 ] すいません,どうやら非常に恥ずかしい間違いをしていたようです…. このやり方が標準的なのかは分かりませんが,以下のコードで無事表示できました. int nPicels = pvi->bmiHeader.biHeight*pvi->bmiHeader.biWidth; int nDataSize = nPicels*pvi->bmiHeader.biBitCount/8; void* lpRGB; HBITMAP hDIB = CreateDIBSection( 0, (BITMAPINFO*)&(pvi->bmiHeader), DIB_RGB_COLORS, &lpRGB, NULL, 0); if(hDIB && lpRGB) { memcpy(lpRGB, pData, nDataSize );// DIB array を映像で初期化 HDC hdcMem = CreateCompatibleDC( 0 ); // メモリDC を作成 HBITMAP hOldBMP = (HBITMAP)SelectObject(hdcMem, hDIB); // メモリDC にビットマップを選択 char szText[256] = "Test string"; TextOut( hdcMem, 0, 0, szText, strlen(szText)); SelectObject( hdcMem, hOldBMP); DeleteDC( hdcMem ); // メモリDC 削除 memcpy( pData, lpRGB, nDataSize );//BMP を書き戻す. DeleteObject( hDIB ); }
573 名前:デフォルトの名無しさん [2007/06/26(火) 19:11:56 ] Transform(IMediaSample *pMediaSample) で pMediaSample->GetSize(); と pMediaSample->GetActualDataLength(); を実行して、メディアのデータサイズを取ったら、どちらも0が返ってきたのですが これって、何かの使用ですか?
574 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:27:55 ] DirectShow のサンプルをみてると JIF, LIF マクロがよく使用されてますが, 機能や使用目的はわかるんですが,これは何の略なんですか? どうにも気になるんで御教示下さい.