DirectShowと戦うスレ

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
DirectShowプログラマーのみなさん。
メソッドのデッドロックとか、わけわからん現象多くないすか。
このスレに怒りやテクをぶつけましょう。
どっちの料理Show
Damn it. sucks.
DirectShowって何できるんだっけ。
こんな時間にDirectShowと戦いたくない
6デフォルトの名無しさん:02/07/15 02:06
>4
DirectXの1コンポーネントでVideoやAudioのストリームを操作する
APIっす。
         ∧_∧
         (´Д` ) >>6 お手数かけますた
         /  y/  ヽ
    Σ(m)二フ ⊂[_ノ
        (ノノノ | | | l )
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
DirectXスレじゃ駄目だったのかい?
9デフォルトの名無しさん:02/07/15 02:09
DirectXスレ=Direct3Dスレ
でも今あのスレ沈んじゃってるから、乗っ取ればよかったのに。
>>4 半分は優しさで出来てるはず。
何できる、か。勘違いす魔素。
実際現場では DirectShow は活躍してるの?
14デフォルトの名無しさん:02/07/15 02:14
このAPIやたらデッドロックしてユーザに制御かえさん。
なんとかシテクレ。
15デフォルトの名無しさん:02/07/15 02:16
>>13
WinでTVアプリ書いてるヤツはだいたいハマっとる
MP3もサポートしてるんだ。
VC++.NETでヘッダが足りんぞ。糞が。
18デフォルトの名無しさん:02/07/15 02:30
MediaPlayerなんかもDirectShow使ってるみたい。
オーディオプレーヤソフトやビデオキャプチャ系も使ってる。
GetPositionsでもらった位置にSetPositions()しても、同じところから再生でけんぞ、ちくさう…
SetVolumeの仕様、どうにかしろ
結局Mixer開けないといけないし
21デフォルトの名無しさん:02/07/19 14:40
.NETになると何か変わることあるの?
>>21
VS.NETが売れてMSウハウハ
23デフォルトの名無しさん:02/08/19 23:55
おしえてください
ビデオキャプチャーでカメラの解像度の選択は
どうすればよいのでしょうか?
320X240を選びたいんですが?
24デフォルトの名無しさん:02/09/02 00:33
IEEE1394+DVカメラを使用しています.
GetConnectedMediaTypeで取得した値には,いつもきまった解像度の値しか
入っていないが,これをプログラム中で変更するにはどうしたらよいのでしょうか.
(例えば,720x480と360x240の切り替えなどをしたいです).
DVじゃ720x480固定だよ
26デフォルトの名無しさん:02/09/02 04:48
>>25
そう思っていたのですが,pGrab->GetConnectedMediaType(&amt);とかして
とれるビットマップのヘッダーを見ると360x240になっているのです.
んで,なんで720x480じゃないのだろうかと思ったのです.
27デフォルトの名無しさん:02/09/10 02:08
>>26
graphの中にIIPDVDecインターフェイスを持っているフィルターがあるはず
だから、そいつをなんとかとりだせば(EnumFiltersとか)、あとは
put_IPDisplayを適当なDVDECODERRESOLUTION_*で呼べばOK.
28デフォルトの名無しさん:02/09/10 08:27
グラフエディットではどうやっても繋げないフィルタってあるじゃない?
「H.261Codec」とか。あれ、どうやったら使えるの?
ビデオのサンプルグラバを用いてスクリーンショットを撮ろうとしているのですが、
Mpeg2ストリームは、Demuxer-Decoder-オーバーレイミキサ-レンダラとなんだか
変なYVフォーマットでつながっています。

サンプルグラバはRGB24で書いているので、同じビデオなのにそこに割り込ませてもらえません。
これはどう解決すればよいのでしょうか?
30デフォルトの名無しさん:02/09/27 02:50
age
サンプルのGalgleとか、Win9xだとDllRegisterに失敗するのですが、
これは未対応ということでしょうか?

dx8.1がインストールされていることは確認しています。
32デフォルトの名無しさん:02/10/22 16:16
複数の動画ストリームを1本にまとめるフィルタない?
音声+動画をまとめるのならあるけどさ。
33デフォルトの名無しさん:02/10/25 12:22
>>32
ストリームをまとめるフィルタは「〜マルチプレクサ」とかいう名前がついてるのが多いので
ヘルプをじっくり探してみてください。

ただ・・・動画をまとめるフィルタなんて無いと思いますよ。
どう纏めたいのかわからないし。
DMO Audio Effectsというフィルタカテゴリに、コーラスやリバーブなどのフィルタが標準で入っていますが、

http://www.microsoft.com/japan/developer/library/jpdx8_c/ds/appdev/howto_enum.htm

ここの下にあるフィルタマッパを利用して列挙してもそれらのフィルタがでてきてくれません。
たとえば、
GUID arrayInTypes[2];
arrayInTypes[0] = MEDIATYPE_Video;
arrayInTypes[1] = GUID_NULL;

hr = pMapper->EnumMatchingFilters(
    &pEnum,
    0,             // 予約済み
    FALSE,           // 完全一致を使用?
    MERIT_DO_NOT_USE+1,    // 最小のメリット
    TRUE,            // 1 つ以上の入力ピン?
    1,             // 入力のメジャー タイプ/サブタイプの対の数
    arrayInTypes,       // 入力のメジャー タイプ/サブタイプの対の配列
    NULL,            // 入力メディア
    NULL,            // 入力ピンのカテゴリ
    FALSE,           // レンダラでなければならないか?
    TRUE,            // 1 つ以上の出力ピン?
    0,             // 出力のメジャー タイプ/サブタイプの対の数
    NULL,            // 出力のメジャー タイプ/サブタイプの対の配列
    NULL,            // 出力メディア
    NULL);            // 出力ピンのカテゴリ

こんな感じで列挙しているのですが、だめみたいです。解決法はないでしょうか?
>>34
>DMO Audio Effectsというフィルタカテゴリに、
>arrayInTypes[0] = MEDIATYPE_Video;
何かおかしいと思わない?
3634:02/11/01 20:06
うあーごめんなさい。ちなみに、MEDIATYPE_Audioにしてもだめでした。
なんとDMOEnumというのが別で用意されていて、そちらで列挙しなさいと
いうことのようです。

・・・統一的に扱えなくてなんかすごくイヤですけど。
37デフォルトの名無しさん:02/11/04 23:55
DirectSound Audio Renderer
のを継承したいのですが何とかなら無いでしょうか?
age
漏れもDirectShowを使いたいのですが、
どこかに良いサンプルや説明はありますか?
SDKに。
SDKは、VC++のならあるね。
VBかC#のはないかなぁ
42デフォルトの名無しさん:02/11/09 23:44
VBでしたら、
http://www2.plala.or.jp/k-world/vbasic/vbasic008.html
がずばりかと。
はっきり言って、使い物にならん。
バグだらけ。MSにレポートしても「直る予定はありません」アフォかってーの!
実装が足りていない所も多いし、オーバヘッドも大きい。サンプルもグラフビルダもエラー&リーク起きまくり。
44デフォルトの名無しさん:02/11/14 05:22
DirectShow使えば簡単にMPEGエンコーダとか作れるものなの?
codecあればな。
ふぬああ位なら誰でも作れるんじゃない?
使い物にならないと言われつつも、大抵のソフトが利用してるよね。
47デフォルトの名無しさん:02/11/17 08:28
       -―-          |
     〃      ヽ     .|
     i   ノノノ))) ))    | Direct Showが好きなんですか?
.    i i ( 'l_] l]〈リノ    .<
     ヽヽ >  />      \_____
     Y/ヽ!ェl〉        /ヽ/ヽ
      !! l卯 l         / // /
      i ll8| !       / // /
.       l l「| l       , ´-‐ ‐- ヽ
        /!_」l|_j、    {   l ,,  } ぅん
.      / /゙´l"ヽ >   ゝ. ‐  ノ
     'ーr‐ r r ´       l !
.       l  l. |           | |
.       |  ! |           l. |

       -―-
     〃      ヽ
     i   ノノノ))) ))   / ̄ ̄ ̄ ̄ ̄
.    i i ( 'l_] l]〈リノ < ふぬああのソースがお手本ですか?
     ヽヽ > n/>    \_____
     Y/ヽ!ェl〉        /ヽ/ヽ
      !! l卯 l         / // /
      i ll8| !       / // /
.       l l「| l       , ´-‐ ‐- ヽ
        /!_」l|_j、    {   l   U } ……
.      / /゙´l"ヽ >   ゝ. っ  ノ
     'ーr‐ r r ´     ⊂ニl !
.       l  l. |        | |
.       |  ! |        l. |
48デフォルトの名無しさん:02/11/17 08:58
>>46
使ってねーよ。なにに使われてるってんだ?
>>48
ふぬああ
最近のプレイヤーはたいがいDirectShowだろ。
51デフォルトの名無しさん:02/11/18 02:17
ActiveMovieって最近聞かないなぁ…。
>>51
統合されたんじゃないの?Video for Windowsとかも。
53デフォルトの名無しさん:02/11/18 21:14
ActiveMovieってもうAVI2になってたっけ?
そりゃそうだ。ActiveMovie2の次がDirectShow5だもん。
知ってて言ってるんでしょ?
VFWとは「統合」じゃないでしょう。

>>48
いやー。そこらのTVチューナーカードにくっついてるしょぼい
アプリとかはそうじゃないのかなあ。
しょぼくなくても使ってる例はあるよ。
ただ堅牢なアプリほど自前でやってるみたいだけど。
56デフォルトの名無しさん:02/11/20 02:02
>>55
…DirectShow使わずに自前でAVI2フォーマットのファイルを直書きって言ってる?
>>56
出来ないことはないがね。
58デフォルトの名無しさん:02/11/21 23:56
堅牢なAPはそんな無茶をやってるのか…。
59デフォルトの名無しさん:02/11/22 00:02
>>58
技術があればDirectShowのしょぼい機能に我慢する必要はないのでね。
まっそんなことやっているところはほとんど無いけどね。
なんでDirectShowをAVIファイルの読み書きの機能に限定して話してるんだ?
>>59
技術なんか必要ないけどね

必要なのは労働力だけだ
63デフォルトの名無しさん:02/11/23 01:43
59はCOMが未だに判らないに一票。
DirectShowに限らず、DirectXコンポーネントは環境依存の問題が多いから
それを嫌って自前で実装、というのは割とある話。
AVI入出力程度はスクラッチだろうと誰でも書けるし。
aviの入出力のためだけにDirectShowを利用する奴なんて居ない
aviの入出力だけですべてが片づく事の方が希
66デフォルトの名無しさん:02/11/23 23:37
AVI2.0の方は難しそうだな>自前
69名無しさん:03/01/05 02:10
          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
Λ_Λ  | 君さぁ こんなスレッド立てるから          |
( ´∀`)< 厨房って言われちゃうんだよ             |
( ΛΛ つ >―――――――――――――――――――‐<
 ( ゚Д゚) < おまえのことを必要としてる奴なんて         |
 /つつ  | いないんだからさっさと回線切って首吊れ     |
       \____________________/

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)

(-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ… (-_-) ハヤクシンデネ…
(∩∩) (∩∩) (∩∩)
70IP記録実験:03/01/08 22:01
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
ひろゆきは架空の人物ですよ。
>>540
逝き遅れの妹発見
一番いらない板:ここ
tes
ここはひどいインターネットですね
76デフォルトの名無しさん:03/01/09 14:59
>>358
できると思うよ。表面上はIP出ないから。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
IP記録大賛成ですね。
素朴な疑問ですが、どうしてこの板だけスレストされるのですか?
>>112
そんなことはいちいち判断してらんないので、「もめごとは当事者同士で」
という結論になったんじゃないかと、、
>>112
そんなことはいちいち判断してらんないので、「もめごとは当事者同士で」
という結論になったんじゃないかと、、
(^_^;)?
なんか昔のPTAを思い出す
むかしはトランプは子供の勉強に支障をきたすものとして悪者扱いされてたんだぞ
TVゲーム、バイク、etc
なんでもかんでも禁止しまくって、それで正義感ぶってる人間ほど悪い人間はいない

>>135
博之は寝た。
じゃ俺もキネソ書き子
そりゃ最初はよほどの大事でもない限りIPを渡すことはしないだろう、
でも物事はだんだんエスカレートしていく物、そのうち密告とかも「誹謗中傷」として
IPを渡すようになる、、、
明けましておめでとうございます。
ボランティアの皆様に於かれましては、本年も変わらず
健やかに活動を続けていけるよう、お祈り申します。

2003年 元旦
記念すべき瞬間ですね。私は将来的には2chにとってプラスになると思ってます。
>>660
乗ってる板を見れ。
ぶっちゃけ隠れフシアナサンになったんだろ??
初めてのfusianasan
まぁまぁ、これでも見てもちつけや。
http://www.1ch.tv/thread.php?th=2679&ar=6&ca=8
そそ、で本当にヤバい話なんてどれくらいあるかといえば(略
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
いくら外国人が外国にサーバ作っても非合法組織は国境を越えられるよ
言いたい放題はブシュだけ
良くわかんないけど。
WINNYなんて、倒産・違法化したら結局存在できない訳でしょ。
法律のアナは埋める為にある訳で。

時間稼ぎにはなるけれど
結局社会正義じゃない事は立法府がまともなら消えるのでは。
一回政権交代。

野党2党でとってね>首
二回以内に一度だけ取れたら日本は変わる。

 あとは解散していいさ
その人たち。
ネタにマジレス北國新聞
犯行予告スレをたてたと思われるやつが追い込まれて
何かしでかしそうです。放っておいていいのでしょうか?

125 名前:ありえない人  ◆y.GuoEaXhM 投稿日:03/01/11 11:31 ID:94ui+dnh
犯行予告できなきゃ2ちゃんに来る意味は無い。
俺は追いこまれるだけ追いこまれう自殺も本気で考えた。
でも本当に死者がでればワイルド吉田にも責任があったといっておく。
127 名前:ありえない人  ◆y.GuoEaXhM 投稿日:03/01/11 11:34 ID:94ui+dnh
俺本気で怒ってるよ。
もう俺終わりなんだな、って思うと。
こんな理不尽なことはねえな、っていってもみんなけらけら笑いやがる。
ここまでやられてもいままで殺しをやらなかった俺がおかしいんだろう。
128 名前:ありえない人  ◆y.GuoEaXhM 投稿日:03/01/11 11:35 ID:94ui+dnh
さよなら2ちゃんねる。
地獄行きの列車の切符ならもう手に入れてあるよ。
http://ex.2ch.net/test/read.cgi/entrance/1042189622/125-137
保守
2002年2ちゃんねるアニメランキング1位のアニメに・・・・

モナーが出演決定!!!!!!!!!!!!!!!!!!!!!

<<放送時間>>
1/12
大阪 テレビ大阪 (日)9:30〜10:00
東京 テレビ東京 (日)9:30〜10:00
名古屋 テレビ愛知 (日)9:30〜10:00
福岡 TVQ九州放送 (日)9:30〜10:00
札幌 テレビ北海道 (日)9:30〜10:00
岡山・高松 テレビせとうち (日)9:30〜10:00 
tmpとpinkはヤバイんでないのか?
逮捕間近ですなあ
つい数年前まではBBSはどこでもそれが当然だった。
NiftyだってVANだってそうだった。
NIftyは今でもそうだし。

2chのほうが突然変異みたいなもんでしょう。
2ch型のBBSが流行ったおかげで
従来型のIDログイン制BBSがどこも寂れてしまったのが不幸なんだ。

2chはこういうところなんだから
こういう所だと割り切って利用するほかない。

そしてIDログイン制のきちんとしたBBSと
2chのような誰でも何の手続きもなしでいきなり書き込みできるBBSとで
棲み分けするのが望ましい。
2002年2ちゃんねるアニメランキング1位のアニメに・・・・

モナーが出演決定!!!!!!!!!!!!!!!!!!!!!

<<放送時間>>
1/12
大阪 テレビ大阪 (日)9:30〜10:00
東京 テレビ東京 (日)9:30〜10:00
名古屋 テレビ愛知 (日)9:30〜10:00
福岡 TVQ九州放送 (日)9:30〜10:00
札幌 テレビ北海道 (日)9:30〜10:00
岡山・高松 テレビせとうち (日)9:30〜10:00 
>発信者の特定は第三者機関からの要請があってから行えば十分な筈ですが?
(先日までは)そのような環境ではなかったワケですよね。
なるほどサンクス
106山崎渉:03/01/13 18:58
(^^)
5nd
108山崎渉:03/01/15 18:12
(^^)
ここは、DirectShowのスレッドなのでしょうか?
110デフォルトの名無しさん:03/01/17 00:46
そうですが、スクリプト厨が全スレ絨毯爆撃してます。
自治スレのリンクを貼れば早い
http://pc3.2ch.net/test/read.cgi/tech/1029122103/l50
112山崎渉:03/01/23 20:13
(^^)
113デフォルトの名無しさん:03/02/01 16:35
DirectShowフィルターで色味を調節するフィルターって在りますか?
在ったら教えてほしいんですが…お願いします。
114デフォルトの名無しさん:03/02/01 23:03
DTV板にこの辺のフィルター関連の鉄人がいっぱいいたぞ。
Avisynthすれとかみてみたら。海外のリンクもあるし,色んなものが
オープンソースで開発されているようだし。
115デフォルトの名無しさん:03/02/01 23:44
>>114
ありがとう。向こうで聞いてみます。
マルチポストになっちゃうけど(汗

AvisynthってDirectShowフィルターなんですか?
116378:03/02/08 16:17
DShowでレンダラのオーナーウインドにCStatic(ピクチャ)を指定していますが
どうもレンダラが表示した後にCStaticが黒く上書きしたりしているらしくうまく表示されません。
どなたかアドバイスをお願いします〜よろ。
117378:03/02/08 18:53
もしかしたらグラフを一度もrunさせてないからデータがレンダラに届いていない?
位置を0にしてIVideoWindow::StopWhenReady()を呼び出してるんだけど
1フレーム目が表示されたりされなかったりする。。
なんでだろう??
自己レス
filter graphを生成後にIMediaControl::Pause()で最初のフレームを表示できました。
ないと思うが
ゲ製作みたいにはならないでくれと願う。>荒らし
Directx9をインストールしたらGrapheditで作成したgrfファイルのRenderfileが
出来なくなってしまいました、何か設定があるのですか。
121120:03/02/16 07:02
自己解決しました
IPersistStream インターフェイスを使ってできました、DX9ヘルプにはコード付で説明がありました。
122デフォルトの名無しさん:03/02/18 03:04
だれか一緒に戦ってください。
以下のようなメッセージが出ます。何が悪いの?

KillTimer(hwnd,(UINT_PTR) hwnd)
At line 3494 of e:\dx8_2\multimedia\dshow\filters\image\video\dvideo.cpp
Continue? (Cancel to debug)
123デフォルトの名無しさん:03/02/20 22:22
集え!答えよ!!
戦士は居ないのか??
>122
わかんないけどさ。普通はそこでCancelボタンを
押してデバッグを始めるもんじゃないの?
"Cancel to debug"ってせっかく書いてあるじゃん。
問題が起きたソースコードの位置まで書いてある。

だいたい何をしてたらそうなったのか私にはさっぱり分からないよ。
だって、あなたのPCを千里眼で見てるわけじゃないんだから。
動画の再生?DVD?フィルタグラフをいじった???
ハァ〜・・
ダメダコリャ。このスレ要らない。sage
126デフォルトの名無しさん:03/02/22 12:51
ま、122=123=125はDirectShowと戦う前に、まずはHelloWorldを倒してみなさいってこった。
C#でDirectShowって使えんの??
codecを作る時の種類には新しい物からDMO,DirectShow Filter,VCMの
3つがあるらしい事と、DirectShowFilterよりDMOの方が簡単らしい事は判ったのですが、
DMOだとDX8以前のアプリケーションとの互換性が判りません。
129デフォルトの名無しさん:03/03/16 12:24
とりあえず、Delphi+DSPackの組み合わせは、結構イイ!
再生だけならTFilterGraphを追加して、TFilterGraph.RenderFileしたあと
TFilterGraph.Playするだけ。
AC-3→WAV変換ツールも、TFilterGraphとTFilter*2を追加して、適当に
プロパティの設定をしたら、あとは(TFilterGraph as IGraphBuilder).connect
してTFilterGraph.Playするだけ。

俺の知識では複雑な事はできないけど、単純な事ならCOMとか知らなく
ても使えるのがイイ!
C++Builder相談室Part5の15で相談したものですが、Delphiでは無いのですが、
DSPack2.3は、参考になりました。CodeWarriorもC++Builderも使いにくいと
ころがありまして大変です。VC++から変換すれば、両方使いやすくなるんです
が、単体では、やはり、むずかしいですよね。やはり、DirectShowとかは、
VC++なのでしょうか。129さんどうもありがとう。参考になりました。
糞スレあげるな。
編集サービス使ってる人いまつか?
あれって、トラックやグループは、追加は出来るのに、
削除は出来ないくさいのは気のせい?
133山崎渉:03/04/17 15:54
(^^)
134山崎渉:03/04/20 04:11
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
135デフォルトの名無しさん:03/04/21 00:59
DirectShow で、
Wave音声ミキシング出来るフィルタってあります?
URLかキーワードでもいただけるとありがたい。。。
136::03/04/21 18:17
☆^〜^★ 50音順で探せて楽して得する
http://sagatoku.fc2web.com/
   あなたの探し物きっとみつかるよ☆^〜^★
137デフォルトの名無しさん:03/04/22 02:38
さんきゅ。
139デフォルトの名無しさん:03/04/25 16:20
Pピクチャの情報欲しいんだけど、DirectShowで取得できるの?
できなければ何かライブラリあったら教えて。
140山崎渉:03/05/28 13:11
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
DirectShowって何できるんだっけ。
142デフォルトの名無しさん:03/06/18 16:34
DVカメラから取り込んだ720×480のビデオファイルをVMR9で読み込むと
640×480で認識するんだがこれはバグだよね?
Windows Media Player 9 でも640×480で初期表示する。
まだこのスレに書き込むアフォがいるな。
このスレは書込み禁止だ。
144デフォルトの名無しさん:03/06/21 11:48
記念カキコ
>>143
なんで?
>143
馬鹿は放置しなさいって。
147デフォルトの名無しさん:03/06/24 02:40
>>142
そりゃ、ピクセルの形を修正して表示してくれてるありがたい機能だよ。
むしろ感謝すべき。
148デフォルトの名無しさん:03/07/03 23:28
720で表示されたら、横長になって困る。
149山崎 渉:03/07/15 10:13

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
RealMedia Source
https://sourceforge.net/projects/guliverkli/

このフィルタってどうやって使うのでしょうか?
GraphEditでローカルファイル(オーディオ)を入力する分には再生できたのですが
URLを指定する方法がわかりません.

ご教示願います.


Real Alternative も必要と言う噂です.
ttp://fileforum.betanews.com/detail.php3?fid=1054136293
151デフォルトの名無しさん:03/07/24 11:44
https://sourceforge.net/projects/guliverkli/
のShoutcastStream Sourceはやる気があるのでしょうか?

1.
Regsvr32 shoutcastsource.ax
を実行すると正しく登録されず$WINDIR$\system32\regsrv32.exeに
関連付けられて正しくCreateできない

2.
1.を修正しGUIDを指定し正しく指定しFilterGraphに追加しても,
どんなURLをLoadしても「http://localhost:8000/」に書き換えて開こうとする.
(このとき,それが存在しないためにLoadに失敗する)

...ということは,「http://localhost:8000/」に目的のURLを
リダイレクトしろということかしら?(えらくめんどいなぁ

ちなみに「localhost」の部分を書き換えたら正常にグラフが作成され
音が鳴ったぞイ
152山崎 渉:03/08/02 02:23
(^^)
153デフォルトの名無しさん:03/08/13 17:27
AVI/MPG/MPG2等不定のソースフィルタを、指定のビデオ・サウンド
レンダラにそれぞれ繋ぐにはどうしたら宜しいのでしょうか。

ソースフィルタから直接ビデオ・サウンドに繋ぐと、先に繋いだ方は
スプリッタ等が補完されてとりあえず繋がりますが、後になった方は、
ソースフィルタからは直接繋げなくなりますよね・・・

ソースがAVI等に確定してるならば先にスプリッタと繋ぎ、スプリッタから
それぞれに繋げられるのですが、ソース種別不定だとどうやって繋げば
良いのか検討がつきません。
VC++使いです。
Direct Show使えばavi, mpgって簡単に再生できるものなの?
155デフォルトの名無しさん:03/08/13 18:39
再生するだけなら一行で再生出来るよ。
156山崎 渉:03/08/15 15:32
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
157デフォルトの名無しさん:03/08/17 08:00
DirectXで作ったCGをDirectShowのサンプルにあった
RealtimeのCapture(AMCAPとか)の上に重ねたいんですけど、
どうやってやるモンなの?
158デフォルトの名無しさん:03/08/18 13:10
メディアプレイヤーを作ってみようかァとおもいつつ、
プログラミングなんてやったことのない厨房が作るには、
DirectShowなんかを使ったらイイと閃いたのでつが、
開発言語は何がよさげでしょう???まにーは使いたくないでつw
Ruby for DX
160158:03/08/18 22:01
>159
Ruby for DXってどういうものですか?
>>158
サンプルをコンパイルするのにも一苦労すると思われ。
プログラミング知識ゼロじゃなあ。まじ、DirectShow難しいよ。
162デフォルトの名無しさん:03/08/23 14:22
柔軟性を求め過ぎて、却って使いにくくなってるな。
研究者のオナニー
164デフォルトの名無しさん:03/09/02 00:16
DirectShowあほあほage
165デフォルトの名無しさん:03/09/03 01:28
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&m_pigb);

CComQIPtr <IBasicVideo2, &IID_IBasicVideo2> pibv2(m_pigb);
long lAX=0,lAY=0;
pibv2->GetPreferredAspectRatio(&lAX, &lAY);

これで正しい値が帰ってきてくれればいいんですが、
0,0が帰ってきたり単なる縦横のピクセル数が帰ってきたりする、
ってのはこちらがなにか悪いことでもしたんでしょうか?
166デフォルトの名無しさん:03/09/03 01:33
167デフォルトの名無しさん:03/09/03 12:21
ソースがVideoInfo2に対応してなければ0,0返ってくるんじゃないの。
AVIは全て0,0でしょ。

ピクセル数らしき数値は、そう言う値をアスペクト比に持ってるからで
問題無い。 352x240のmpgなんて大抵 704000, 540000なんて
値返ってくるよ。
アスペクト比より、フレームレート類を一切返さない&バッファ長が
いい加減なDivXをどうにかしてくれ。
DirectShow以外で動画再生できるライブラリってない?
vfw
DirectShowってほんと良くない。
>>169
MCI
DirectShowはあり地獄。
むつかしい、とかやさしいとか、そんな話はどうでもいい。
踏み込んだら負け。
なんでよ?
素人俺にはわからんな。
資料がすくないのがつらい。
オーディオのプラグインエフェクトを使いたいんですが、フィルタのプロパティを表示させるとき、フィルタによってうまくいったり落ちたりとなるんですが経験ある人いますか?
OleCreatePropertyFrameを実行することです。よそのアプリでも落ちるフィルタは落ちてるんで単純ミスではないと考えてるんですが…。
いろんなサンプルコードとか見て試したんですが同じ結果ですし。でもなぜかグラフエディットではできてるんですよ。
土下座するので助けてください。
177:03/10/07 22:52
10月7日 晴れ。

今日も救援なし。いよいよ戦況悪化し危険な状況。
孤立無援。四面楚歌。DirectShow恐るべし。
178デフォルトの名無しさん:03/10/09 02:28
>>177
DMOのこと?それともDirectX Plug-Inのこと?
まぁ、どっちにしろ俺には答えられんが。
DirectShowであまりに停滞するならあオーディオエフェクトはWinamp DSP Plug-inとかVST でやるという手もある。
>>176
土下座するので見逃してください
180デフォルトの名無しさん:03/10/10 12:36
これ→ttp://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/
を,Win2000+VC6+DirectXで実行したのですが,PCによって
解像度が変わるのですが・・・
キャプチャカードはどちらもカノープスのDVTX200です.
カメラはS端子から入力しています.
(1)Pen4 2.2GHz+メモリ512MB+DirectX9.0なら(DirectX8.0でも)720*480
(2)Pen2 450MHz+メモリ384MB+DirectX8.0なら360*240
(1)の方は,はじめは9.0で実行したのですが,9.0を削除して8.0にしても
同じでした.
プログラムの都合上,360*240(できれば320*240)で表示したいのですが,
変化するのは何が原因でしょうか・・・
ソース斜め読みしたが、単にサイズ指定してないだけじゃないの。
前に他のソフトでキャプチャした時のサイズそのままなだけだと思う。
DVD再生時のフィルタ弄りがうまくできたーーーーーーーー
1週間悩んだ。フリーズしまくった、マンセー
超うれしい、サイコウサイコウ0アヒャハyハヤ(´・∀・`)グヘ
183180:03/10/10 15:38
>181
確かにサイズ指定してないです.
どちらの場合も,実行前にカノープスのDVT Controllerを実行してプレビューを
開いている(実行しないと表示できない)ので,同じになるはずなんですが・・・
#このプレビューは360*240になっています.

プログラムでサイズ指定するとしたら,どんな関数になるんでしょうか?
MSDNで探してみたのですが,それっぽいのがみつかりませんですた・・・
184デフォルトの名無しさん:03/10/10 16:19
>183
SetMediaFormatだかTypeだったか、それっぽい名前
違った SetFoemat
>同じになるはずなんですが・・・

そんなこたあない。
指定しなかったらほぼ全てのカード・デバイスで単にドライバのデフォルト値の
サイズ、色フォーマット、フレームレートになるよ。
188デフォルトの名無しさん:03/10/30 14:06
DirectShowなど、いままで触ったことがなかったのだけれど、
パーサフィルターを作らねばならなくなりますた。
COMも触ったことなかった漏れには、DirectShowの壁は高いでつ。

変換フィルタに関しては、概ねわかってきたつもりだけど、パーサフィルタの
PULLモードでの動作などに関しては、資料が少なくてまぢで泣きそう(´・ω・`)

全言語でググっても、濃い情報の載ったページが見つからなかったので、
CPullPinのソース解析してまつが、なにか参考になるサイトなどあれば
教えてください。
189188:03/10/30 14:07
スマソ。sage忘れた(汗
Video Mixing Renderer 9をレンダラーとして使って
輝度等を変更したいと思っています.
プログラムでの変更は可能だと思うのですが,
プロパティページって無いのでしょうか?
191180:03/11/26 19:31
>>180です.
IAMStreamConfig::SetFormatを試してみたのですが,
HRESULT hr;
hr = pAMStreamConfig->SetFormat(amt);
として実行すると,
hr = E_FAIL
が帰ってきます・・・
http://www.microsoft.com/japan/msdn/library/ja/directx9_c/directx/htm/iamstreamconfigsetformat.asp
にはE_FAILなんて無いんですけど(鬱

以下関係ありそうなソースです.
 IAMStreamConfig *pAMStreamConfig = NULL;
 AM_MEDIA_TYPE *amt = NULL;
 amt = (AM_MEDIA_TYPE *)malloc(sizeof(AM_MEDIA_TYPE));
 VIDEOINFOHEADER vih;
 //IAMStreamConfig に対して出力ピンを問い合わせる
 //vihの指定(vih.rcResource, vih.rcTarget)
 //amtの指定
 pCapture->FindInterface();
192180:03/11/26 19:34
途中で送信してしまった・・・すみません
pCapture->FindInterface();のあと,SetFormatをやってみると,E_FAILになります.
その後FetFormatを実行するとS_OKが帰ってきます.
で,
 VIDEOINFOHEADER *vih2 = (VIDEOINFOHEADER *)amt->pbFormat;
 printf("bottom = %d\n", vih2->rcTarget.bottom);
とかやってみると,SetFormatで指定したのとは違うのが表示されます・・・
193180:03/11/26 19:35
また間違い.
FetFormat→GetFormatでした
DirectX使いって、まさにM$の奴隷だな。カワイソウ....
>>191
ピンを接続する前に SetFormat してますか?
Capture Pin と Preview Pin があるデバイスの場合、両者で 640x480 とかには
できない、とかそういう制限があることがあるのですが、その辺はOKですか?

AM_MEDIA_TYPE の中身は全て適切にセットしましたか?
(簡便には GetFormat したものを変更するのがラク)。
人間 := 宇宙人の奴隷
ビルゲイツ := 人間
M$ := ビルゲイツ
DirectX使い := M$の奴隷

よって、
DirectX使いって、まさに宇宙人の奴隷の奴隷だな。カワイソウ...
197194:03/11/27 21:53
DirectShowよりVideoForWindowsの方が簡単で使いやすかった。
あのまま進化して欲しかったのに、DirectShowになったとたん挫折した。
VideoForWindowsってドライバの出来によって
プレビューのFPSが実力通り出ないことがあるのでそこを直して欲しいのに
過去の物となった今ではそれも望めない...
COM全然分からないYO。ショボーン
198デフォルトの名無しさん:03/11/27 22:57
>>197
禿同。
AVIファイル書き出したいだけなのに、Windowsプログラミングの奥義を窮めねばならんとは。
2G以上のサイズに対応したVFWAPI、それだけで良かったのにね。
馬鹿過ぎ
201デフォルトの名無しさん:03/12/03 11:58
DirectShowでのオーディオ再生でタイムストレッチ(音程を変えずに再生速度を変更)を
やるにはどうすればいいんだろう。
自分でDMOなりなんなりで書く
負けました
204デフォルトの名無しさん:03/12/06 17:39
こんにちは、
DirectXのことは全くわからないのですが
aviから15秒毎の映像をjpgとして書き出す単純な
ソフトを作りたいと思っています。
正直DirectX(この場合DirectShow)を扱うにあたって
どこから触れていけばいいのか皆目検討もつきません。
簡単で大筋の流れでいいのでプログラムの流れを教えてもらえないでしょうか?
よろしくお願いします。
氏んでくれ
ぐぐれ
208デフォルトの名無しさん:03/12/13 11:08
>>180さんのところのプログラムを使って、
USBカメラからの動画をキャプチャしたいと思っております。

USB2.0カメラを、USB1.1のポートにさしても大丈夫ですか?
「遅くなるけど動くよ」という答えを期待しているのですが…
訳あって動作環境がUSB2.0、開発環境がUSB1.1なのです。
よろしくお願いします。
209デフォルトの名無しさん:03/12/13 14:32
>>208
「遅くなるけど動くよ」
210208:03/12/13 15:09
申し訳ありません、さらに質問です。
搭載チップセットによってUSB2.0が
非対応ということがあるようなのですが、
Abit SA7の
SiS 645DXで大丈夫でしょうか?
むしろ試して報告しる。
DirectShowとは一切無関係。ドライバ次第。氏ね
ってのは無し?
>>208
大丈夫です。
2.0ボードくらい買ってくればいいのに
215デフォルトの名無しさん:03/12/21 19:01
すみません、教えてください。
GetCurrentBufferでメモリに取ってきたデータを加工したあと、
AVIファイルとして出力したいのですが、どうやって書けばいいのでしょうか?
216デフォルトの名無しさん:03/12/22 00:35
TVキャプチャカードから入力するコンポジットビデオをPC画面上の
自アプリウィンドウに描画するアプリケーションを作りたい。
DirectShowを使えば実現できるか。

習得とプログラミングにかかる時間はできる限り省きたい。
そうなるとDirectShow以外にもっと簡易な手段はあるか。

ActiveXは理解している。
キャプチャカードは使えるものをこれから選ぶが、無難なのはMTV系か。
OSはXP Pro SP1になると思われ。
> 習得とプログラミングにかかる時間はできる限り省きたい。

フーン(AA略)
218デフォルトの名無しさん:03/12/22 01:38
>>216
流れてくるたびにフレーム内のピクセル情報をメモリ上にグラブしてやればよいという意味なら加納。
ただし別の処理しながら、DVサイズで毎秒30フレーム取れるとは思うなよ。
219デフォルトの名無しさん:03/12/22 03:08
>>218
了解。もう少し突っ込んで調べてみる。
220デフォルトの名無しさん:03/12/23 18:28
age
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdx8_c/ds/appdev/Using_SampleGrab.asp

を真似ようと思ったんすけど、VS.net2003 にも DirectX8 SDK にも
combase.h が見つかりませんでしたし、
CUnknown で GREP しても引っかかりませんですた。

どなたか、道標をおながいしまつ・・・
(SDK root)\Samples\Multimedia\DirectShow\BaseClasses にあるぞ
223221:03/12/26 00:17
>>222さん
御教授、有難う御座いました。

見てみたら、ちゃんとありますた。
サンプルの方にあるとは思わなかったっす・・・
224デフォルトの名無しさん:03/12/29 04:53
研究してるものなんだけど、DSで取り込んだ動画を加工して、その実験データを
動画として出力したい。ビットマップファイルの集合をAVIとして保存するにはどうしたらいい?
あるいはビットマップファイルとして書き出して、アドビのエフェクトとか使って動画を作成する
べきなのか・・・
漏れは出力はVFWで逃げた。藁

入力はDirectShowじゃなきゃ出来ん事が多々あるからしょうがないが、
単純な出力はやぱりVFWが楽
226デフォルトの名無しさん:03/12/29 06:53
>>224
DSのサンプルのContrastとかいうフィルタがあったと思う。
それを参考にしてビットマップ加工用フィルタをつくるとよい。

キャプチャ - 画像加工 - MUX - File Writer とつなげばよいと思う。
227デフォルトの名無しさん:03/12/30 17:07
結論:DSは、失敗。
228デフォルトの名無しさん:04/01/04 14:46
あけましておめでd

>>225、226
ありがd!!早速調べてみます。
っていうか、なんでマルチメディア系のライブラリ本ってほとんど無いんだYO!
まともなプログラマ以外コード書けねえじゃねえか。こっちは画像取り込んで
加工でして出力できればそれでいいのに・・・。
229デフォルトの名無しさん:04/01/04 14:48
↑あ、愚痴はM$に対してです
230デフォルトの名無しさん:04/01/04 23:41
Microsoftは充分に情報公開してると思うが…。アポーなんて酷いものだよ。
231デフォルトの名無しさん:04/01/07 22:13
今ここのプログラムを使ってカメラからキャプチャしています。
ttp://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/cap26.cpp

解像度を変えたいのですが、真ん中あたりの
pGrab -> SetMediaType( &amt );
の上に
amt.lSampleSize = 320*240*3;
と追加してみても、変更されません。
どうしたらいいのでしょうか…

SetMediaTypeをやめて
IAMStreamConfig *pConfig;
pConfig->SetFormat(&amt);
としてもエラーがでて停止します。
どうか助けてください。
どっちもやるんだよ。
んで、lSampleSize だけじゃなくてちゃんと BITMAPINFOHEADER 内の
フィールドとか AvgBytePerSec(だっけ?) とかも全部書き換え名。
漏れはこれ以上レスしないんであとは親切さんよろしこ。
レスありがとうございます。
やってみます。
もう一点。

デバイスによっては、高い解像度(例えば640x480とか)を Preview / Capture の両方のピンに設定できないものがある。
というか、大半がそうなんだけど。
この場合、使わないほうのピンの解像度を下げてからじゃないと、使いたいピンを高解像度に設定できないので注意。
ピン毎の解像度の設定は目的の IPin から QueryInterface した IAMStreamConfig で行います。

てか、もし
>IAMStreamConfig *pConfig;
>pConfig->SetFormat(&amt);
これ、ほんとにこう2行続けて書いてるんなら、DirectShow なんか触る前に C / C++ の勉強が必須。
235デフォルトの名無しさん:04/01/07 23:09
>IAMStreamConfig *pConfig;
>pConfig->SetFormat(&amt);

つか、これで「エラーが出る」で済むのか…。
newしる。
236デフォルトの名無しさん:04/01/11 15:55
誰か「猫でも分かるDirectShowプログラミング」とか書いてくれよ〜
現在VBを使ってDirectShowのプレイヤーを作ろうと思っているのですが
再生中の動画に文字や、現在のビットレート、
時間等を表示するのは難しいのでしょうか。
動画を出力するのと同レベルで出力したのと思っています。
>>237
難しい。
239デフォルトの名無しさん:04/01/13 07:12
サンプルのフィルタ等はDLL等になっていて登録しないと使えないようになっていますが、
これをアプリ内だけで使う(インストール不要で)と言ったような事は出来るのかな?
と思ったのですが、可能でしょうか?
共有DLLとスタティックリンクのような関係と言うか。
ドキュメントを色々調べてみたのですがそれらしき記述が見当たらなかったので…。
dekiruyo.
ima temoto ni nai kedo,
source ga koko de saraseru teido no ryou nara up site simasu.
241239:04/01/13 09:26
>>240
おぉぉぉ、出来ますか。
サンプルがあれば激しく有難いです。宜しくお願いします。
>>241
CaptureTex サンプルがDLLじゃなくてAP内に実装したフィルタでデコード結果を
受け取って D3D のサーフェスにレンダリングしてるよ。
243239:04/01/13 13:12
>>242
キャプチャデバイスを持っていないのでノーチェックですた。

作りたいのはソースフィルタなのでCaptureTexを参考に
Ballあたりを弄ってみればいいのかな。

なにはともあれありがd
最近980\とかの安物USBカメラをよく見ますが、明るさに影響されずに
常に一定のフレームレート(30fps希望)でデータくれる物ってありますかね。

複数デバイスの確認用に一個買ってみたんですが、色々と最悪でした。
>>243=239
ごめん。CaptureTex じゃなくて Player ディレクトリの Texture3D だったかも。
現在WindowsMediaFormatSDKをつかってストリームの保存やってるんですが
DirectShowの方が簡単ですかね
>>246
ASF だけを相手にするのなら、
Windows Media Format SDK の方が簡単。
DirectShow も簡単っちゃ簡単だけど、
いろんなお作法を沢山知らないと……
248239:04/01/13 19:40
>>245
CaptureTexでもその部分のコードは同じみたいです。
>>247
解凍ありがとうございます
ASFだけなんでWindowsMediaFormatSDKでいきます。
ただネット上にサンプルとかほとんど無いので苦戦してました。
250237:04/01/14 17:50
>>238
難しいですか、、、
レイヤーみたいにできるといろんな事ができると
思ったんですけどね、、、
難しいということはできないわけではないですか、、、
251デフォルトの名無しさん:04/01/14 22:15
で、サンプルUP、まだぁ〜?
生PCMデータがあるんで今ソースフィルター書いてるんだけど、
ソースフィルターって直接オーディオレンダラにつなげられないもんですかね?
253デフォルトの名無しさん:04/01/18 22:30
「日本語でなにをしたいでつか?」と聞いて欲しい。
で、ラジオボタンみたいなのクリックしていけばキャプチャプログラムとかが
作成されるようになって欲しい。はあ、それは20年後の事だろうか・・・。
>>253
今もそんな感じだろ。
googleにやりたいことのキーワード突っ込んで
あとは出てきたものかき集めてプログラム組むだけ。
絵に描いたような低脳だな。
動画ファイルの各フレームを読み込み、
それを補正しながら画面表示するツール
(まあビデオプレーヤみたいなもの)を
作ってます。

で、今回、TV出力できるように、オーバレイ上に
表示させるオプションを付けたいんですけど、
DSをやったことなくて、どこから手を付ければ
いいのか皆目分かりません。

もしよかったら、ヒントだけでも。。。
作ってますって何かやってんの?

非オーバレイで再生出来てるなら何をどうすりゃ良いか必然的に
解るはずだが。
>>257
ああ、読み込みはVfWから行って、
ツールとしてはほぼ完成しています。

> 何をどうすりゃ良いか必然的に 解るはずだが

そうなんですか。。。 _| ̄|○
あまり考えてないが、ビデオレンダラに自作フィルタ繋ぐ事になるのかね。
始めてじゃ手の付けよう無い悪寒するが。

DDrawのオーバレイサーフェースとかじゃだめなの?
>>259
> DDrawのオーバレイサーフェースとかじゃだめなの?

そうでした。動画のオーバレイということで、すぐにDirectShowを
考えてしまいましたが、動画のデコード/エンコードに
DirectShowを使うつもりはないので、DDにこだわる必要は
まったくないですね。

今検索した範囲では、DirectDrawは資料もサンプルも
豊富みたいで、自分の能力でもなんとかなりそうです。

多謝。
画像の補正部分を DirectShow Filter にして
DirectShow アプリケーションからそのフィルタを使うようにしてくれれば
このスレの住人としてはうれしい。
ようやく、
transform filter
renderer filter
の作りがわかってきた。
(Cbasefilterから作るのも少し)

あとはテスト用でsource filterを作ってみるか・・・
263デフォルトの名無しさん:04/01/23 23:55
結論:VFW >>> DS
264デフォルトの名無しさん:04/01/25 04:05
VFWって将来的になくなってしまうの?
265デフォルトの名無しさん:04/01/30 22:30
無くなると言われ続けて早幾年。
ActiveMovieの方が先に消えた罠。
#名前が変わったとも言うが。
CTransInPlaceFilter継承してフィルタ作ってるんですけど、
その作ったフィルタの後ろにffdshowを繋げるとものすごく早くなるんだけど。。。
なんでか分かりますか?
何の事だかさっぱり解らんが、フレームレート無視して全力でデコード
してんじゃないの。 >早くなる
268デフォルトの名無しさん:04/02/03 14:30
RealファイルをDirectShowで再生するにはどうしたらいいんでしょうか?
>>268
Real Alternative でぐぐるよろし。
ヘルプのDIB の操作のところに、
注 GDI、GDI+、DirectDraw、または Direct3D の関数を使ってビットを変更することもできるが、これらの手法についてはここでは説明しない。

てあるのですが、やり方がわかりません。
なにか参考になるサイトなどあれば教えてください。


>>269
レス感謝です〜
VMR9で試験的にデジタルビデオのプレーヤを
作ってるんですが、ちょっと質問させてください。

VMR9では、自分の環境ではハードウェア・オーバレイを
使ってないようなんですが、

1) そもそもVMR9は対応してない?
2) ビデオカードのドライバが対応してないだけ?
3) ドライバが対応すればTV出力も可能?

よろしくおねがいします。
VMR9 は DirectX 7 時代の overlay surface ではなく、
Direct 3D or DirectX Video Accelaration (DirectX VA, DXVA) を使ってサンプルを描画しています。
DXVA の方はドライバが対応すれば TV 出力も可能だろーとは思うけど対応してるカードがあるか
どうかは知らない。普通に Overlay 使ったほうがいいんじゃない?
>>273
そうなんですか、よく分かりました。
ありがとうございました。

VMR9は、どんなものか知りたくて
試験的にプレーヤ作ってるだけで、
別に実用的なものを作ろうとして
るんじゃないんです。
275デフォルトの名無しさん:04/02/12 23:19
DV形式AVIの自作FileWriterを作りたいんです。参考になるソースしりませんか?

標準のMS-FileWriterではだめな理由:
1.プレビュー+キャプチャで、キャプチャだけ一時停止することができない。
2.フレーム落ちを極力抑えたい。

前提:
4G超えられること
Type1/Type2のサポート
NTSC/PALのサポート

Dumpフィルタ改だと、ヘッダ部やインデックス部が作られないんだよね。
276デフォルトの名無しさん:04/02/17 16:15
Windows Media エンコーダ9 について質問

FMV-BIBLO NE6/700B WIN XP
Mobile PENTIUM III 700 メモリ256 HDD 20GB(残5GB)と外付120GB(2つ)-USB2.0

MPEGファイルをWMVにエンコードするために使っているんですけど
とにかく動作が鈍いんです。(ムービーメーカー2も不安定)
マシンの貧弱さは、わかっていますが、それだけじゃない気がするんです。
ソースファイル(MPG)を選択すると5分以上応答停止状態になります。
(エンコード開始ボタンを押した時なども同様)
待てば必ず回復して普通どおり動作するのですが、ストレスがたまります。
仮想メモリのページングファイルサイズの設定変更などしてみましたが効果なし。
サポートホームページ見てもわかりません。

MPEG2デコーダ&エンコーダの問題かもしれないのですが、よくわかりません。

WME9でMPEGファイルを使用してる方の動作状況を教えてもらいたいです。
このマシンでは、こんなもんなんでしょうか?
氏ね
278デフォルトの名無しさん:04/03/08 12:34
http://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap10/cap10.cpp
↑このプログラムでキャプチャーされた動画像をAVIに保存するプログラムを教えてください。
難しそうだったら、BMP形式で保存するプログラムでもいいです。
お願いします。
このスレ駄目だよ。
荒れさせるしかないよ。
できる奴はもう他の場所へ移ってる。
他ってどこ?
281デフォルトの名無しさん:04/03/17 23:06
サウンドボードからの非圧縮PCMのデータ自体を直接リアルタイムで受け取る
方法ありませんか?

ポインタなりなんなり。お助けをぅ
DirectSound使えばいいんじゃね?
サンプルも付いてるし。
waveInほげほげで十分なんじゃない?
戦わなくちゃ!DirectShowと
285デフォルトの名無しさん:04/04/05 22:49
インストールされてるメディアプレイヤーの
バージョンを取得する方法ありませんか?
スレ違いなんじゃあふぉが!

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MediaPlayer\9.0\Registration
287デフォルトの名無しさん:04/04/15 13:27
IDirectDrawVideoインタフェースが環境によって取れる/取れないがあるようなのですが、このような場合、オーバーレイを無効化できないものなのでしょうか?

//コンソールアプリケーションです
CoInitialize(NULL);
CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph );
pGraph->RenderFile(L"movie.mpg", NULL);
pGraph->QueryInterface(IID_IBasicVideo, (void **)&pVideo);
pGraph->QueryInterface(IID_IVideoWindow, (void **)&pWindow);
pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
pGraph->FindFilterByName(L"Video Renderer", &pBase); //pBaseはIBaseFilter
pBase->QueryInterface(IID_IDirectDrawVideo, (void **)&pDDVideo);
pBase->Release();
pControl->Run();
pEvent->WaitForCompletion(INFINITE, &a);

取れない環境は以下の通りです
Win2kProSP4 DirectX9.0b MatroxMilleniumG400DualHead 5.92/5.91

補足: WMP6.4の設定でハードウェアアクセラレーションをなしに設定してもWMP6.4上でしっかりオーバーレイ再生されていますorz


288デフォルトの名無しさん:04/05/02 12:25
堤さやか \952
「とびっきりSUNDAY,・・・fall in love ♥」
Direct Show と Windows Media SDK ってどういう棲み分けなの?

たとえば、
メディアプレイヤーとかをお手軽に作れる → Windows Media SDK
さらに踏み込んだ制御が出来る → Direct Show
とか?

WMA/WMVのストリーミング再生はDShowじゃできん気がするのう
そのこころは?
292デフォルトの名無しさん:04/05/10 12:16
初歩的な質問で申し訳ありませんが、お知恵を貸してください。
VCでDirectShow(USBカメラ)で取り込んだ画像をDirect3DのTextureとして出力したいと考えています。
 どのようなGraphを作成したらいいでしょうか?
 どのピンからDirect3D Textureへの変換すればいいでしょうか?

宜しくお願いします。

>>292
ttp://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/directshow.html#stillcap1
ここにあるようにSampleGrabberをかませてそこで生成されたビットマップを
テクスチャとして貼ればいいんでないの?
とDirect3Dのテクスチャの仕組みを知らずに答えてみるテスト。
USB Cam って「どのピン」っていうほどピン沢山出てる?
1つだけじゃない?
テクスチャへのコピーの仕方はTexture3D とか見て。
オーバーレイサーフェスを占有してるプロセスを取得するにはどうすればいいのでしょうか?
ビデオキャプチャの予約録画とかで、他にオーバーレイを使ってるソフトがあるとうまく録画できないことがあるので
そのプロセスを強制終了するようなモノを作りたいのです。
296デフォルトの名無しさん:04/05/24 14:43
>>292
DirectX 9.0ならCaptureTexやらCaptureTex9サンプル読めば
終わりじゃねーの。
297デフォルトの名無しさん:04/05/27 01:05
ネットワークカメラの動画でMJPEG形式のを取り込めるフィルタってDirectshow
に標準でないですよね??作らなければならないのか〜〜〜
標準ではないなぁ。
ネットワークカメラとの通信方法にも寄るだろうし実装も様々になるんではないかと。

以前仕事であるネットワークカメラからHTTPでMJPEG取り込んで、
下位に流すフィルタをCSourceベースで作ったことあるけど、
ballフィルタなんかのフレーム描画部分を受信した画像で描画するような
単純なものなら、そんなに難しくもないとおもう。

フレームレートとドロップフレームの制御はそれなりに、考慮が必要な気もする。

サンプルがあるんだし、試しに一度実装してみることをお勧めする。
299デフォルトの名無しさん:04/05/30 19:36
VisualC++ .NETを使用しています。
AVIファイルを再生中に停止させて、その画像を保存したく思います。
いったんクリップボードに保存したいのですが、うまくいきません。
ご教示お願いします。

Video *ourVideo= new Video("d:\\test.avi");
ourVideo->Owner = this->pictureBox1;
ourVideo->Play();
ourVideo->Stop;
Clipboard::SetDataObject(this->pictureBox1->Image);
299は撤回します
偽者ウザイ。
301は撤回します
>>301
親切でやってあげたのに、酷いね。
撤回しないとマルチだから放置決定だよ?
これマルチだったのか・・・。
んなもんMSDN調べりゃ、
いくらでも分かりそうな内容なのによ。。。。
305デフォルトの名無しさん:04/06/01 22:36
素人なので・・・・
別の掲示板で教えて頂きました。
ただし、C#ですが・・・
お騒がせしました。
別の掲示板にまで目を光らせてマルチポストを糾弾する香具師ってキモいな。
どうでもいいよ
>>306
別な掲示板じゃないけどな。

★初心者にVisual C++を教えるスレ★ Part12
http://pc5.2ch.net/test/read.cgi/tech/1083585833/468
質問があります。
DirectShowで、カメラとマイクからの入力をキャプチャしてAVIで保存しています。
現在、圧縮なしで保存しているのですが、
どうすれば圧縮をかけられるのでしょうか?
おまえもマルチか
      .   .
     .   -‐-  .
   __ 〃       ヽ :
  : ヽ\ ノノノ)ヘ)、!〉 :
   '. l(0_)!。-‐ ‐〈リ .
   ; Vレリ、" (フ/ ;
       : l´ヾF'Fl
.      ; 〉、_,ノ,ノ :
     . /ゝ/´, ヽヽ.
      : く/l |_ノト‐'⌒),)
       ̄   ̄ ̄
ISampleGrabber通してDivX再生するとコマ落ちするんだけど
こういうもんなんですか?
カメラからフレームごとに静止画を取得後、順にDirectPlayで送信し
受信した側で静止画を順に表示し、最終的には動画で保存したいと考えています
現在受信側でフレームごとに受信までは出来ているのですが
表示して動画で保存の仕方がわかりません
どうすればいいのでしょう?
GraphEditでJPEGの画像をD&Dすると
「Generate Still Video」というOUTピンを持ったフィルタが出たので
これで出来そうなのですが、このフィルタが何なのかがわかりません
GraphEditのフィルタの一覧「Which filters do you Wont to insert?」に
出ているのでしょうか?
一通り見たのですがわかりませんでした

ご存知の方、教えてください
とりあえず、
作成したアプリケーションでグラフが動作している時に、
GraphEditでアタッチしてみたら?
それで構築されたグラフがでてくるとおもうんだけども。
>>313
既存のフィルタを組み合わせてもできないと思うよ。
受信した画像にタイムスタンプをつけて順次出力するソースフィルタを作るべし。
Ball サンプルでも見て。
>>312
そういうもんです。
CPUパワー食いまくるんで「透過ウィンドウの下に来たときにも表示する」
というレアな用途のためにその実装を考えたんですけど投げ出さないといけなかったわけで。
AsyncReder使ってるんだけど、mpeg以外のaviがSampleGrabberで取得できない
具体的には、aviファイルをLoadして、SampleGrabberにPinつなぐとエラー(アクセス違反)
DivXとかに対応したいんだよな
どうすりゃいいのよ

むしろ>>312はどうやってんの?
>>316
VMR9 なら透明ウィンドウの下でも半透過しつつ再生されるみたいだよ。
31924時間戦い中:04/07/22 19:19
教えてエロい人!

DirectShowでレンダーフィルタ作ってます。
叩き台は、DSサンプルのSampVidなんだが、
コイツをD3D対応にして、且つアロケータでテクスチャを
作成してポインタを取得し、
アップストリームフィルタで自動的にイメージを
書き込ませたいんだけど、どうすればいいと思う?

VMRレンダラではやってそうなので、
そのソースがあれば最高なんだが・・・
320デフォルトの名無しさん:04/08/06 12:03
サンプルのCaptureTex9をビルドして実行すると
m_pCapture->RenderStream(...)のところで
Failed to create IDirect3DTexture9.

Could not create the D3DX texture. hr=0x8876086c
ってエラーダイアログがでて実行できないんだけどどうすればいいですか?
教えてエロい人。
321デフォルトの名無しさん:04/08/13 06:02
('A`)マケマスタ・・・
322デフォルトの名無しさん:04/08/16 22:28
やあ君達は優しいらしいじゃないですか
教えてくださいよwwwwwwwwwwwwwwwwwwwwwww

MPEG1動画をMPEG-VIDEOとMPEG-AUDIOに分けたいんですよ。
デコーダ通す前のやつ。

んで、
ソースフィルタ-すぷりった -ファイル(.mpv)
-ファイル(.mpa)
とかやりたいんだけど、
mpvとmpa生成するフィルタを「ぷっちでここ」っていうツール見つけてきて
「なんとか.ax」とか拾ってレジストリに登録して、
グラフエディット使って、
mpvとmpaが生成できたわけですよ。
ですが、それをプログラムで書こうと思ったとき、
そのファイル生成するフィルタのGUIDやらは
どうやったら分かるのですかい?

グラフエディットのどっかに書いてある?

あと他になんかいい方法あるなら教えてくれないか?wwwwwww
wwwwwwwwwww
うはwwwwwwwwwwwwwwww
323デフォルトの名無しさん:04/08/16 22:30
さっさと教えろよおい
InsertFilterのとこで見ればよかばってん
325デフォルトの名無しさん:04/08/16 22:53
ありがとう!好きです!

@device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\{E917C616-E850-44DF-8025-44C875B77758}
これざますか?

CoCreateInstance(○○○,
NULL,
CLSCTX_INPROC_SERVER,
○○○,
□□□)

○○○に何を突っ込めばよいか
この情報からわかりますか?
326デフォルトの名無しさん:04/08/16 22:56
@device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\{E917C616-E850-44DF-8025-44C875B77758}

CoCreateInstance(083863F1-70DE-11D0-BD40-00A0C911CE86,
NULL,
CLSCTX_INPROC_SERVER,
E917C616-E850-44DF-8025-44C875B77758,
□□□)

もしやこうか!
327デフォルトの名無しさん:04/08/16 22:59
あ、こうか!
CoCreateInstance(E917C616-E850-44DF-8025-44C875B77758,
NULL,
CLSCTX_INPROC_SERVER,
IID_IBaseFilter,
(LPVOID *)&unkoFilter)
328デフォルトの名無しさん:04/08/16 23:02
スレ禿げ忘れたwwww
禿げじゃなくて下げだったwwwwwwwwおkwwwww
チャゲ&飛鳥なんちゃってwwwwwwww
一人で偉く楽しそうだね。
DO VAIOみたいな奴作りたいよな。
まずはVC.netでも買ってくるか。
SP2入れたら9.0cになってリリース版になってやがる
まんどくせ
335デフォルトの名無しさん:04/09/04 22:24
ビュー表示、動画保存中に静止画を取得したいんだけど
どうやってやるの?
336デフォルトの名無しさん:04/09/05 15:26
Visual Studio 6.0 SP6 + DirectX 9.0 SDK Summer 2004 にしたところ、
DirectShowのコンパイルがまったく通らなくなって錯乱中だ・・・
dshow.hのインクルードでコケまくり。
締め切りはあさってなんだよ。。。 たのむよ俺はなにも悪いことしてねぇよ。。。
そこでアンインストールですよ。
338336:04/09/05 15:43
ためしにSDKの簡単なサンプルをコンパイルしてみたところ、コンパイル通らず。
おお、サンプルがビルドできないんだから、俺のプロジェクトなんて通るわけないよな。

なんか楽しくなってきた・・・うへへぐへへ
と言うか締め切り数日前に開発環境変えるなよ。
実はプロジェクト設定でインクルードパスを間違えている罠。
>> 336

Compiler Support

Developing C++ applications with the DirectX 9.0 Summer Update requires Visual Studio .NET 2002 or later.
Visual Studio version 6 is no longer supported.

Microsoft DirectX 9.0 SDK Update (Summer 2004) リリースノートより
ナムナム
343デフォルトの名無しさん:04/09/11 03:05:46
>>341
人事ながらガクブル
344デフォルトの名無しさん:04/09/15 20:08:48
ソースフィルタにファイルじゃなく
リアルタイムなデータをしこしこいれるようにするの
なんかいい方法ない?

ソースフィルタ自作むずかしすぎ。
誰か使えそうなもの作ってないですかのー。
ファイル名の指定とかしなくて、
バッファからデータ入れていけるようなの作ってる人いたら
いいもんあげるから .axとソース頂戴
345デフォルトの名無しさん:04/09/15 22:51:00
ボールフィルタの改造ですぐに作れると思うんだが・・・。
346デフォルトの名無しさん:04/09/15 23:15:53
それができないのだよー。
MPEGの再生したいんだけど、
MPEG1 stream splitterにつながるソースフィルタって
PULL型にしないといけないぽ
あと、スプリッタとつなげるときに、
メディアタイプ合わせて、接続すると思うんだけど、
その辺をどうやるかってのがわからない。
ボールのやつは、つぎにつながってるのが
スプリッタとかじゃなくて、レンダラだっけ?
だからあれを見ても参考にならなかったんですよ。。。
347デフォルトの名無しさん:04/09/15 23:51:03
CSource クラスは、データ フローのプッシュ モデルをサポートするように設計されている。
このクラスは、ファイル リーダー フィルタの作成には推奨しない。ファイル リーダーは、
IAsyncReader インターフェイスを介して、プル モデルをサポートする必要がある。
詳細については、「フィルタ開発者が使うデータ フロー」を参照すること

ってMSDNに書いてある もっとがんばれ
348デフォルトの名無しさん:04/09/15 23:58:39
MSDNは読みつくしたつもり。。。
ファイルリーダーはプルモデルをサポートする必要があるってことは、
上にも書いたように、
ソースフィルタの出力ピンインターフェースを
IASyncReaderにするってことだと思ってるんだけど、
プッシュモデルで作って、スプリッタにつながるんかなー?
その辺よくわかってない。
ファイルリーダーの作成には推奨しないって書いてあるから、
プルモデルで作らないといけないんだろうけど。。。
そもそもファイルリーダーって言葉自体が曖昧だ!!
ファイルをどう読むんだい!!
既存のやつは、一度でソースフィルタの内部バッファに
丸ごと読み込んでるようだけど、
その辺改造するのが難しい。。。
誰かこういうのやったことある人いない?
349デフォルトの名無しさん:04/09/16 17:42:41
>>348
やったことはあるけど、仕事でだったからサンプルもコード片も示せ無いよ。

>プッシュモデルで作って、スプリッタにつながるんかなー?
DirectShow 用語での「Splitter」ってのは、ファイル内部のデータ構造を知っていて、
シーク動作をサポートするフィルタのこと。上位のフィルタには IAsyncReader あたりを要求する。

というわけで、Push なら Splitter はダメ。でも MPEG なら Demux が使える(TSでもPSでもOK)。
Demux 使うのもマンドクセーってんなら、ソースフィルタが自前でVideo ES と Audio ES の2本
Push するんでもいいけど。

・・・一応答えてみたけど、
>メディアタイプ合わせて、接続すると思うんだけど、
>その辺をどうやるかってのがわからない。
このくらいサクサクっと書けないとこの先厳しいよ・・・外注に出したほうがいいんじゃない?
350デフォルトの名無しさん:04/09/17 01:28:26
>>348
サンプルのDirectShow/Filters/Async/MEMFile
あたりが参考になるのでは?

asyncio、asyncrdr使えば、ほとんど実装いらないでしょ。
351デフォルトの名無しさん:04/09/17 23:18:16
PUSHはスプリッタだめなんですか。
やっぱりこのPUSH,PULLモデルというのはかなり重要なファクタですね。
このパラダイムを軽視して、あるいはまったく知らずにフィルタを開発してると、
実は上位と下位のフィルタで上位はPUSHでつくっちゃいました。下位はPULLでした。
ということになりかねないのかな。
その場合、基底クラスのおかげでつながらないよ、というのなら
そんなことになる前に気がつくのかも知れないけど。
352デフォルトの名無しさん:04/09/27 00:19:24
>>333
おうよ
欲を言えば付属のリモコンつかえてTV出力にGUIを出せる奴作ってみたいよ

まあきょうVisualstudio.NETの60日評価版つきの雑誌買ってきたド素人なんだけど
353デフォルトの名無しさん:04/10/12 23:03:00
SDKをOctober 2004にアップデートしたらGraphEditでピンのプロパティが見られなく
なってしまった。
354デフォルトの名無しさん:04/10/14 21:02:34
ええー!まじっすか!うそーーーん!こえええええ!
355デフォルトの名無しさん:04/10/22 23:19:31
こんど私もこいつと戦うことになりました。
まずはSDKのサンプルでも眺めてみますわ。
356デフォルトの名無しさん:04/10/27 14:18:11
DX9SDKのサンプルAudioBoxをビルド中にエラーが出ます、
調べたらwmstub.libがどこを探しても見つからないのですが。
どうすればビルドできるのでしょうか?
357デフォルトの名無しさん:04/10/27 14:40:54
wmstub.lib とは随分古いな。それは Windows Media Format 7 以前の SDK
に含まれるファイルだ。
358デフォルトの名無しさん:04/10/27 23:31:56
>>356
そのエラーに書いてあると思うが↓
---------------------------------------------------------------------------------------
NOTE: To link and run this sample, you must install the Windows Media Format SDK 7.1.1.
After downloading the Format SDK, you can extract a public version of the
WMStub.LIB library, which should be copied to the Samples\C++\DirectShow\Common folder.
This library is necessary for enabling Windows Media content.
Without this library in the Common folder, the link will fail with:
LNK1104: cannot open file '..\..\common\wmstub.lib'
If you remove the WMStub.lib from the project's linker settings, the linker
will fail with this unresolved reference:
WMCreateCertificate


ついでに、ソースにもこんなことが書いてある。
//
// Windows Media 9 Series (code named 'Corona') no longer requires
// a stub library. If using WMF9, we don't need to provide a CKeyProvider
// implementation, and we don't need to link with the WMStub.lib library.
//


WMF9の構成使えば普通にビルド出来るよ。
359デフォルトの名無しさん:04/10/28 16:37:09
directshowで画像取り込みのプログラムをしています。カメラからの画像のたれ
ながしはできますが一枚とるプログラムが完成しません。ビルドまではできるん
ですがActive movie windowを表示して5秒後くらいにwindowが真っ白になってフリーズ
します。回りにdirectX扱える人いなくてほんと困っています。誰か教えてください。
プログラムの流れは
ピンの列挙→main(本文)→フィルタグラフマネージャの作成→システムデバイス列挙子作成
→モニカの列挙→モニカをフィルタオブジェクトにバインド→フィルタを追加
→キャプチャビルだの作成→ファイルライタフィルタの設定→サンプルグラバの生成
→メディアタイプの設定→フィルタグラフの追加→サンプルグラバの接続
→グラバのモードを適切に設定→ファイルへ出力→キャプチャ開始→
→サイズの取得→一枚キャプチャ→バッファ取得→解放
どこが間違っているのかが出ているのか分かりません。分かる人教えてくれませんか?
360デフォルトの名無しさん:04/10/28 22:19:16
ファイルライタ使うの?レンダラの書き間違いだよね
> windowが真っ白でフリーズ
なんだろう。聞いたことないな 黒じゃなくて白かよ。 白?えー
361デフォルトの名無しさん:04/10/28 22:26:33
つーかアレだ。俺だったらこうする。
DirecrXのDirectShowのSampleの下にさ、サンプルソースあるじゃんよ
あれの中のヌルレンダラとグラバサンプルにな、ログ吐くようにちょいと追加してさ
んでそれで繋げてみれば?
362デフォルトの名無しさん:04/10/28 22:28:35
つーかマルチじゃねーかテメーこらファック
363デフォルトの名無しさん:04/10/28 22:40:09
プレビューをダイアログ内のピクチャーボックスに表示させたいんだけど、ダイアログと関係のない場所に表示されちゃうよ。
ぼすけて!
364デフォルトの名無しさん:04/10/28 22:41:45
>>363
黙れガキ
365デフォルトの名無しさん:04/10/28 23:04:59
>>363
それDirectShowの問題じゃなくてWindowの関連付けの問題だからウぜー
366デフォルトの名無しさん:04/10/28 23:07:41
>>357
>>358

DX9デバッグにしたらビルドできました
どうもありがトン
367:04/10/28 23:08:24
DX9じゃなくてWMF9
368デフォルトの名無しさん:04/10/28 23:19:25
>>364,365
レスが増えてる!って思ったら・・・残念、拙者ガキですから。

RECT rc;
::GetWindowRect(*hPictureBox, &rc);

m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&m_pVidWin);
m_pVidWin->put_Owner((OAHWND)hPictureBox);
m_pVidWin->put_Left(0);
m_pVidWin->put_Top(0);
m_pVidWin->put_Width(rc.right - rc.left);
m_pVidWin->put_Height(rc.bottom - rc.top);
m_pVidWin->put_Visible(OATRUE);
m_pVidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);

ってやったら画面の左上に表示されてる。
なんでだろ〜。
m_pVidWin->put_Left(0);
m_pVidWin->put_Top(0);
の値いじったら画面上を移動する。
なんでだろ〜。
369デフォルトの名無しさん:04/10/28 23:27:42
>>368
黙れガキ
370デフォルトの名無しさん:04/10/28 23:31:00
>>369
wwwwwwwwwあひゃ、ウンコから帰ってきたらレスついてるどうもありがとん!
ってかおれ、
m_pVidWin->put_Owner((OAHWND)*hPictureBox);
じゃないか!
すんまそ解決!
うぺぺぺぺぺぺぺ
371デフォルトの名無しさん:04/10/28 23:33:27
rc使えよ
372359:04/10/29 12:41:33
デバッガ使用しましたら無限ループしてるとこ発見しました。
do{
pSGrab->GetCurrentBuffer(&bufsize, NULL);
 }while(bufsize <= 0);
なぜここが無限ループしているか分かりません。bufsizeは
long *buffer = NULL;
long bufsize = 0;
て宣言しています。なぜ無限ループするかよろしければ教えてください。
373デフォルトの名無しさん:04/10/29 12:48:02
>>372
マルチとは良い度胸だ
374デフォルトの名無しさん:04/10/29 13:14:10
>>372
エラーコードは?
あとグラフ構成くらいさらしてくれないと返事できない。
それとメッセージポンプを持つスレッドがそんな風にブロックしてはいけない。
UIスレッドで行いたくてかつ取得できなかったときに繰り返し試行するなら、
タイマイベントやら適当なメッセージやら使うべき。
375デフォルトの名無しさん:04/10/29 21:25:03
>>372
GetCurrentBufferの戻り値みればなんか分りそうだが。
あとグラバはプレビューピンにつないじゃいけないとかそういうの無かったっけ。
376デフォルトの名無しさん:04/10/31 02:29:32
DirectShowを使って動画像処理を行いたいのですが、
1フレーム分の処理が1/30秒以内に終わらない場合はどうなりますか?
次のフレームは飛ばされてしまいますか?
377デフォルトの名無しさん:04/10/31 09:59:34
100MBのMP3再生するとプロセスのメモリ空間も
100MB増加するんだけど

なんか少しずつ読み込むとかの方法は無いの?
378デフォルトの名無しさん:04/10/31 12:53:06
>>376
レンダラの表示が遅れるだけ。もちろんPCの性能によるんだけどな
例えば29.97fpsのビデオが18fpsぐらいで表示されたりする。

>>377
どこの話?プロセスって例えばプレーヤーとかのプロセス?
フィルタの作りによるべさ
379デフォルトの名無しさん:04/10/31 14:24:56
>>377
すとりーむ
380376:04/10/31 14:43:32
>>378
分かりました、ありがとうございます。
381デフォルトの名無しさん:04/10/31 17:25:11
フィルタの接続はicapturegraphbuilder2にまかせっきりでいいのかな?
まだ、プレビュー表示とサンプルグラバーぐらいしか使ってないけど、もっと複雑なことする場合は自分でピンの接続やるべきなのかな?
みんなはどう?
382デフォルトの名無しさん:04/10/31 17:47:23
サウンドボード複数挿してるとは
どうやって出力先指定すればいいの?
383デフォルトの名無しさん:04/10/31 17:58:57
>>382
だいれくとさうんど
384デフォルトの名無しさん:04/11/01 02:11:40
兵庫県尼崎市にお住まいの加藤雄太君(6)から質問の手紙を頂きました。

「 な ん で こ の す れ の じ ゅ う に ん っ て こ ん な に も て い れ べ る な の ? 」
3854歳:04/11/01 05:03:14
>>384
世の中にはいろいろなレベルの人がいる。
君の様な年長者には明らかなことでも、
自分たちみたいな子供にはわからないことが多い。
だから暖かく見守って欲しい。
それぐらい小学生にまで行かれている方ならわかってほしい。
386デフォルトの名無しさん:04/11/04 17:04:34
ageてみる.
387デフォルトの名無しさん:04/11/05 23:06:13
388デフォルトの名無しさん:04/11/12 23:49:45
 Windowsを再インストールしてDirectX SDK9を入れなおしたのですが、
Dshow.hをインクルードするとエラーをはくようになってしまいました。

 原因がPlatform SDKにあることを知るまで3時間、ありかを探すまで
2時間以上かかった。何であんなに検索しづらいんだよ>>MS

 久々にマジで疲れた _| ̄|○
 もうすでにコード書く気力がねえよ。
389デフォルトの名無しさん:04/11/13 12:31:43
>>388

> 原因がPlatform SDKにあることを知るまで
詳細教えてください。おねがいします。
390デフォルトの名無しさん:04/11/13 13:21:48
CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
IID_ICreateDevEnum, (void **)&pDevEnum);
hr = pDevEnum->CreateClassEnumerator(AM_KSCATEGORY_CROSSBAR, &pClassEnum, 0);
pClassEnum->Next(1, &pMoniker, &cFetched);
hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&pFilter);

を実行したらBindToObjectの戻り値で「指定されたファイルが見つかりません」という
エラーコードが返ってきたのですが
この「指定されたファイル」を特定するにはどうしたらよいのでしょうか?
391デフォルトの名無しさん:04/11/13 17:36:46

>>389
 OSがWinXP SP1で Visual C++6.0 SP6 の環境なのだけど、
DirectX_SDK9 2004Update を入れると strmit.hの 
typedef DWORD_PTR HSEMAPHORE;
でコンパイルエラーが生じるようになります。

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
なので、ここからSDKのダウンロードをおこない開発環境を更新する必要が
あるそうです。
 あと、更新後に統合環境のツール->オプションでディレクトリの項目に
"\Microsoft SDK\Include"のフォルダの追加も手作業でやる必要がありました。

392デフォルトの名無しさん:04/11/16 00:24:31
RenderFileで生成したフィルタグラフを破棄するにはどうしたらいいのでせうか
393入門者:04/11/16 01:06:56
DirectShow 動画ファイルの開始から10秒間だけ再生というのは
どうやればいいの?

pMediaSeeking -> put_SetPosition() とかやればいいの?

自分が指定した時刻の再生、停止方法がわからない
394デフォルトの名無しさん:04/11/16 09:12:25
>>392
DX9ヘルプの「グラフのすべてのフィルタの削除」をミロ!

>>393
IMediaPosition::put_StopTimeでできるかもしれない
それかIMediaSeeking::GetPositionsで指定した時刻になったらポーズしろい
395デフォルトの名無しさん:04/11/16 15:27:30
正直、ちゃんとした実装してあるフィルタばかりとは限らんぞ。
特に時刻とか位置のシークなんぞ。
396デフォルトの名無しさん:04/11/16 15:47:09
>>393
スプリッタの出力 pin に ControlStream でセットするのが理論上完璧な手法。

だけれどもメディアイベントで時刻を見て適当に Pause なり Stop する原始的なやり方の方が
なにかと安全。>>395 の言うようなケースとか。
397おしっこ:04/11/16 16:35:28
IMediaSeeking で 再生速度を変えられると思うんだけど、
動画ファイルによっては8倍とかできないものがあるのはなぜ
398デフォルトの名無しさん:04/11/16 16:54:18
・パーサフィルタ作った人が手を抜いたから
・パーサフィルタ作った人が無能だったから
・パーサフィルタ作った人が「こんな仕様も判らんものサポートできるかぁ」と切れて
 非サポートを決めたから
399392:04/11/16 18:47:28
>>394
うっひょうどうもありがとう
400デフォルトの名無しさん:04/11/16 19:01:56
再生すビデオを手っ取り早く半透明にする方法って、、、
ないですかね?
401デフォルトの名無しさん:04/11/16 21:39:40
繋がるフィルタの挙動を掴むのに疲れる疲れる。ちくしょう
402デフォルトの名無しさん:04/11/17 22:09:45
再生しながら出力するサウンドボードを変更するにはどうすりゃいいの?
フィルタの類はRanderFile()で自動生成なんだけど
403デフォルトの名無しさん:04/11/17 22:42:38
>>402
オーディオレンダラはクロック発生源なので、Tee改変してあらかじめつないでおいて
とか簡単にはできないよ。オーディオレンダラを自作するのが早道だと思う。
404デフォルトの名無しさん:04/11/18 00:09:50
>>402
KbMedia Playerみたいな?
405デフォルトの名無しさん:04/11/22 15:18:09
406デフォルトの名無しさん:04/11/23 22:10:24
Directshowで音の高さは変えずに再生速度を変えること出来ます?
407デフォルトの名無しさん:04/11/23 22:47:56
フィルタ書けば可
408デフォルトの名無しさん:04/11/24 10:45:14
GraphBuilderを別スレッドで動かすにはどう書けばいいの?
409デフォルトの名無しさん:04/11/25 00:15:13
別スレッドでグラフを構成すればよいよ
って自分で答えかいてるじゃん
410デフォルトの名無しさん:04/11/25 14:29:46
アニメ板の攻殻機動隊スレにこんなのが落ちてたよ。
USBカメラの映像にエフェクトかけて表示するのって楽しそうだね。

> 工学ナビさん(www1.bbiq.jp/kougaku/koukaku.html)で公開されている”笑い男摸倣ツール Catcher in the Rye”の俺バージョン(パクリ)を作ってみました。
> 公開に耐えうる状態になったので公開してみます。
> 俺バージョンは複数の顔をあのロゴでマスクできます。
> USBカメラをお持ちの方は試してみてください。
> ここで配布してます。
> www.geocities.jp/laughing_man_lol/index.html
>
> 今のところ、バージョン0.1って事で・・・。容赦してね・・・。
411デフォルトの名無しさん:04/11/30 21:27:13
>>411
何気にアップグレードしてるね。
面白い。
412デフォルトの名無しさん:04/11/30 21:33:47
>>411
再帰ですか?
すごいテクニックですね!
413デフォルトの名無しさん:04/11/30 22:07:25
>>411
ムッ。
その書き方だとスタックオーバーフローで昇天だな。
414デフォルトの名無しさん:04/11/30 22:39:48
>>412
その表現気に入った
415デフォルトの名無しさん:04/11/30 23:06:30
IGraphBuilderのSetLogFileで書き出されたログファイルってどうやって読むの?
デバイス名やCLSID以外解読不能なんだけど
416デフォルトの名無しさん:04/12/01 11:02:35
ttp://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap10/index.html
を参考にして、カメラ入力のソフトを作ってみたのですが、
プログラムの動作中にUSBカメラを抜くと、ブルーバックになってOSが落ちました
しかし、毎回落ちるのでは無いようです(なんとも無い事があり、バグがあると気付かなかった)
※ このプログラムのままでも同じ症状になるか試してはいませんが、カメラ制御部は殆どそのままです
上のリンク先のものに、GetCurrentBufferなどの戻り値がエラーかどうかを調べる処理は追加していたのですが、
他には何が必要なのでしょうか?
(恐らく、戻り値を調べるのではなく、実行前に実行可能かどうかを調べる必要があると思っているのですが…)


MSへのレポート結果は、「ドライバが問題なよう」と出ていましたので、
プログラムがカメラ用のドライバを制御中に問題を起こしたようですが…


上記のリンク先ソースではループ内で

hr = pGrab -> GetCurrentBuffer( &n, (long *)img00.lpBmpData );

だけしか行なっていませんが、私のプログラムでは

pGrab -> GetConnectedMediaType( &amt );
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader),

でBITMAPINFO構造体を取得し、サイズが変更されていればメモリを確保しなおすという内容にしています。
どこが問題か分かる人、教えてください。
417デフォルトの名無しさん:04/12/01 11:38:24
DirectShow編集サービス(DES)で作成したオブジェクトに
自作のレタリング・フィルタを追加することができません。
(再生に反映されない)知ってる方いらっしゃれば教えてください。
自分の試したやり方は

1.タイムラインオブジェクトを作成
2.IRenderEngine からグラフを取得
3.IRenderEngine の ConnectFrontEnd をコール
4.グラフにフィルタを追加
5.IRenderEngine の RenderOutputPins をコール
6.IMediaControl を取得して Run をコール

です。ちなみにDESを使ったオブジェクトを標準の
ファイルライタフィルタに接続してファイルに書き込むことは
できました。
(最悪いったんファイルに出力して、そのファイルからグラフを
自動生成させてフィルタを追加する、ということはできそうです。
時間がかかりますが。)
418デフォルトの名無しさん:04/12/01 17:31:12
JMFくらい簡単ならいいんだけど。
419デフォルトの名無しさん:04/12/02 21:59:58
>>415

人間用じゃないから(w
420416:04/12/08 22:16:39
やっぱり、人居ないな
もう少し時期を見て、他所で聞いてみます。
421デフォルトの名無しさん:04/12/08 23:26:17
>>416
そういう種類のドライバのバグは、アプリ側で対応するのは難しいです。
ハードウェアのメーカーに文句を言うしかないでしょう。
422デフォルトの名無しさん:04/12/09 01:02:51
>>421
プログラムのチェックが不十分なんじゃなくて、このカメラ固有の問題ですか
それなら仕方ないですね。ありがとうございました
423デフォルトの名無しさん:04/12/09 05:51:03
最初にデバイスチェンジイベント発生するんじゃないの?
発生前に落ちるならどうしようもないけど、落ちない時もあるならイベント発生してる希ガス
424デフォルトの名無しさん:04/12/09 10:46:45
>>410
オモロイ
425デフォルトの名無しさん:04/12/09 12:47:35
>416
そこのソースは見てないけど。予想的に画面が出て見るだけ?
単にIVideoWindowで画面出せば良いだけじゃね?
いちいちビットマップ得てペイントして.....なんてめんどくさすぎ

SDKのヘルプとキャプチャのサンプル見て理解出来れば
簡単にキャプ&プレビューソフト作れるよ
426デフォルトの名無しさん:04/12/09 14:02:55
>>425
漏れも良く見てないけど、「そこのソース」はイメージをキャプチャしてBMPで保存するものだったと思う。
427デフォルトの名無しさん:04/12/09 14:58:41
>>423
イベントですか…イベントって事は、引数じゃなくてメッセージで来るんですかね…それともコールバック関数?
イベントのタイミングとか、チェック法とか分からないので、後でMSDNで調べてみます

>>425
ビットマップを得て、画面書き換えです
hr = pGrab -> GetCurrentBuffer( &n, (long *)img00.lpBmpData );
の部分でビットマップを取得しています。
リンク先のものは無限ループ内で連続取得していますが、私はプロシージャのタイマーメッセージで呼び出しています
画像処理ソフトに使いたいので、この方式にしました
428デフォルトの名無しさん:04/12/09 15:40:44
「デバイスの削除通知」
ttp://www.microsoft.com/japan/msdn/library/ja/DirectX9_c/directx/htm/deviceremoval.asp

俺はDirectShow SDKに入ってる.chmのヘルプを見てるけど
「DirectShow の使い方」って所を一通り見る事を勧める
少なくても基本的なデバイス列挙・レンダの部分(Mixingじゃ無く)は理解したほうがいい

AMCapサンプルの全理解出来れば後々楽だと思う。イベント取りもしてる。
429デフォルトの名無しさん:04/12/09 20:18:37
>>428
ありがとうございます。やっと暇が出来たので、調べてみます。
DirectShowとかキャプチャ部の説明は一通り見たのですが、見ただけだと今一理解出来ない事が多かったので、
プログラムを色々弄りながら少しずつ理解していっている段階です
ある程度、実際の挙動は分かってきたので、もう一度全部見直してみます
(AMCapは以前、途中までソースを追ってみて、脳がオーバーフロー起こしたので強制終了しました…いきなり覚えるにはレベルが高かったです)
430デフォルトの名無しさん:04/12/11 08:52:18
VMR9は使わずにDV入力映像とファイル映像をミキシングしたいのですが、
MSDVはウインドウレスモードで表示出来ないの?
ActiveMovieWindowって別画面が出ちゃう←たぶんデフォルトレンダラが作られてる
VMR7でDVミキシングは出来ないのかな

VMR9を使うしか無いのでしょうか?
431430:04/12/12 11:51:30
スマン出来た。単純な事だった。
RenderStreamの最後の引数にVMRを指定してなかった

VMR追加すれば、それがデフォルトとして動くと思ってた
(ファイルだと指定しなくても収まってくれてたので)

MSDVから直だと音が無いので、ちゃんとフィルタ作成して繋げたらちゃんと出来た
432デフォルトの名無しさん:04/12/14 11:09:36
すみません。質問なのですが・・・

BaseClassesをVC6++でビルドできません。Dswファイルが無いのです。
どうしたらいいのでしょうか?.Netじゃないとダメですか?

あとヘルプには Samples\Multimedia\C++\BaseClasses となっているのですが、
そんなディレクトリはありませんでした。
Extras\DirectShow\Samples\C++\DirectShow\BaseClasses にあります。
これは、特に気にしなくていいですか?

DLしたのは
DirectX 9.0 SDK Update (December 2004)
DirectX 9.0 SDK Update (December 2004) Extras
DirectX 9.0 SDK Update (October 2004) 日本語ドキュメント
です。

433デフォルトの名無しさん:04/12/14 12:39:06
>>432
Update (October 2004) でフォルダ構成やセットアップファイルに変更が
加えられてそのままドキュメントが混乱しているようだ
dsw に関しては、DirectX 8.0 SDK からコピーして使ってる
434デフォルトの名無しさん:04/12/14 12:44:08
>433

レスありがとう。
DirectX 8.0 SDK 探しても見つからなかった・・・
どこかに上がってる所は無いでしょうか?
ってMicrosoftになかったら、無いかな?^^;
435デフォルトの名無しさん:04/12/14 12:49:35
Extrasに入ってるが
436デフォルトの名無しさん:04/12/14 12:55:18
>435
ほんとですか?

*.dsw で検索しても無かったです。
.net のソリューションファイルはありますが・・・

VC6++でビルドしたいので、dswファイルが欲しいのです。
どこにあるのでしょう?
437432:04/12/14 13:09:42
お騒がせしました。

DirectX 9.0 SDK Update 2003

を見つけ出し解凍したらありました。
やっと戦う準備が整いそうです。
438デフォルトの名無しさん:04/12/23 00:09:04
DSF書くのってなんでこんなにめんどくさい&資料無いの…(T_T)
439デフォルトの名無しさん:04/12/24 02:06:35
特定のファイル(DVDのVOB)でピン接続をするとエラーになるんですが・・
グラフマネージャはIFilterGraph2を使ってます

IFilterGraph2.Connect(ファイル側のピン, VMR側のピン) ←例外
IFilterGraph2.Render(ファイル側のピン)  ←正常
なんでぇ?

それで、VMRは後にしてサウンド側を作って
IFilterGraph2.Connect(ファイル側のピン, サウンド側のピン)
を行うと正常に作成されました
ファイル側のフィルタから、ダウン側に空きピンを探し(MEDIATYPE_Video)
そのピンとVMRを繋ぐとやっぱり例外・・・Renderだと正常。・・・

例外はConnect時に浮動小数演算のオーバーフロー・・がなんとかかんとか
VMRは、標準VMR7、VMR9 両方ともウインドウモード、ウインドウレスモード試したんですが全部駄目でした

ちなみに、GraphEditでそのファイルとVMRを繋ぐとちゃんと作ってくれます
440デフォルトの名無しさん:05/01/16 23:57:54
(ここは過疎化でしょうか?)
ちょっと教えて。
ビデオウインドウのクリーンアップをする時、グラフは停止させずに表示を消す時に、
IVideoWindow(WS_CHILD)の時、IVideoWindow->put_Owner(NULL)
を行うとタスクバーに一瞬ActiveMovieWindowのタスクが表示される。
put_Owner(NULL)をしなければ出ないのですが。
グラフにDVDマネージャを使ってる時に現れる。単純にファイル再生などは出ない。

また、ウインドウレスの時も
IVMRWindowlessControl->SetVideoClippingWindow(0);
をしても表示は消えない。
試しに他ウインドウのハンドルを渡すと、ちゃんとそっちに描画できるのですが

グラフは停止させずに、表示を消す方法はどうしてます?
441デフォルトの名無しさん:05/01/17 00:48:57
put_Visible じゃダメなのか?
442デフォルトの名無しさん:05/01/17 00:57:43
put_Visibleはなんの動作もしてくれないよね
443デフォルトの名無しさん:05/01/17 12:58:11
何もしないといえばIDvdControl2::Pauseだな
444デフォルトの名無しさん:05/01/18 00:20:21
このたびDirectShowの世界へ足を踏み入れました
動画像を録画できるデジタルカメラを使い動画ファイル(.MOV)を
PCに移して、ISampleGrabberを用いてNullRendererに渡すデータを
取り込み、フレーム毎のBMPを取り出すルーチンを書いたのですが、
WMVファイルではものすごい遅いですが、希望するフレームの
データを取得することができました。しかし、.MOVの場合、最初のフレーム
画像だけデータを取得できるのですが、2枚目以降は1枚目の画像とすべて
同じデータしか取得できないのです。QuickTimeのDirectShowフィルタは、
quicktimealtを使って登録したため、WindowMediaPlayerやDirectShowの
最初のサンプルでは問題なく再生できます。ISampleGrabberだけでなく、
流れてきたデータを取得する他の方法をご存知でしたらお教えください。
また、ISampleGrabberを通して描画するとかなりパフォーマンスが落ちるのですが
もっと高速な処理はあるのでしょうか?
長文で誠に申し訳ありませんが、ご存知の方なにとぞよろしくお願いいたします。
445デフォルトの名無しさん:05/01/18 05:31:36
フィルタ通過では無く、描画してる画を取るなら

WindowモードならそのHDCから取る
WindowlessモードならGetCurrentImage
446デフォルトの名無しさん:05/01/18 14:20:15
返答ありがとうございます。
最終的にRendererにわたるデータと描画されたデータ
というのは同義として見れるのでしょうか?
解像度に依存しないデータを取得したいので
フィルタ通過のデータを取得したいと考えています。
フィルタを通るデータを取得するためには
Grabberかそのようなフィルタを作るしかないのでしょうか??
447デフォルトの名無しさん:05/01/18 17:47:47
IBasicVideo::GetCurrentImage
448デフォルトの名無しさん:05/01/19 00:56:25
IBasicVideo::GetCurrentImageを使ってみました。
非常に簡単に取得することができました。ありがとうございます。
続けての質問で申し訳ないのですが、
TIME_FORMAT_FRAMEをサポートしていない.MOV動画像は、
どのように正確な再生時間を取得すればよろしいのでしょうか?
IBasicVideo::GetCurrentImageを使うにあたり、SetPositionを
使うのですが、フレームをサポートしていない場合時間を設定すると
思うのですが、正確な次フレームの時間が分からないと、真っ黒な
画面になってしまいました。前回一番最初の画面になりっぱなしだったのは、
正確な時間を与えていないためにフレーム取得ができなかったためだと
考えられます。何か良い解決方法をご存知の方がいらっしゃいましたら、
お手数ですが、なにとぞお教えください。
449デフォルトの名無しさん:05/01/19 01:28:14
ファイル再生のグラフ作ってないから、すぐ試せないので無責任だが
取りあえず、一通りのタイムフォーマットで試してみては?
少なくてもバイトオフセットなら画は取れると思うけど。ダブリが生じるかも?
450デフォルトの名無しさん:05/01/19 01:37:38
アドバイスありがとうございます。
サポートフォーマットを試した結果、
TIME_FORMAT_MEDIA_TIMEのみ、S_OKが返ってきました。
1フレームがレンダされたらCallBackで取得なんて手段は
できるのでしょうか?
451デフォルトの名無しさん:05/01/19 01:47:43
ちょっとヘルプ眺めてた
シークしてから、IMediaControl::ポーズ、もしくはStopWhenReadyをしてから、画を取れないかな?
452デフォルトの名無しさん:05/01/19 02:06:16
返答ありがとうございます。
うー、PauseやStopWhenReadyでもやはりダメです。
IMediaSeekのSetPositionのスタートの値に適当なスタートの
時間(ナノ時間)を入れて、ストップの値に3フレームぐらい経過すると
思われる値を入れて実行すれば画像は取れるのですが、スタート値が
ジャストフレーム値を示していないと駄目な模様です。
ただ、GraphEditでは描画フレーム数を出しているので、何とかすれば
可能なものだと考えられるのですが、その方法が分かりません。
453デフォルトの名無しさん:05/01/19 02:22:07
では、IVideoFrameStep::Step はどうでしょう?CanStepが有効かどうか確認
GraphEditがコマ数表示出来るなら、なにか在るのでしょう
どっかのPINから合致するAM_MEDIA_TYPEと、VIDEOINFOを調べないといけないかな
454デフォルトの名無しさん:05/01/19 02:43:28
>>452
描画フレーム数は文字通りレンダラが描画(受信)したフレーム数だと思いますが。

実際のところ、非圧縮AVI以外の形式では、任意のフレームへのシークはほとんどの
場合不可能です。レンダラの手前にteeでも入れて、自前フィルタ経由でシーケンシャル
に絵を取るのが良いと思います。
455デフォルトの名無しさん:05/01/19 02:56:19
貴重なご意見ありがとうございます。
まず、IVideoFrameStepでのCanStepメソッドで調べた結果、
マルチプルに0を設定して試したところ、S_OKが返ってきました。
これは!?と思い、
IVideoFrame::Step( 200, NULL );
としてS_OKが帰ってきて、いざ、IMediaControl::Runで実行し
すぐさまPauseメソッドで止めて、IBasicVideo::GetCurrentImage
を実行したのですが、ううー、進んでない...何故に?という状況です。

また、452さんのご指摘では、任意フレームが取れないとのことですが、
実際GraphEdit上でドロップなし描画が行われているので、
再生レートを無視すれば1フレーム画像を取得できるのではないか?
と考えていました。.MOVはMotion-JPEGのため、
コマ再生が可能と考えていたところに甘さがあったようです。
自前フィルタを作る方法しか手段はなさそうですか...。

例えば、レンダーに送信したフレームを横取りする手段としては
どのような方法があるでしょうか?teeは初めて耳にする言葉なので
もしよろしければお教えください。
456デフォルトの名無しさん:05/01/19 03:05:51
IVideoFrame::Stepは非同期です。使い方間違ってるよ。
Stepの完了はEC_STEP_COMPLETEイベントを受け取った時です。
このときポーズされるので、そこで取らないといけませんよ。
Run、Pauseなどしたら意味がない
457デフォルトの名無しさん:05/01/19 03:06:34
>>455
レンダラの手前に Infinite Pin tee を挟みNull Rendererあたりを改造した自前フィルタで取得する、
Direct3D のテクスチャ上に動画を再生するサンプル(AP内部で画像取得のためのフィルタを実装
してます)を改造する、など。

あと.MOVに特化するなら、素直に QuickTime で扱うという手もあります。
458デフォルトの名無しさん:05/01/19 03:52:48
> 456さん、457さんご返信ありがとうございます。
まず、Stepの件は了解いたしました。となると、別スレッドでの
GetEventの監視ルーチンが必要となりますか?Stepメソッドのあと、
イベント取得のWhile文を書いたのですが、む...素通りしてしまう。
このあたりよく分かっていませんのでもっとドキュメントを読んでみます。
また、Step後のIMediaControl::Runで出てくる画面
(実際にはRunしていませんが。)でちょうど200コマ進めた画面が表示される
様になりました。大進歩だと思います。ありがとうございました。
teeの件に関しましては、このコマ送りだと速度が非常に遅いと
思われるので調べてみたいと考えています。ただ、自作フィルタの
作り方から学ばなければ...。なお、QuickTime SDKも落としてきたのですが、
QuickTimeの方が、開発者数が少なく、Webページの情報も
あまり多くないため、DirectShowにしようと考えた次第であります。
459デフォルトの名無しさん:05/01/19 04:37:31
>...別スレッドでのGetEventの監視ルーチンが必要....?
普通にIMediaEventExで設定したウインドウに送られると思いますが
EC_STEP_COMPLETEに限らず、グラフが生成するメッセージの取得が解らなければ、
SDKサンプル見たほうが早いです。ほとんど全てのサンプルに入ってます。
460デフォルトの名無しさん:05/01/19 09:58:34
Microsoft DV Camera and VCRでDVデッキを制御しているんだけど
シャトル再生が出来ない。コレって仕様?
461デフォルトの名無しさん:05/01/19 14:57:38
>459さん。突っ込みありがとうございます。
すみません、テストプログラムなので、consoleアプリで
書いていたため、監視ルーチンが必要だと思ってしまいました。
コマ送りとフィルタ作成を試してみます。ただ、SDKヘルプで
気になる記述が...。IVideoFrameStep::Step「コマ送りは実時間で行われる。」
うそん。フレームレート無視再生で1フレームの画像を取得することが
できそうにないです。やはり、Rendererフィルタ作って、流れてくる
データを見るしかなさそうな気もします。各フレームに分割して
パラパラ漫画で処理したいだけなんだけどなぁ...。
ともかく貴重なご意見ありがとうございました。
462デフォルトの名無しさん:05/01/19 16:14:16
>>460
IAMExtTransport::put_Mode()で操作していればの話だけど
ED_MODE_SHUTTLEだったらMSのドライバではサポートされてないよ。

その代わり、
ED_MODE_PLAY_FAST_REV_n
ED_MODE_PLAY_SLOW_FWD_n
ED_MODE_PLAY_FAST_REV_n
ED_MODE_PLAY_SLOW_FWD_n
(n=1〜6)

というのがある。
463460:05/01/20 09:08:58
>>462
レスどうも。

お手数ですが、それら定数はどのヘッダにあるのですか?
ググってもないし、MSDNにもないのです。
464デフォルトの名無しさん:05/01/20 11:37:21
Xprtdefs.h
465デフォルトの名無しさん:05/01/20 16:23:03
そのくらいフォルダ内文字検索しろよ
466デフォルトの名無しさん:05/01/23 01:34:52
GetCurrentImage使って画像取得すると
左下の10ピクセルが黒くなり、画像がずれて表示されるんですけど
どんな原因が考えられますか?
ISampleGrabberのGetCurrentBufferで
同じような処理した場合は、問題なく画像を取得できます。
Delphiで製作してるんですが資料がほとんど無く困ってます。
467デフォルトの名無しさん:05/01/23 02:28:19
こないだの人?
>445 >447.. >457あたりだが、おいらもDelphiだよ。で答えは知らないケド
DIBを展開するほうが間違ってたりしない?

関係ないがInt64にハマッタ
468466:05/01/23 03:16:39
>>467
違う人です。
もうわけわからん
469デフォルトの名無しさん:05/01/23 06:22:43
問題なく取れたけどな、以下Delphiソース。中村氏のTNkDIB使用
procedure ......Button1Click(Sender: TObject);
var
bw: IBasicVideo;
Buf: PByte;
BufferSize: Integer;
BitStream: TMemoryStream;
NkDIB: TNkDIB;
bmf: TBitmapFileHeader;
dwSize: LongWord;
pbmi: PBitmapInfoHeader;
begin
.......QueryInterface(IID_IBasicVideo, bw);
if not Succeeded(bw.GetCurrentImage(@BufferSize, nil)) then Exit;
GetMem(Buf, BufferSize);
if not Succeeded(bw.GetCurrentImage(@BufferSize, PLong(Buf))) then Exit;

pbmi := PBitmapInfoHeader(Buf);
dwSize := (pbmi.biSize) + (pbmi.biSizeImage) + (pbmi.biClrUsed * Sizeof(TRGBQuad));
bmf.bfType := $4d42;
bmf.bfSize := dwSize + sizeof(TBitmapFileHeader);
bmf.bfReserved1 := 0;
bmf.bfReserved2 := 0;
bmf.bfOffBits := Sizeof(TBitmapFileHeader) + pbmi.biSize +
(DibNumColors(pbmi^) * sizeof(TRGBQuad));
BitStream := TMemoryStream.Create;
BitStream.Write(bmf, Sizeof(TBitmapFileHeader));
BitStream.Write(Buf^, BufferSize);
BitStream.Position := 0;
NkDIB := TNkDIB.Create;
NkDIB.LoadFromStream(BitStream);
Image1.Picture.Bitmap.Assign(NkDIB);
470デフォルトの名無しさん:05/01/23 06:26:19
// --fnc
function DibNumColors(bmi: TBitmapInfoHeader): Integer;
begin
if (bmi.biClrUsed = 0) and (bmi.biBitCount<= 8) then
Result := (1 shr bmi.biBitCount)
else
Result := bmi.biClrUsed;
end;


尚PLongとか引数がポインタ型になってるのは、俺のSDK移植ソースだからそうなってるだけ
ウインドウレスモードも同じ感じでしたけど問題無いよ
471デフォルトの名無しさん:05/01/23 09:25:40
ミスってた
メモリストリーム作ってる所、ヘッダー書いた後
BitStream.Write(Buf^, dwSize);
だ。

DibNumColorsの所、shrでは無くshlだ。

NkDIBではなく、標準のTBitmapでも良い。但しD6で確認。古いVerならNkDIBのが無難。
472466:05/01/23 11:26:19
>>469-471
ソースありがとうございます。
参考にして作り直したところ正常に表示されました。
>>467の指摘通りDIBを展開する方が間違ってたようです。
ホントありがとう。2chで質問してみるもんだなあ。
473デフォルトの名無しさん:05/01/23 13:49:31
.movの質問をしていたものです。
結局movファイルをDirectShowで直接扱うのは、
あまりに難しく、AVIに変換してやってます。しかし、
IBasicVideoは重い...。グラバも重い...。
これどうやったら早くなるの...(泣
現在はAppleからQuickTime SDKを
直接たたく方で思案している最中です。
2G超えるため、VFWが使えず難儀していますが、
お世話になった皆様へのせめてもの中間報告です。
DirectShowで解決できましたらまた、ご報告いたします。
474460:05/01/23 15:06:53
>>464
うまく行きました。
ありがとうございました。
475デフォルトの名無しさん:05/01/23 18:12:47
C#で動画再生のプレイヤ作ってみてるんですが、終了に凄まじいマシンパワーを要するのは仕様でしょうか。

BSプレイヤーとかさくっと終わってるんですけど、タスクマネージャを見てると、オイラのはマックスパワーガリガリ使ってます。
C++とかでDirectShowを直叩きしてるのとどんな違いがあるんでしょうか。

もしかしてAudioVideoPlaybackってDirectShowのラッパじゃないんですか?
476デフォルトの名無しさん:05/01/23 18:20:17
直なんだから、Microsoft.DirectX.AudioVideoPlayback なんか使わない(使えない)
C#で書いてないから分からないけど、マネージコードのサンプルとかはどうなの?
重いならそういうもんだろうし、軽いならクリーンアップの仕方がオカシイとか変に
イベントループに陥ってるとか
477デフォルトの名無しさん:05/01/23 18:48:24
>>476
>>クリーンアップの仕方がオカシイとか変..
終了処理を整理してみたら、普通にポンと終わるようになりました。
アドバイスThxでした。

478デフォルトの名無しさん:05/01/25 17:03:38
スレ違いなのは分かってるけど、ここにはエキスパートが
いるんじゃないかと思って質問します。

video for windows での問題

vfwでaviファイルのフレームを取得するとき、
CODECがXviDだと、AVIStreamGetFrameOpenのところで
システム側にエラーが出るんですが、原因がわかりません。

ネット検索すると、英語で同様の質問があったんですが、
誰もレス付けてないみたいで。

Xvidに関連する問題だと思うんですが、原因は分かりませんか?
479デフォルトの名無しさん:05/01/25 20:45:43
うむ、スレ違い
480デフォルトの名無しさん:05/01/25 21:14:30
>>478
たぶん、以下のように第2引数にNULLを渡して
デフォルトのフォーマットを指定してるんだろ。

AVIStreamGetFrameOpen ( pstm, NULL )

BITMAPINFOHEADERを正しく設定して
(とくにbiBitCount)呼び出してみろ。
481デフォルトの名無しさん:05/01/25 21:41:20
>>478
山勘だけど、XvidはbiCompressionにBI_YUY2あたりしかサポートして無いと思う。
BI_YUY2 = MAKEFOURCC('Y','U', 'Y', '2') ね。
482デフォルトの名無しさん:05/01/26 00:59:07
いまTVチューナー用の録画ソフトを作っているのですが
ICaptureGraphBuilderでウインドウに表示するところまでは出来たけど
なんかとてつもなく遅くてまるでコマ送りみたいな感じ?なわけで。
GraphEditで試しに繋いだのはちゃんと再生出来るし録画もばっちり。

ちなみにテレビ視聴ソフト”ぬふああ”使うと同じくノロノロです。
483:05/01/26 00:59:48
どうしてでしょうか?
484デフォルトの名無しさん:05/01/26 01:29:05
抽象的すぎ、まずGraphEditで色々な組み合わせ試せ

最終表示は標準VMRなのかオーバーレイなのか...
ICaptureGraphBuilderは単にデフォルトのレンダーをさせてるのか...
中間フィルタ作って明示してるのか...
等々

解ってればそういう質問にはならない、{その}フィルタがどうとかのと発展した会話になる
485デフォルトの名無しさん:05/01/26 14:18:19
>>482

GraphEdit によるグラフ構築のシミュレーション 外部プロセスからのグラフのロード
とかいうところを参考にして
GraphEditだけで作ったグラフと、実行しているソフトのグラフを見比べる。
CPU負荷が全然違うのなら、Windowsアプリの作り方の問題かもな。
486デフォルトの名無しさん:05/01/26 15:46:04
>>480,481
感謝感謝です。
スレ違いにもかかわらず、
ありがとう。うまくいきました。
487デフォルトの名無しさん:05/01/26 16:01:41
>>482
必要なグラフを自分で全部用意して自力でピン接続してみれ
それで正常に機能するならRander〜がタコな繋ぎ方してるのが原因
488デフォルトの名無しさん:05/01/26 20:58:08
作ったグラフを.grfに書き出して見比べる。ヘルプ上に書き出し方ある。
489デフォルトの名無しさん:05/01/26 23:12:24
Directshow始めたばっかなんですが。
エンコードにdivxつかってfourcc=m4s2なasfファイルを作りたいんですけど。
aviにならちゃんとはけているので、AsfWriterフィルタ使って

IConfigAsfWriter2::SetParamで
AM_CONFIGASFWRITER_PARAM_DONTCOMPRESSをセットして

グラフをconnectDirect()しようとするとエラーになります。
なにか呪文が足らないのでしょうか?
490デフォルトの名無しさん:05/01/27 00:54:00
#生成するものやタイプには触れませんが
connectのが良いですよ
491489:05/01/27 01:13:07
connectでつなぐと、asf writerがwindows mediaでエンコード
するモードでネゴシエートされるので、connectDirectしろと
ヘルプに書いてあったので。

そんな変なasf誰もほしくないんでしょうか?
初期のi-motionとか、小型端末系でasf食うやつって、ファイルは
asfだけど、コーデックはWMでなくてmpeg4系を指定されてるのが
意外とあるんです。
492デフォルトの名無しさん:05/01/27 01:21:06
>>482
その.grfファイルを
「プログラムによる GraphEdit ファイルのロード」でいいじゃん
493デフォルトの名無しさん:05/01/27 13:33:51
>>492

そんな機能あったのね
494デフォルトの名無しさん:05/01/28 11:12:44
テレビチューナつきキャプチャボードやUSBカメラを使うアプリを作ってるけど、キャプチャカードならチューナーフィルタから、USBカメラならチューナ等を除いてソースフィルタから、グラフを構築するように作りたい。
このようにデバイスに依存せずグラフを構築する方法ってありまするか?
AMCAPのソースが参考になったけど、あれってUSBカメラとTVキャプチャカードの両方が接続された環境だと正しく動かないんだよね。

だれかヒントちょうだい。
495デフォルトの名無しさん:05/01/28 12:08:07
>>494
Microsoft謹製 Windows Movie Maker の動作(ビデオソース、チューナ、
それぞれをユーザに選ばせる)が限界だと思われます。
496デフォルトの名無しさん:05/01/28 18:04:34
IMonikerを列挙してコンボボックスとかでユーザーに選ばせる
サンプル見たりヘルプみたりしてりゃ分かりそうなもんだが
497デフォルトの名無しさん:05/01/29 00:52:55
>>496
自動でやる方法が知りたいんです。
ふぬああみたいなのは勘弁。
498デフォルトの名無しさん:05/01/29 01:11:42
はぁ?なんか質問がずれてる気もしないでもないが
列挙でDevicePathとか固定値があればそれでもいいだろうし

#言っておくがふぬああ??なんて知らないし、〜〜みたいな・・なんて言われても知らん
499デフォルトの名無しさん:05/01/29 04:42:27
>>494
そもそも、キャプチャカードとUSBカメラ両方つながってたら、どうすんのよ。
↑の人たちも言ってるけど、選択させる方向か、
どうしても自動化したいなら、それこそアプリケーションで独自に実装するべきでしょ。
500499:05/01/29 04:43:37
どうすんのよ -> どうしたいのよ。
501デフォルトの名無しさん:05/01/29 06:01:23
どっちにしろさぁ、キャプするときに汎用性を考えて
aviにするかwmvにするか、またまたプレビューのみとかでグラフが違ったりするでしょ
>494は自分の使ってるものしか考慮していないみたいだけど、
チューナ機能の無いキャプボードもあるし、MSDVもあるし、
自動化するなら全メーカーのDevicePath毎にグラフを作るのか?そんなの現実無理だろ?
ある程度のパターンは決めておけるが。

それよりデフォルト動作で何がしたいのだ?
特定フィルタの在るMonikerを選択するのか?
デフォルトレンダしてQueryInterfaceが掛かったら..と判断するか
それとも固定グラフの作成を試みてエラーが出たら駄目と判断するか

どっちでもいいんだが、君が言ってる事は都合のいい事なだけで、
どういう実装するかはあんたが決めること。仕事で客が居るなら要件を決めること。

使う側はMonikerが複数の場合はFriendlyNameあたりで選べるようなのが良いと考える。
次回起動時に同じMonikerがあれば初期選択してもいい。←こんなのは実装次第
勝手に作られて別のキャプボードも選べないような物は要らない
502ぽこぺん:05/01/30 21:31:50
DX9の画像キャプチャでISampleGrabber使ってるんですが、
こいつがD3Dのバージョン古いやつに定義してるらしくて "d3d9.h"が正しく読み込まれません。
MSDNのISampleGrabberヘルプには
"ヘッダー : Qedit.h をインクルードすること。このヘッダー ファイルは、バージョン 7 以降の Microsoft® Direct3D® ヘッダーとは互換性がない。"
とか書いてあるんですが、これって
「ISampleGrabber使うんだったらD3D Ver9は使うな」ってことでしょうか?
回避策ってないんでしょうか?
503デフォルトの名無しさん:05/02/05 22:26:01
DirectShow使ってる人に質問。
一つの関数の使い方理解するのに丸一日使ったりする俺だけど,これは俺のスキル不足が原因で,ある程度慣れた人ならDirectX関連のプログラムってすらすらかけるの?
どうなのよ?
504デフォルトの名無しさん:05/02/05 22:30:17
>>503
大丈夫、2〜3ヶ月でなんとかソフトつくれるようになったから。
505デフォルトの名無しさん:05/02/06 00:48:15
>>504
VFWだと2〜3週間で作れるのに?
506デフォルトの名無しさん:05/02/07 00:16:48
>>503
MSDNにあるサンプルを参考にすれば理解も早いのでは?
俺はサンプルをほとんどそのまま流用しているけど。
507デフォルトの名無しさん:05/02/07 16:18:17
>>502
誰も答えてくれてないが,俺も同じ内容ではまったことがある。
結局解決できずに諦めた。

みんなはどうしてるの?
508デフォルトの名無しさん:05/02/08 01:50:16
dllの中に実態があって、それがそれ以前のqedit.hで定義されている
I/Fと同じなら、そこだけパクって無理やりコンパイラに分らせるとか。
試してないけど。
509デフォルトの名無しさん:05/02/12 02:38:31
Win64のDirectShowは、CPU使用率が少し高くなる。
まさかWOW64経由で32bit DLL呼んでいるってことはないだろうな?
510デフォルトの名無しさん:05/02/12 23:13:52
ビデオキャプチャするフィルタグラフを作成してグラフをRun→Stopすると、
毎回メモリリークしていきます。
ぐぐってみると「キャプチャデバイスのドライバによってはメモリリークする」と
書いてる開発者もいるんですが、スタックダンプを見るとリークしてる
アロケーションを実行してるのはquartz.dll内部なんです。
DShow使うの止める/フィルタグラフ止めない、以外に何か対処法ないでしょうか。
511デフォルトの名無しさん:05/02/13 13:44:42
510自己レスです。
取り忘れているIMediaEventが溜まっているのが原因でした。
512デフォルトの名無しさん:05/02/13 14:26:47
そんな事だろうとは思ってたが面倒なのでレス入れなかった
抽象的杉
513デフォルトの名無しさん:05/02/23 00:08:49
GraphEditにフィルタを追加してピン上で右クリックしてRenderPinすると
フィルタを補完して簡単に繋がってくれますが
(意図しない場合もありますが)
そのような処理はソースコードではどのような処理になるのでしょうか?

builder->RenderPin(NULL,NULL,Filter,NULL,NULL)とかだと
接続できなかったというエラーが出てしまっています。
514デフォルトの名無しさん:05/02/23 11:03:02
DirectShowでいろいろなファイルを何度も再生していると徐々にメモリ使用量と
ハンドル数が増えます。
かといって_CrtSetReportModeでリークをチェックしてもひっかからないし。

PowerDVD + DirectX9SDK 2004Summerなんですが、バグでもあるんでしょうか?
515デフォルトの名無しさん:05/03/02 00:12:01
Microsoft DirectX 9.0 SDK (February 2005)
をインストールしたんだけど、DirectShow関連のヘッダやらlibが見つからん…
8の頃は一緒にあったような気がしたんだけど、どこにいったん?
516515:05/03/02 00:44:26
別途Extrasをダウンロードしたら入ってスマタ。
517デフォルトの名無しさん:05/03/04 00:12:41
IVideoWindowでビデオウインドウの表示領域を
ビデオのサイズにぴったりと合わせるにはどうすればいいの?

そのまま720,480とか指定したんじゃ枠の分小さくなるでしょ?
枠のサイズはLUNA等で環境によって違うから定数使うわけにも逝かないし
518デフォルトの名無しさん:05/03/04 08:40:36
>>517
IBasicVideo::GetVideoSize
519デフォルトの名無しさん:05/03/04 09:51:41
>>517

子ウインドウ枠の1ピクセルや2ピクセルくらい減ってもいいだろ
520デフォルトの名無しさん:05/03/04 18:47:15
>>517
AdjustWindowRect?
521デフォルトの名無しさん:05/03/04 22:16:06
枠をなくせば考える必要なし
put_WindowStyle(WS_CHILD );
put_WindowStyleEx(~WS_EX_CLIENTEDGE);
でIBasicVideo::GetVideoSizeの値からput_Width/Height;
522デフォルトの名無しさん:05/03/05 19:45:02
9.0あたりからDirectShowはExtrasに移されたみたいだけど
DirectShowに代わる新しい仕組みでもできたの?
523デフォルトの名無しさん:05/03/05 22:11:42
ない
524デフォルトの名無しさん:05/03/08 23:08:58
なんでこう、ライブラリの名前がコロコロ変わりますか?
525デフォルトの名無しさん:05/03/08 23:14:36
>>524
MS>コロコロ変えないと、新しいものを買って&使ってくれないじゃないか
MS>MSDNの変更ネタにもなるしな!
526デフォルトの名無しさん:05/03/08 23:38:53
サポート料もがっぽり
527デフォルトの名無しさん:05/03/10 23:32:52
DirectShow使うとBMP形式の構造体を動画にできたりしますか?
528デフォルトの名無しさん:05/03/10 23:37:05
たぶんキミの想像とは恐ろしく異なるだろう。
529デフォルトの名無しさん:05/03/11 01:00:07
意味わからんが、パラパラ漫画のイメージか?できるぞ。
530デフォルトの名無しさん:05/03/11 16:25:59
動画の形式を問わないのなら Windows Media SDK の方が楽だと思うけどなぁ・・・
531デフォルトの名無しさん:05/03/11 16:26:21
Windows Media Format SDK だった。
532デフォルトの名無しさん:2005/03/21(月) 19:07:52
extras入れて見たが、サンプルすらコンパイル出来ない状態だ・・・
未定義のエラーが出まくり。 VC6じゃもう駄目なのか?

DWORD_PTRとかそれらしいのは定義出来ても、PinとかのDShowの
根本が未定義と言われてしまってはどうにも出来ん・・・
533デフォルトの名無しさん:2005/03/21(月) 20:11:40
baseclassesはbuildした?
534デフォルトの名無しさん:2005/03/21(月) 20:29:35
>>533
コンパイル通って、リンクの段階で未解決だかと言われてから挑もうと
思ってましたが、先に作らないと駄目なんでしょうか?

これVC6でLIBにするのかなり無理がありそうな・・・・・・・
535デフォルトの名無しさん:2005/03/22(火) 17:46:22
半分挫折な予感がしてましたが、彷徨ってたらVC7のXML>VC6の
プロジェクトコンバータを発見、DWORD_PTRとLONG_PTRを定義し、
二カ所キャストしたらBaseClassesは無事ビルド出来、以前書いた
ソースも殆ど手直しせずにコンパイル出来ますた。

ここで詰まった話全く見掛けませんでしたが、VC6使いの方々は
皆自力でメイクファイル書いてらっしゃるのでしょうか?
それとも2/9/2005以前のリリース分にはVC6用のプロジェクトも
付いてたんですかね?
536デフォルトの名無しさん:2005/03/22(火) 18:47:12
サンプルをいじくって勉強しているのですがDumpフィルターをビルドして
GraphEditからはいじれる事を確認したのですが、自分でプログラムから
扱うにはどうしたらいいのでしょうか。
pBuilder->SetOutputFileName(&CLSID_Dump, L"C:\\hoge.dat", &m_pMux, &m_pSink);
こんな感じであってますか? ただ上記の様に書くと
> captest error LNK2001: 外部シンボル "_CLSID_Dump" は未解決です。
とリンクエラーが出てしまいます。何をリンクもしくはコードとして何を書けば
使えるようになるんでしょうか。
537デフォルトの名無しさん:2005/03/22(火) 19:08:37
DumpフィルターのGUIDをCLSID_Dumpとして定義するんじゃないかね。多分。
538536:2005/03/22(火) 22:01:09
DumpUIDs.hに

DEFINE_GUID(CLSID_Dump,
0x36a5f770, 0xfe4c, 0x11ce, 0xa8, 0xed, 0x00, 0xaa, 0x00, 0x2f, 0xea, 0xb5);

とあるんですがこれをインクルードするとリンクエラーが出るんですよね。
539536:2005/03/22(火) 22:10:10
ぐは、自己解決しました。
#include <initguid.h>をDEFINE_GUIDの前にインクルードしてやると
実体が出来るんですね。ばっちりダンプされました。
540デフォルトの名無しさん:2005/03/25(金) 17:47:25
>strmbasd.lib(strmiids.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
Debugでビルドすると、こんな事言われてしまうのですが、解消する事は
出来るのでしょうか。
strmiidsは、\Lib\x86にlibとして入ってるので、再コンパイル出来ませんし・・・
541デフォルトの名無しさん:2005/03/25(金) 22:08:55
>>540
strmbasd.libとちゃうのん?
542デフォルトの名無しさん:2005/03/25(金) 22:15:56
>>541
strmbasd.lib(strmiids.obj)のメッセージから、strmbasd.lib構築の際に
リンクしたstrmiids.libに問題があると思ってたのですが、strmbasd.libの
構築方法で回避出来るのでしょうか?

一応デバッグ関連の設定ちまちま弄ってはみたのですが、何やっても
同じエラーでした・・・
543デフォルトの名無しさん:2005/03/27(日) 04:06:35
明るさとかコントラスト変えるにはどうすれば良いですか?
544デフォルトの名無しさん:2005/03/27(日) 10:12:11
DirectShowで動画を表示する際にその動画に枠を付けたりしたいのですが、
リージョンだとかレイヤードウィンドウを使ったウィンドウを被せたりする
と、描画性能がやっぱり落ちてしまうのでしょうか?

やはり枠を付けるのならDirectShowの映像ミキシング機能を使うべきなので
しょうか?

当方では高い描画性能を必要とするアプリを書いております。
545デフォルトの名無しさん:2005/03/27(日) 15:29:22
>>544
自分で試すって事をしないのかい?
546デフォルトの名無しさん:2005/03/27(日) 16:37:50
ZSnes(DirectDraw?)でヨッシーのパネポンを動かし(Windowモード)、その上でネットに転がっている不定形時計を2種類(2つ同時にでは無い)動かしてみました。
一方の時計アプリはレイヤードウィンドウ、もう一方は不定形リージョンを使用していると思われる物です。
時計アプリその物の負荷をちゃんと差し引いて考えた所、両アプリの場合でしっかりと重くなる事を確認致しました。
失礼致しました。
547デフォルトの名無しさん:2005/04/06(水) 14:52:49

GraphEditで、キャプチャデバイスのプロパティで「明るさ」や「コントラスト」
を設定できますが、これをプログラム内から変更する方法を調べています。
智慧をお貸しください。

…DirectShowとは関係ないかも知れませんが!
548デフォルトの名無しさん:2005/04/06(水) 15:30:39
>>547
IAMVideoProcAmp
549547:2005/04/06(水) 18:46:10
>548
ありがとうごぜぇやす!出来ました!
何故これに気付かなかったのか…。
不甲斐ない。
550デフォルトの名無しさん:2005/04/06(水) 19:05:31
>>542
ところでstrmbasd.lib構築時とアプリでの使用するランタイムライブラリは一致してる?
551デフォルトの名無しさん:2005/04/07(木) 20:19:55
ballをベースにソースフィルタを作ってるんですがFillBufferを2回ほど呼んだところで
FillBufferが呼ばれなくなるんですが何が原因なのかさっぱりわかりません。
トレースしてみるとIMemInputPin::Receiveでブロックしてしまっているようです。
何が原因かわかる人いますか?
552デフォルトの名無しさん:2005/04/08(金) 05:44:21
>>550
デフォだった、マルチスレッド(DLL、デバッグ)で揃えてみたり色々
してみましたが、変わりませんでした。

ちなみにstrmiids.libは 2004/10/29 309,056byteですが、皆さんの所と
同じ物でしょうか?
553デフォルトの名無しさん:2005/04/13(水) 00:48:07
質問。
DirectShowでVBR圧縮されたMP3を再生すると、取得できるDurationが実際より長くなるという現象がおきたのですが
これに関する情報ありませんか?
554デフォルトの名無しさん:2005/04/13(水) 02:56:45
平均ビットレートとデータサイズから計算してるからどうしてもずれるんじゃねえ?
555553:2005/04/13(水) 03:08:14
WinAmpだとずれてないぞ!怠慢だ!
mp3しか調べてないが、まさかwmaとかでもVBRだとずれるのかな?
一度wavに変換するという糞手法を使えば解決可能ではあるが……
556デフォルトの名無しさん:2005/04/17(日) 18:03:27
DirectShowでwmaを再生するプログラムを作っています。
(サンプリングじゃなくて音の)周波数やゲインはどうやったら
調べられますでしょうか?
557デフォルトの名無しさん:2005/04/17(日) 18:40:31
ムリ
558デフォルトの名無しさん:2005/04/17(日) 20:02:21
1.なんらかの手段でデコードする(まえにちょっと調べたんだが、サンプルグラバ使うかOutputFilter自作?)
2.生データが手に入ったらあとはFFTで楽勝
559デフォルトの名無しさん:2005/04/22(金) 03:32:28
>>552
僕も同じ症状になりました。
VisualC++ 6.0を使用していませんか?
だとしたら、DirectX SDKのサポート対象外というのが原因のようです。
ttp://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=25558

VisualStudioをバージョンアップするか、SDKを古いものにすればいい話ですが、
やっぱりお金をかけずに新しいものを使いたいですよねぇ……
560デフォルトの名無しさん:2005/04/22(金) 03:37:17
そんな彼方達に、VCTK。
お金をかけずに最新環境使いたいならこれで我慢すべし。
最新のIDEも使いたいとかなめたこと言ってるならしらんが。
561デフォルトの名無しさん:2005/04/23(土) 17:17:01
DirectShow で 無音検出 できますか?
562デフォルトの名無しさん:2005/04/23(土) 17:39:24
出来るが、君には出来ない。
563デフォルトの名無しさん:2005/04/24(日) 20:59:35
キャプチャにVFWを使ってレンダラにDirectShowを使っているアプリがあって、
偶にDirectShow関係のスレッドでデッドロックを起こすんだけど、この原因と
してVFWとDirectShowの同時使用が絡んでいるという事はあるのでしょうか?
564デフォルトの名無しさん:2005/04/24(日) 21:07:18
あるんじゃないの
565デフォルトの名無しさん:2005/05/17(火) 19:45:24
フィルタ作成に詳しい方にお聞きします。

ファイルのソースフィルタとスプリッタの間に入る
Streamを調べるフィルタを作ろうとしています。
sample\filters\Grabberをベースにしていますが
そのままだとプッシュフィルタなのでプルフィルタに改造しようと
CSampleGrabberInPinにCPullPinをヘルパークラスとしてメンバに追加し、
CSampleGrabberOutPinにIAsyncReaderを追加しています。

とりあえずGraphEditでソースと接続するところまではできたのですが
次のスプリッタとの接続処理中にCTransInPlaceFilter::DecideBufferSizeで
入力ピンのアロケータを取得しようとしたところでNULLが返り
例外で落ちてしまいます。(入力ピンのm_pAllocatorがNULLらしい)

こういった用途のフィルタの場合、それぞれのピンのアロケータは
本来的にはどのタイミングで割り当てられるものなんでしょうか?
私の実装がおかしいんだとは思うんですが、
入力ピンが接続が完了しているのにアロケータが取れてないのがおかしいのか
出力ピンがそのタイミングで入力ピンのアロケータを参照するのがおかしいのか
まったく見当がつかない状態でほとほと困っています。

このあたり見れ、とかアドバイスおながいします。
DirectShow資料なさすぎで…( ´・ω・`)
566デフォルトの名無しさん:2005/05/18(水) 13:19:37
>>565
スプリッタの入力ピンは(出力側の)IAsyncReaderで動作するわけだから、
自前のアロケータは持たないんじゃない?

CSampleGrabberOutPinではダメだ、ってこと。
567デフォルトの名無しさん:2005/05/18(水) 13:21:44
>>565

>ファイルのソースフィルタとスプリッタの間に入る
>Streamを調べるフィルタを作ろうとしています。

追記。もっと言えば、スプリッタはIAsyncReaderを用いてファイルを
適当に読んで動作するわけで、ファイルソースとスプリッタの間で
上の引用部にある「Stream」なるものは存在しないと考えた方が良い。
568デフォルトの名無しさん:2005/05/18(水) 14:49:41
>>566
> スプリッタの入力ピンは(出力側の)IAsyncReaderで動作するわけだから、
> 自前のアロケータは持たないんじゃない?
> CSampleGrabberOutPinではダメだ、ってこと。

改造した CSampleGrabberOutPin は CTransInPlaceOutputPin と IAsyncReader から派生していて、
IAsyncReader::RequestAllocator() でスプリッタのアロケータ要求に対して
CSampleGrabberInPin のアロケータを返すような流れで考えていたのですが、
この辺の処理がちゃんと実装できていないか、
スプリッタから見て2つ上流のアロケータを使いまわそうとすること自体が
間違っているような気がしてきました…
えと、まずは RequestAllocator() の実装が正しいのかチェックしてみます。
569デフォルトの名無しさん:2005/05/18(水) 14:55:46
>>567
> 追記。もっと言えば、スプリッタはIAsyncReaderを用いてファイルを
> 適当に読んで動作するわけで、ファイルソースとスプリッタの間で
> 上の引用部にある「Stream」なるものは存在しないと考えた方が良い。

そうですね…単にファイルをぶつ切りにしたものでチャンクとかそのままかも。
フィルタができれば CSampleGrabber::Transform() で吐いて調べられるんですが…
最悪自前でフォーマット解析を覚悟しておきます。
570デフォルトの名無しさん:2005/05/18(水) 15:56:53
もし僕が同じことをするなら、
CTransformFilter にしないで CAsyncFilter から派生させて
入力ピンを追加するという実装にすると思います。
571デフォルトの名無しさん:2005/05/18(水) 19:37:14
>>570
> CTransformFilter にしないで CAsyncFilter から派生させて
> 入力ピンを追加するという実装にすると思います。

sample\Async\Filter の CAsyncFilter から IFileSourceFilter を削って入力ピンを付けるってことですよね。
ほとんど CBaseFilter に近い形になって、フィルタ内のピン同士を連携するメソッドを
たくさんオーバーライドしないといけないような印象があるんですが実装は難しくないですか?
CTransFormFilter の中身とか全然見てなかったのでちょっと躊躇しています。
この辺を理解してないのもマズいとは思うんですが、スキルいっぱいいっぱいなので…( ´・ω・`)
あとでもうちょっと詳しく見てみます。
572デフォルトの名無しさん:2005/05/24(火) 21:57:42
一連のストリームの中にPullPinが2つって。相当うまく組まないとヘタるぞ
(ストリームの起点が複数存在することになる

そのフィルタを作って、どんなフォーマットデータの何を調べたいのか
それを教えてくれれば代替案が出てくるかもよ
573デフォルトの名無しさん:2005/05/25(水) 01:28:22
>>572
SampleGrabberだとメジャータイプMEDIA_videoしか横取りできませんが
それのMEDIA_stream版を作りたいのです。
サブタイプはAVI、MPEGあたりになるでしょうか(まだそこまで絞ってません

とりあえずピン接続は完了してて
AsyncFile->SampleGrabber改->Splitter->decoder->Render
まで繋がるところまではきました。
でもフィルタグラフをPlay(orPause)状態にすると
基底ライブラリが例外を吐いて落ちてしまいます。
CPullPinが読み取り用のワーカースレッドを起動しててその中で落ちてるんですが
サブスレッド内ではブレークで止めることが出来なくてどこなのかはわかりません。
泣きそうです( ´・ω・`)

SampleGrabber上流のアロケータがらみの問題のような気はするんですが
アロケータはAsyncFileとSampleGrabberのどっちが提供してるのかなぁ…

他にもいろいろヒントになるので適当に投げてもらえると助かります。
574デフォルトの名無しさん:2005/05/25(水) 20:27:17
>>573

570 に一票

てーか漏れなら CBaseFilter と CBasePin から作るけど

・入力ピンでは接続先出力ピンの IAsyncReader を取得する
・出力ピンでは、すべての要求を入力ピンで取得した IAsyncReader に丸投げする
・フィルタ本体は何もしない

これだけでしょ?
575デフォルトの名無しさん:2005/05/25(水) 22:12:46
>>574
いや、そんなに簡単じゃないって。CPullPinのコード読んでみーよ
グラフがランするとPullPinがReaderに送信要求を出し
Readerが要求に答える(データを送信する)って流れだぞ?
※PauseでPullPinのワーカスレッドが起動する

>>573
>それのMEDIA_stream版を作りたいのです
Streamをグラブしてもあんまり意味ないと思うが。ソースフィルタはあくまで
サンプル流すだけで、1サンプル1フレームで完結してるなどの保証は無い
単にデータ解析したいだけなら、PullPin繋いでCompleteConnect中で
取得したIAsyncReaderのSyncReadでいいんじゃね?
576デフォルトの名無しさん:2005/05/25(水) 22:31:30
NullRendererのような感じで入力ピンがプルモデル、でどうでしょう
ダウンストリームに繋ぐ必要あるのかい?
577デフォルトの名無しさん:2005/05/25(水) 22:47:55
自前アロケータを作成しフレームを自作のDIBバッファに
格納できるようにしました。
表示する際のサイズを可変にして拡大縮小したいいのですが、
バッファに展開する際にサイズ可変にすることは出来るので
しょうか?最悪取得したDIBを表示させる際にサイズ変更し
ようかと思っているのですが。
接続時にメディアタイプを直接指定でVIDEOINFOHEADERの
rcTarget,rcSrcを変更してもエラーになってしまいます。

アドバイスよろしくお願いします。

578デフォルトの名無しさん:2005/05/26(木) 00:17:30
>表示する際のサイズを可変にして
表示ってレンダラ?ならフォーマットチェンジ
579577:2005/05/26(木) 01:19:33
>>578
返事ありがとうございます。
表示される際のサイズ可変というのは、例えば
128×128のムービーファイルがあったとして、それを256×256や、
64×64のサイズで表示したいということです。ウインドウサイズ等にあわせて。
で、そのときに元のオリジナルサイズのデータは取得できるようになったのですが、
伸縮まで行った結果をバッファが直接受け取れるのでしょうか?

レンダラはCBaseVideoRendererを継承したものを使用しているのですが、
フォーマットチェンジが今ひとつよくわかりません。
もう少しヒントいただけますでしょうか。よろしくお願いします。
580デフォルトの名無しさん:2005/05/26(木) 11:02:51
>>575
んー CPullPin に相当する部分の処理は下流につながってる AVI スプリッター
なり、MPEG スプリッターの入力ピンがやってくれるはずなので。

・ストリームグラバの入力ピンは FileSource フィルタの出力ピンと接続できる
・ストリームグラバの出力ピンは FileSource フィルタの出力ピンに見える
 (こいつに下流フィルタの CPullPin 相当部分が要求を出す)

を達成できれば質問主の目的は解決するだろう。

ただ、基本的にスプリッターフィルタの IAsyncReader への要求ってランダム
アクセスになることが多いから、データを横取りしてもその先が大変だと思う。
581デフォルトの名無しさん:2005/05/26(木) 21:22:32
>>580 俺が勘違いしてたよ ごめんよ馬場さん
ストリームグラバの出力ピンがスプリッタの入力ピンと繋がる時に
(ストリームグラバの入力ピンが持ってる)IAsyncReaderのポインタを
使うってことね ならストリームは流れそう

だけど、グラバフィルタのどこでサンプル捕まえる?
582デフォルトの名無しさん:2005/05/26(木) 21:44:13
>>579
表示の映像に関してはレンダラ(オーバーレイ)が勝手に伸縮してくれるよ
グラバなんかで取得するバッファについてはサンプルに格納されるサイズそのまま
なので自分の都合で伸縮する必要がある

RGBにしてもYUY2にしても、それほど難しくないから自分で伸縮ルーチン書くと良いよ
583デフォルトの名無しさん:2005/05/26(木) 23:34:58
>>582
どうもありがとうございます。
取得したフレームをムービー以外のDIB画像と合成したり
する必要上オーバーレイの手法ははずしています。
今現在アロケータからバッファを取得しているDIBクラスの
ほうには拡大縮小の機能を実装しているので目的の達成自体は
可能なのですが、やはり処理速度を考えると伸縮まで行った
バッファを展開してもらえる方法がないのかと思いまして
今回の質問をしました。
それでは取得したバッファを自前で拡大縮小する方向で行おう
と思います。
どうもありがとうございました。

584デフォルトの名無しさん:2005/05/27(金) 13:11:58
DirectShow のサンプル PLAYWND, CEPLAYIT をコンパイルして実行しようとしているのですが、
"Cannot find 'PLAYWND'(or one of its components). Make sure the path and file name are correct and that all the required libraries are available."
といわれて実行できません。
リンクしたlibの内、対応するdllがないものは strmiids.lib のみですが、これが原因なのかと疑っているものの、strmiids.dll などというものは見あたらず、
かといって、これをリンクしないと、_IID_IBasicAudio,_CLSID_OverlayMixer,_CLSID_FilterGraph,_IID_IGraphBuilder などのシンボルを解決できずにリンクできません。
途方にくれているところです。知ってる人、何か助言ください!

環境: Platform Builder 5.0
OS: Windows CE 5.0
プロジェクトの設定(Addtional libraries):
$(_PROJECTROOT)\cesysgen\sdk\lib\$(_CPUINDPATH)\coredll.lib $(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\Ole32.lib
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\commctrl.lib $(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\commdlg.lib
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\strmiids.lib
585デフォルトの名無しさん:2005/05/27(金) 13:14:41
ageてしまった...m(__)m
586573:2005/05/30(月) 14:28:32
ちょっと修羅場ってて返答が遅れております。すみません。

>>575-576
フレーム単位の加工ではなくて、
PSやTSのパケットヘッダの抜き出しとかを
ダウンストリームに流しつつ行えないかなーと思ってます。
なのでフィルタの繋がりは変えられそうにないんですよー。

>>581
> だけど、グラバフィルタのどこでサンプル捕まえる?
出力ピンのIAsyncReaderの各メソッドでは
入力ピンのPullPin->GetReader()で取ったIAsyncReaderの同名メソッドを
引数そのままで呼び出すようにしてますので
SyncRead()あたりで引っ掛ければいけそうですね。
この流れだとフィルタのTransformメソッドには来ないかも。

基本的には580さんの考え方と同じだと思うんだけど
何がいけないんだろ…( ´・ω・`)
やっぱCBaseFilterとCBasePinから作るしかないのかなぁ。うーん。
587デフォルトの名無しさん:2005/05/31(火) 16:53:52
ものすごい初心者で申し訳ないのですが、

Dim fm As FilGraphManager = New FilgraphManager
Dim ime As IMediaEvent = fm
Dim ip As IMediaPosition = ime
ip.Rate = 2.0

て書いたら(VB.net)、「実装されてません」と言われました。
どこに問題がありますか?

588デフォルトの名無しさん:2005/05/31(火) 17:06:00
適当に(←適切に、というような意味)フィルタ追加を追加してピンも
ちゃんと繋いであげないと、IMediaPosition等は取得できない。

初めてなら、適当なファイルでRenderFile とかするのが簡単。
589587:2005/05/31(火) 17:37:28
さんくす。画像がないと意味ないってことか…
サンプル見て、↓こんなのを書いてみました。

Dim timeline As AMTimeline = ....適当データ

mRenderEngine = New RenderEngine

Call mRenderEngine.SetTimelineObject(timeline)
mRenderEngine.ConnectFrontEnd()
mRenderEngine.RenderOutputPins()

Call mRenderEngine.GetFilterGraph(mFilterGraph)
Dim fm As FilGraphManager = mFilterGraph

fm.Run()

Dim ime As IMediaEvent = fm
Dim ip As IMediaPosition = ime
ip.Rate = 2.0

Rate行がなければ画像が出てくるのだが、
このままだと「実装がありません」と言われる。
AMTimelineに条件でもあるのかな?
590デフォルトの名無しさん:2005/05/31(火) 17:49:04
単にそのグラフがRateを実装していないだけでは?
ip.Duration などは取得できる?

DirectShow のコンポーネントのうち、主にスプリッタやパーサ、ソースフィルタが
IMediaPosition を実装しているわけだけれども、メディアの種類毎にある各種の
フィルタが必ずしもなんでも実装しているわけではない、ということ。
再生レート変更不可能なものも普通に存在する。
591587:2005/05/31(火) 18:22:55
Durationは取得できる。
RenderEngineが使うグラフはたぶんIMediaPositionを実装してない場合があるという意味ですか?
RenderEngineからグラフを取得してるので
自分でグラフを選んでいるわけではない点がまずい?
どうすれば実装してるものを選べますか?
592デフォルトの名無しさん:2005/05/31(火) 18:47:48
>>591
COM では「この機能は実装していない」というエラーコード(E_NOTIMPL)が存在します。
で、今回の Rate プロパティのように、インタフェイス自体は実装していても、
その中の特定の機能が実装されていない、ということもあるわけです。

>どうすれば実装してるものを選べますか?
簡単な方法はありません。
Rateでの速度調整はあきらめて、タイマー等で CurrentPosition を変更して
早送りなどをするのが妥当だと思います(うまくいかないこともありますが)。
593587:2005/06/01(水) 09:06:41
>592
たびたびすいません。
>簡単な方法はありません。
簡単でなければ方法はあるんでしょうか?
594デフォルトの名無しさん:2005/06/01(水) 13:20:34
>>593
>簡単でなければ方法はあるんでしょうか?

set_Rate をサポートしているスプリッタやパーサフィルタを持つ
グラフを自前で構築して、それを用いればよいわけです。

ファイルからの再生で単に加速や原則だけしたいのであれば、
オーディオレンダラ(多くの場合基準クロックを供給する)を自作して、
音声の加減速処理を行いつつ速いクロックや遅いクロックを供給する
という手段もあります。
595デフォルトの名無しさん:2005/06/04(土) 12:56:34
DirectShowを使って、複数の静止画からaviファイルを作成することは可能でしょうか?
596デフォルトの名無しさん:2005/06/04(土) 13:38:47
できるよ。 プッシュソースが静止画連続で読み込んで
タイムスタンプつけてポンポン送ればおーけー 
静止画用意するほうが大変だと思う。
597デフォルトの名無しさん:2005/06/21(火) 00:07:16
595ではありませんが似たような質問。
DirectGraphicsで描画したサーフェスをムービーとして取り込もうとしています。
↑を参考に、CPushSourceBitmapを改造して、ようやくサーフェスの絵がAVIに出力できたというところです。

それで、現在はFillBufferとDirectXの画像が非同期なので、これを同期させてやりたいと思っています。

IMediaSeekingを使ってフレームの最終フレーム数と現在のポジションを取得できるようですが、
CPushSourceBitmapやCPushPinSourceBitmapとIMediaSeekingがどのようにつながっているのかイメージできません。

なんとなくIMediaSeekingがどこかでpinとつながっていて、pinが必要な値を返すのだろうと考えたのですが、
pinやCStreamにそれらしいメンバ変数やメソッドはありません。
このあたりどのように考えればよいのでしょうか?
598デフォルトの名無しさん:2005/06/21(火) 00:08:40
おっと、ageておきます。
599デフォルトの名無しさん:2005/06/21(火) 00:24:54
VFWなら十数行で書けると思うよ。

デバッグとか個人的な物で2Gオーバーとか考える必要無いなら、
VFWで書いてしまうのがてっとり早いと思う。
600デフォルトの名無しさん:2005/06/21(火) 00:33:03
ありがとうです。

実はVFWは以前使ったことがあります。
それで非圧縮のAVIに出力していました。だいぶ昔のことです。

やっぱりVFWがいいのかなぁ…。
601デフォルトの名無しさん:2005/06/21(火) 01:09:40
VFWSDKのみでの話なら解るが、
DirectShowでなんで非圧縮の話を持ち出すんだ
つか、最終的に得たいファイルはaviなのか
602デフォルトの名無しさん:2005/06/21(火) 02:09:55
・・・VFWでも普通にコーデック選択して圧縮出来るが。
603デフォルトの名無しさん:2005/06/22(水) 00:11:02
プッシュソースならあれだCPushSourceSeekingとか
そんな名前だったけか?
とにかくソースの出力ピンクラスを派生元に向かって見ていけば
IMediaSeekingがいるよ たぶん いなかったらいない
604デフォルトの名無しさん:2005/07/12(火) 21:56:08
DirectShowでMPEGから音声を抽出するのは可能でしょか?
605デフォルトの名無しさん:2005/07/12(火) 23:20:18
音が入ってるならヨユー
606デフォルトの名無しさん:2005/07/21(木) 15:48:14
GraphEdit使ってDVDを再生してみたんですが
CyberLink DVD Navigatorを使うと上手く再生できますが
DVD Navigatorだと再生できません。
なぜでしょうか?
607taka:2005/07/21(木) 20:47:32
DirectShow サンプルについている VMR\Text プロジェクトについての質問です。


Text.cpp ファイル20行目に

#include "vmrutil.h"

とありますが、このファイルは VMR\inc フォルダに入っているのであって、
Textプロジェクト内には挿入されていないですよね。
どうしてこのプロジェクトはこのファイルを参照することができるのでしょうか?
教えてください。

Visual Studioの環境設定なのでしょうか?
それともコード中のどこかでこのファイルを参照できるように設定しているのでしょうか?


初歩的な質問ですみませんが、よろしくお願いします。
608デフォルトの名無しさん:2005/07/21(木) 20:57:20
プロジェクトのどこかでこのファイルを参照できるように設定しているのでしょうな
609taka:2005/07/21(木) 22:05:00
>608
お返事ありがとうございます。
その設定画面の場所を教えていただけますか?

610デフォルトの名無しさん:2005/07/21(木) 22:57:05
それは断る
611デフォルトの名無しさん:2005/07/22(金) 03:29:04
>>607
スレ違いだな。
612デフォルトの名無しさん:2005/07/22(金) 16:10:12
Asyncで大体100Mを超えるファイルを再生すると、途中で EC_COMPLETE します……。
読み込み速度を、 0x8000 で動かしていると、 0x65b000 からの読み込みを最後に終了。
実際は Length( ... ) でもって取得しても 0x8a6e804 と存在はしているのですけどねぇ。
613デフォルトの名無しさん:2005/07/22(金) 22:40:06
なんじゃそりゃ
614612:2005/07/23(土) 16:43:00
てっきり書き忘れてたけど、
DirectX9実践プログラミングのSampleのAsyncで140Mほどのmpgを再生すると途中で再生が終了しちゃうのですよ。
615デフォルトの名無しさん:2005/07/23(土) 23:21:08
速度が0x8000 とか意味わかんない
616612:2005/07/24(日) 07:07:32
あ、変な言い方だったし、別に書く必要は無かったかな?
えっと、起動時の第2引数。通信速度、だったっけ、あそこは。
そこに適当に32768と入れてる。まぁ、これが1024だったところで、うちでは同じ幻象が起きてましたけど。
617デフォルトの名無しさん:2005/07/24(日) 11:50:04
>>612 もっと人に伝えられる文が書けるようになってからおいで
618612:2005/07/24(日) 21:52:02
うっ……ごもっともですorz
色々書きすぎて何のことやらわからないね……。

簡潔に言うと、
DirectX9実践プログラミングのSampleのAsyncで140Mbyte以上のmpgを再生した時に
正常に再生は始まるけど、途中で終わっちゃうのです。

結構中身を色々とデバッグで覗いて見るも原因が分からないのです(;´Д`)
619618:2005/07/25(月) 17:23:12
( ゚д゚)ハッ! よく考えたら……
DirectX9実践プログラミングのSampleじゃなくて、DirectX9SDKのでしたorz
620618:2005/07/25(月) 18:02:19
……今思ったこと。

初心者質問スレに書いた方がよかった希ガス orz
あまり気長にも待てないけど……それでも気長に待とう o...rz
マルチするのもアレだし(;´Д`)
621デフォルトの名無しさん:2005/08/05(金) 23:31:31
XPのマシンでDirectShowでwmvを再生するとCPU使用率が100%になったまま止まってしまいました。
一旦Ctrl+Alt+Deleteからタスクマネージャを起動して止めようとすると、何故か再生が始まっています。
ちなみにMCIウィンドウから再生しようとしても同じ症状が起こってしまいました。

ちなみに設定→読み込みまでは何ともなくて、再生メソッドに来たとたん止まります。
これってwmvの方に何か問題があって止まってしまうんでしょうか?
622デフォルトの名無しさん:2005/09/13(火) 17:09:53
USBカメラからの画像を加工して表示したいのですが、
フィルタを作るのと、
ISampleGrabberにてイメージを取得して加工し、DrawDibDrawで描画するのは、
どっちがいいのでしょうか。簡単な方はどちらでしょうか。
623デフォルトの名無しさん:2005/09/13(火) 23:45:27
サンプルもあるのでTransformFilterを使って実装するほうが簡単だと思う。
624 ◆NNTeJWxM4g :2005/09/14(水) 04:47:17
test
625デフォルトの名無しさん:2005/09/14(水) 12:38:52
>>623
ありがとうございます。フィルタ作ってみます。

新たに質問ですが、フィルタって、動作中に外部からイベントやらなんやらで値を与えて
処理を変化させることってできますか?
626625:2005/09/14(水) 17:59:14
ちょっと調べてみたところ、インターフェースを作ればいいんですね。
結構いろんなことが出来るんですね。楽しいです。
627デフォルトの名無しさん:2005/09/14(水) 19:53:33
DirectShowを使って不要部分の切り取るアプリケーションを作成しています。
IMTimelineを使用して必要な部分を設定し、IRenderEngineを通じてpCaptureGraphBuilder2
から出力をしています。この部分はほぼサンプル通りです。
ところが、元のファイルが720×480、29.97fpsのDV-AVIファイルなのですが、
これで出力したファイルは320×250、15.00fpsの非圧縮(RGB)ファイルになってしまいます。
元の形式のまま出力したいのですがやり方がわかりません。どのようにしたら元の形式で出力できるのでしょうか。
ご存知の方よろしくお願いいたします。
628デフォルトの名無しさん:2005/09/14(水) 23:07:45
>>627
IRenderEngineの代わりにISmartRenderEngineを使えばできるはずです。
でも、使用するCODECが対応している必要があります。
AVIだったら大丈夫だと思うのですが・・・。
629627:2005/09/15(木) 22:57:15
>>628
ISmartRenderEngine使ってできました。thx
元ソースと同じ形式で出力するので、CODECは必要なかったです。
630デフォルトの名無しさん:2005/10/11(火) 00:19:03
フィルタのISpecifyPropertyPagesで設定できる項目をプログラムからさわる方法をご存知ありませんか?
VideoCaptureFilterに付いてるノイズリダクションの設定をいじりたいのです。
どなたかお知恵を拝借お願いします。
631デフォルトの名無しさん:2005/10/11(火) 01:31:45
>>630
VideoCaptureFilterって何なのかよくわからんが、プロパティページはあくまでデバッグ用UIだからな
別インターフェースでノイズリダクションの取得/設定が行えるようになってるはず
それ探してみ
632630:2005/10/11(火) 09:23:58
>>631
サンクス.プロパティはデバッグ用だったのか.
IKsPropertySetがそれっぽい感じがするので試してみます.
ちなみに,AM_KSCATEGORY_CAPTUREカテゴリのフィルタです.
633KT06:2005/10/25(火) 16:38:59
VC++でUSBカメラの動画像を表示するプログラムを作成しているんですが、
VBのピクチャーボックスなどに表示できたりはできるのでしょうか?
634デフォルトの名無しさん:2005/10/25(火) 23:17:43
所詮COMだし、できるだろー きっとな
ビデオレンダラを こう チャチャッと組んで ボーンとな VB使ったことねーケド
泡盛うめえええ
635デフォルトの名無しさん:2005/10/30(日) 09:30:14
>>633
へんな奴に回答されるとまともな人がレスつけなくなるから困るよな
636デフォルトの名無しさん:2005/10/30(日) 15:02:29
その程度の質問ってことだがな。
637デフォルトの名無しさん:2005/10/30(日) 17:30:02
音声キャプチャデバイスからサンプルグラバにつないでCallbackで音声を取ってるんですけど
正確に測っていないから分らないけど1秒単位でしか取得できていないみたいです。
(サンプルのデータ数が88200バイトだから多分ステレオ、44.1KHzで1秒だとおもう。)
もっと細かく取れないでしょうか?

638デフォルトの名無しさん:2005/10/30(日) 22:14:50
まだ書き込んでない。のろまだなぁ。さっさと答えろよ
639デフォルトの名無しさん:2005/10/30(日) 22:56:28
グラフ構成くらい書けスカタン
640デフォルトの名無しさん:2005/10/31(月) 00:04:55
というか質問した5分後にはわかっちゃったから別にいいんだけどね。
641デフォルトの名無しさん:2005/11/01(火) 08:58:06
IVMRSurfaceAllocatorNotify9の実装が書かれているファイルってどれでしょうか?
サンプル漁ってるのですが見当たりません・・・た、助けてください
642デフォルトの名無しさん:2005/11/03(木) 12:27:09
製品検査のため、AD変換機(IEEE1394出力)の忠実度をおおまかに
調査したく、DirectShowでキャプチャするプログラムを作っています。
そこで質問なんですがDirectShowは、1394から流れてきた輝度と色差信号から
RGBに変換する際、忠実に変換しているのでしょうか?

例えば全白画面をAD変換機が忠実に変換していれば、キャプチャしたRGB値は
全て255でしょうか?お願いいたします。
643デフォルトの名無しさん:2005/11/03(木) 12:54:18
信頼性が心配なら、自分でYUV→RGB変換フィルタを書くよろし
644デフォルトの名無しさん:2005/11/03(木) 12:58:13
あと、色空間の問題とか色々あるから一概になんともいえない
645デフォルトの名無しさん:2005/11/03(木) 22:06:51
>>643,644
アドバイスありがとうございました。調べてみるとAD、Directshowとも
スケーリングの面でITU.601の規格を忠実に守っているかどうかなど
不明な点も多いので自作はとりあえず確認だけに留めておいて、複数の
機器で出力してみることにします。IEEE1394出力も付いた信号発生器
売ってないかなー。
646641:2005/11/04(金) 18:16:41
別な質問してもいいでしょうか。
VMR-9ってハードウェアに依存したフィルタなんですか?
例えばDirect3DTexture9がきちんと作成できる環境であっても
ピクセルシェーダが使えないと機能しなかったりするんでしょうか?
私の環境はピクセルシェーダ対応のビデオカードでサンプルは動いているのですが、
dxdiagで3Dアクセラレータを切るとダメになります。(AGPテクスチャアクセラレータは切ってもOKでした)
3Dアクセラレータには色々な機能が入ってると思うのですが、どれがVmr9で使用されているのか分かりません・・・
647デフォルトの名無しさん:2005/11/05(土) 21:13:46
directshowのインターフェイスやらオブジェクトの関係を分かりやすく説明してる所ないでかね?
ここ取れると思ったインターフェイスがとれなくてノイローゼになってまつ
648デフォルトの名無しさん:2005/11/06(日) 19:31:06
どこで何がとれると思ったのか相談したまへ
649デフォルトの名無しさん:2005/11/06(日) 19:54:20
>>647
わかる。

動くであろうことを前提に、脳内ハイテンションでコードを書いたはいいが、
ハード側のアウトオブメモリやら何やらでコードの大幅な撤回を余儀なくされた時、
凄く虚しくなる。
650デフォルトの名無しさん:2005/11/06(日) 21:39:46
>>648
IAMMultiMediaStreamから出力pinを取りたいんです
IBaseFilterとったり色々やってるんですがどうにも取れません
651デフォルトの名無しさん:2005/11/07(月) 00:48:13
>>650
IAMMultiMediaStream使ったこと無いから実経験に基づいたアドバイスできねーけど
IAMMultiMediaStream::GetFilterGraphで取得したIGraphBuilderからEnumFiltersで
フィルタ列挙して、知りたいフィルタがいたらEnumPins って流れでいけねーかな
652デフォルトの名無しさん:2005/11/08(火) 21:52:33
>>650 とれた?
653デフォルトの名無しさん:2005/11/08(火) 22:18:03
DirectShowに関するサイト作るとしたらどの辺の情報が欲しい?
フィルタ開発とかグラフ構築方法とかサンプルグラバの使い方とか
654デフォルトの名無しさん:2005/11/09(水) 01:33:18
全部!! がだめなら、グラフ構築方法かなぁ。
655デフォルトの名無しさん:2005/11/09(水) 01:50:06
DirectXのヘルプが一番いいよ。
656デフォルトの名無しさん:2005/11/09(水) 03:31:02
理解しやすいように、DirectShowのサイトを作ろうとすると、
”MSDNの読み方”って感じのサイトになっちゃうんだなこれがw
657デフォルトの名無しさん:2005/11/13(日) 11:57:23

USB Camera からの画像を mjpeg エンコードした後に取り込むアプリを書いています。
グラフは、USB Camera -> Smart Tee filter (preview はレンダラー) ->
  mjpeg encode filter -> SampleGrabber filter -> Null Renderer filter
となっていて、取り込む方法は SampleGrabber の call back です。
グラフを Run して call back をセットすると、callback 関数は呼ばれるのですが、
渡されてくる bufferLen(bufferCB 時)、GetActualDataLength()(sampleCB時)が
毎回同じ値(mjpeg encode filter を入れないで RGB24 でとるのと同じ値)で
戻ってきます。 mjpeg encode して圧縮されてもっと小さい値になってると
思うのですが、どこが「まずそう」か心当たりがある方、ご教示ください。
なお、graph の中に mjpeg encode filter が入っているのは GraphEdit で
確認してあります。
658デフォルトの名無しさん:2005/11/13(日) 21:16:20
実際にバッファの中をのぞいてRGB24形式だったか確認しましたか?
659デフォルトの名無しさん:2005/11/15(火) 21:58:52
スレ違いになるかもしれませんが、質問させてください。
DirectShowを使いUSBカメラから動画をキャプチャーしています。
で、サンプルグラバーでフレームを抜くところまでは出来ているのですが
その後、OpenCVに渡して、動画処理をしたいのですが、OpenCVへ渡すことが
どうしてもできません。だれか、方法をご存知の方はいませんでしょうか?
よろしくお願いします。
660デフォルトの名無しさん:2005/11/17(木) 06:06:43
RenderFileをやるとAVIならAsyncReader,WMVならASFReaderなどをフレキシブルに追加して
フィルタの接続なんかもやってくれるんですけど、ソースフィルタに何を使ったらよいのかだけを知りたい場合
なにかよい方法はありますか?RenderFileの機能からダウンストリームの構築機能を取っ払ったような感じのAPIとか。
あとWMVをデコードする場合、WMVideo Decoder DMOとか言うやつが自分のマシンにはあるんですが、
最近のマシンだったら大体これが入っていて、これをつかって再生するものなんですよね?
661デフォルトの名無しさん:2005/11/17(木) 13:47:30
>>660
AddSourceFilter
662デフォルトの名無しさん:2005/11/17(木) 23:00:19
>>661
ありがとう!!
663デフォルトの名無しさん:2005/11/20(日) 22:24:32
カメラ(ソース)のプロパティーを30fpsとかにしても
サンプルコールバックで呼ばれる間隔が10fpsくらいなんだけど
こんなもんなの?

サンプルグラバから得られた画像をつなげて動画にしようと思うのですが、
グラフ全体のフレームレートが10fps固定のような感じです。
なぜだかわかる人、教えてください。
664デフォルトの名無しさん:2005/11/22(火) 00:33:58
カメラによってサポートされているフレームレートは異なるが10fpsってことは無いと思う。
カメラのフィルタの出力ピンのcaptureピンにつなぐときにメディアタイプが指定できたはず。
そこでVIDEOINFOHEADER(だっけ?)に平均のフレーム間隔を指定できるから
それを33msとかにしてconnectしてみるとか。(自信ないけど)
GraphEditorで出力ピンのプロパティーを見れば大抵はフレームレートがかえられるから、
そのあたりのインターフェースを探してみれば?
665デフォルトの名無しさん:2005/11/24(木) 12:35:52
IAMStreamConfig だか IAMVideoStreamConfig だか
そんなのを使う > キャプチャする動画の設定
666デフォルトの名無しさん:2005/11/28(月) 23:01:33
>>664 >>665
ありがとう。

久々に覘いたらレスがついててうれしいかった。

OleCreatePropertyFrameでプロパティウィンドウを出して設定変更してるので
IAMStreamConfig だか IAMVideoStreamConfig だかの代わりになるんだと思ってるけど
違うかもね。

VIDEOINFOHEADERは見てなかった。RGBとかしか設定してなかったから見てみる。

ちなみに10fpsってのはSampleCB関数のなかで、呼ばれたごとに前回からの時間を
GetTickCountでとって調べたんで、誤差があるかも。これが一番あやしい。

33fpsなんで、30ms前後を期待してたけど、100msくらいだったので・・・
もっと精度のある時間測定が知りたいところ。よかったらよろしくおねがいします。
667デフォルトの名無しさん:2005/11/30(水) 22:59:53
それは本当に10fpsしか出てないんだと思う。
668デフォルトの名無しさん:2005/12/10(土) 01:37:17
タイムラインで動画を加工した後にファイルとして保存したいのですが
SmartRenderEngineの使い方がわからなく困っています。
RenderEngineでの書き出しは出来ているのですが・・・

IAMTimelineGroup::SetSmartRecompressFormatを呼び出した後は
圧縮されたストリームがRenderEngineのOutputPinから出てくるという解釈で良
いのでしょうか?
669デフォルトの名無しさん:2005/12/10(土) 18:00:29
すいません質問です。フィルタを作っているのですが、
VisualC++でコンパイルでき、実行できたファイルをWindowsCEで動かしたく、
embedded Visual C++でコンパイルすると

error LNK2001: unresolved external symbol DllCanUnloadNow
error LNK2001: unresolved external symbol DllGetClassObject

とリンクエラーとなってしまいます。
strmbase.libもリンクしてあります。
どうしても解決できないのでよろしくお願いします。
670デフォルトの名無しさん:2005/12/13(火) 20:56:17
VC++6.0でDirectshowの勉強始めようと思ってます。
いろんなサイトを見るとDirectX8.0〜9.0bに関しての記述が多いですが、Directshowって今はPlatformSDKってのに入ってるんですよね?
さて、質問ですがPlatformSDKってのはVC++6.0で使えるのでしょうか?

671デフォルトの名無しさん:2005/12/14(水) 00:14:13
「今は」というなら今は .NETであるぞえ
672デフォルトの名無しさん:2005/12/14(水) 15:52:14
お前らどういう環境でプログラム書いてるわけ?
673デフォルトの名無しさん:2005/12/14(水) 18:58:23
>>672
この会社、すげえ寒い
674デフォルトの名無しさん:2005/12/14(水) 19:13:04
もちろんMS-DOS2.0 + EDLIN
675デフォルトの名無しさん:2005/12/14(水) 23:18:29
USBカメラ、ヘッドセットマイクを用いての動画、音声キャプチャプログラムを作っています。
長時間の記録を行うにあたって問題が出てきたので質問させていただきます。
問題とは、映像が音声に対し3%ほど再生時間(MediaPlayerで確認)が長くなってしまうということです。
フレームレートが高すぎるのかとも思い、フレームレートを減らしてみたのですが解決できませんでした。
音声の再生時間が正しいことは、キャプチャ開始時、終了時にtimeGetTime()を行うことにより確認しております。

動画を記録するさい、正確な時間で記録するためになにか工夫が必要なのでしょうか?
現在のグラフは以下のようになっています。

[USB Camera]->[SmartTee]->[AVI Mux]->[File Writer]
[Audio Capture]->[AVI Mux]

よろしくおねがいします。
676デフォルトの名無しさん:2005/12/15(木) 02:06:29
久々に覘いたら、やっぱ廃れてるねこのすれ

>>675
音声を主にしてみたら?

最初につなげたほうが主になるから、

[Audio Capture]->[AVI Mux]
[USB Camera]->[SmartTee]->[AVI Mux]->[File Writer]


もっと精度のある時間測定はどうなった?
677デフォルトの名無しさん:2005/12/15(木) 21:18:57
なんでティーで割ってるの?
678デフォルトの名無しさん:2005/12/16(金) 00:26:11
>>677
Teeを挿入しているのはCameraからのデータにはタイムスタンプがついておらず
そのままではAVIMuxに接続できたかったためです。

>>676
レスありがとうございました。

で、一応解決できました。
今回はAudioストリームが正確な時間で記録できていたので
AVIMuxからIConfigAviMuxインターフェイスを獲得しSetMasterStream()により
Audioストリームをマスターストリームとしファイルに保存したところ、3%の遅れが出ていた30fpsにおいては
まだきちんとテストはしていませんが動画もほぼ正確な時間で記録することができ、
同期もほぼ取れているようでした。
679デフォルトの名無しさん:2005/12/16(金) 01:45:44
カメラのキャプチャピンにつないでる?
680デフォルトの名無しさん:2005/12/17(土) 00:52:06
なんだそのUSB Cameraデバイス
ライブデータなのにタイムスタンプついてねーの??
681デフォルトの名無しさん:2005/12/23(金) 16:57:02
DirectX9 SDKからDirectShowがなくなったらしいけど、ランタイムはDixrectX9ランタイムでいいの?
682デフォルトの名無しさん:2006/01/06(金) 04:08:29
DirectX9 SDKからDirectShowがなくなった
なんでー
683デフォルトの名無しさん:2006/01/06(金) 04:42:37
Platform SDKに移行しますタ
684デフォルトの名無しさん:2006/01/06(金) 17:09:33
だれかIMediaTypeStream、IMediaTypeSampleの使い方しりませんか?
エンコした動画データをバッファで取得したいのだけど、どうもうまくいかない。
やっぱり自作フィルタ作らないとだめ?
685デフォルトの名無しさん:2006/01/06(金) 17:57:09
↑IAMMediaTypeStream、IAMMediaTypeStreamでした、すいません、間違えました。
686デフォルトの名無しさん:2006/01/07(土) 09:22:19
,.r'彡    i     i :''´          `~`'''‐- :.、    ,......,_
r'´ ,..::''  'i.、  ,r:'´           .,.       `'::.、.i',....=-ヽ
 /::'' ::  ,/´~>´::..  ../ ::/  ,::' ./';  ';  ,    y'´DirectShow
'´   / / ,::'´ / ./ .,/:' :/  ';  '!、 .':,  ':, /  は
   ./´ ,r:'  ;:'  ./ ./ / / /    'il  ! ',  ',  't!  だ
  ;/  /  ,:'  ,:'  /// //     i.!: i .';  i:、 |.  め
.//  ./ ,y   /  ;r' /;'   j'´      i i i  い::!':, .!..  な
'/  ,/ /'   / ;:'  j''   /_,,.:ノ     !.!i   ! :| .'; i、. .の
i.  /! //  / :,/--=‐ ''''''"~`       ゝ,i    ! i  !:';  ?
  /i'/ ;  /j /.,..-===‐k          `''‐ .,_.!i'  !:',
 .i.i.;' ;'  r'ソ! t!'"´/,ノ`ヾヽ          ___ `j''‐: ,i i!',
 i ii' .;  !/.!:! .'i:, .!,.i  .,,,:'!、        ,..r=-j‐ミミ:.、i!T `''''!''~!
  .! i!  ! :! ! :.  !:ゝノ´ソ '        ,r''ソ-:'´  :ノ`ミk|   ! !
  i i ! i'; !!:! ⊂:,t,.....::r''     ,    ´ i:''t ノyソ ノ''!  ソ .i
  __!_i,,i ':, !|i/〃        ,ri     -t,_ `´ ;:'  ´ !  /! ;'
''"~   `ヽ,''t,y " ///    ヾj    /// ,.`''''"-,つ /!  /! /
       'k, `k,     ,r=‐--- :.,、  /////~´ //i  .i:j.;'
        .':, i\   ;'      ;       ノ_/ノ /:i/
         '; ' i! `>、 ',      !     _,r''"~// :/ ノ
  だ A DShow tj'"~/! ''-,`'‐- ..,,,..ノ  ,,...- ''"i'; |  './ /
.  め P み   '! i ! t  `'-=--‐ ''" /:!';`'k-y___/:/
.  な. I た    i ! ';'k,        i/' ノ i! 丶丿~'''''‐-:.,
.  の はい    ! ヽ,  '‐=..,,,,,,,,=-‐:'" ノ /  /'       ヽ
.  ? も な    i  `ヽ,__     _,..;r"  /  "
   . う      |'-:.,   ~''''''""~    ,/  

687デフォルトの名無しさん:2006/01/07(土) 12:14:55
こんなやつがでてくるなんていよいよダイレクトショウもクライマックスだね!
688デフォルトの名無しさん:2006/01/07(土) 20:23:42
PSDKだから昇格じゃないか?
689デフォルトの名無しさん:2006/01/07(土) 20:41:39
土方
690デフォルトの名無しさん:2006/01/08(日) 02:44:54
テレビが台から落ちて天ぷら鍋の上に
691デフォルトの名無しさん:2006/01/10(火) 00:04:42
IAMVfwCompressDialogsでSetStateが機能しない問題は解決法があるのでしょうか?
SendDriverMessageでICM_SETSTATE送りつけるのもだめでした。
692デフォルトの名無しさん:2006/01/11(水) 18:36:55
オーバーレイミキサーで合成された画像ストリームをファイルに落としたいのですが
どうすればよいでしょうか
693692:2006/01/11(水) 18:38:19

すみません、XP,DirectX8です。
694デフォルトの名無しさん:2006/01/11(水) 20:59:29
初歩的な質問で申し訳ないですが、

LINK : fatal error LNK1104: ファイル "C:\Program.obj" を開けません。
link.exe の実行エラー

というエラーがでて、実行できません。
どのような理由が考えられますか?
誰かレスお願いしますです。。
695デフォルトの名無しさん:2006/01/11(水) 21:57:07
最新のSDKに見当たらないのですが
696デフォルトの名無しさん:2006/01/12(木) 21:27:29
確認しないで答えるけどちゃんとオプション選択したか?
697デフォルトの名無しさん:2006/01/12(木) 23:04:24
WinGのスレってないのね(´・ω・`)
698デフォルトの名無しさん:2006/01/12(木) 23:09:40
今更何のために使うのか、理由を明確かつ簡潔に説明せよ。
699デフォルトの名無しさん:2006/01/12(木) 23:43:56
ttp://www.geekpage.jp/programming/directshow/ivideowindow-3.php
を参考に、DirectShowでビデオのキャプチャに挑戦中です。(VC7 + DirectX9)
CCDカメラ <=(NTSC)=> キャプチャユニット <=(USB)=> PC という組合せでやっております。
狙ったウィンドウへの表示は特に問題無くできますが、サイズで疑問があります。

手持のものだと、各種初期化後にIBasicVideo::get_VideoWidth で320が得られます。
この場合、「幅320pixelより大きいウィンドウに表示させても、所謂『デジタルズーム』に
なって、画像そのものの情報量に変わりはない」という認識で正しいのでしょうか?

またキャプチャユニットが、上記の様なデジタルズーム***でなく***、複数の画像サイズ
(例えば320x240と640x480)に対応している事はあり得るのでしょうか?というのも、附属の
ビューアに複数のサイズを選択できる項目があったもので・・・デジタルズームなら
納得のゆく話なのですが。

素人質問で申し訳ないです。「ヘルプ&文献のこの辺読んでこい」というヒントでも
良いので何卒御教示下され
700デフォルトの名無しさん:2006/01/14(土) 17:31:41
いまいちポイントがよくわかんねーけど

入力のデータサイズ自体はかわんねー
ウィンドウサイズを変更しても表示自体はレンダラが上手いことやってくれる

キャプチャユニットが対応してるかどうかはしらね
グラフエディットでキャプチャユニットのプロパティページでも見てみれば?
変更できるなら設定項目があるはず
701デフォルトの名無しさん:2006/01/14(土) 19:13:38
おそらくUSBキャプチャデバイスにカメラをつないでやってるんでしょ?
カメラから入ってくる信号はNTSCとかそういう奴でしょ。
よく知らないけどたぶんそれはアナログ信号だから1ラインを何ピクセルにするかはキャプチャデバイスで決める事が可能なんだと思う。
で、何ピクセルにするかはキャプチャデバイスに設定された画像サイズできまるのでは?

ユーザーがCCDカメラについた操作パネルを操作して光学ズームさせたら
そのズームされた映像が取れて、それがキャプチャデバイスに入るだけだろう。
ソフトでキャプチャデバイスにVGAとかやってもキャプチャデバイスからカメラに電文がとんで
光学ズームしてくれますとか、そういう機能はないと思う。
702デフォルトの名無しさん:2006/01/14(土) 21:19:27
Platform SDKに移ってウィザード無くなったのね
703699:2006/01/15(日) 02:40:05
お返事ありがとうございました。

>>700
わかりにくくて申し訳ないです。要は「どこまでレンダラが上手くやってくれるか?」なのです。

Platform SDK附属のDirectShowサンプルの"AMCap"でストリーム形式のプロパティページ
が呼べる(IAMStreamConfigから)のですが、手持のキャプチャだと、そこの「出力サイズ」
コンボボックスに320x240、640x480両方の項目あるのです。

ここで640x480を選択することと、手でウィンドウをみょーんと640x480に伸ばすことに、
違いがあるのだろうか?という点で悩んでおるわけです。(見た目には区別がつきません)
恐らく前者がキャプチャデバイスそのものの設定で、後者がレンダラ(StretchBltとか?)の
仕事だと思うのですが・・・

>>701
> 1ラインを何ピクセルにするかはキャプチャデバイスで決める事が可能なんだと思う。
> で、何ピクセルにするかはキャプチャデバイスに設定された画像サイズできまるのでは
私めもそう思います。で、その「何ピクセルにするか?」という設定は、どこから行うか御存知でしょうか?
上記のプロパティページがそうかなと思うのですが、自信が持てないでおります。。。
704デフォルトの名無しさん:2006/01/15(日) 21:31:13
その設定はプロパティーページでもできるし
グラフを作るときにキャプチャデバイスの出力ピンにメディアタイプを設定するなどでも変更できると思う。
DirectShowに付属のAMCAP.EXEを動かして望みの動作があったらAMCAP.EXEのソースを見てくれ。

で、まともなキャプチャデバイスならQVGAで取った奴を縦横x2してVGAだとはやらないと思う。
705デフォルトの名無しさん:2006/01/15(日) 21:35:35
補足
キャプチャデバイスが入力されるアナログ信号を
何ピクセルにサンプリングするかで入力画像サイズが決まる
VGAでキャプチャした映像はQVGAより緻密。
つまりQVGAでとったものをVGAにレンダラで引き伸ばせば荒くなり、
さいしょからVGAでとったものをそのままレンダラに表示させれば荒くならない

と、思います。
706sage:2006/01/18(水) 07:13:15
GraphEditでUSBカメラからWMVに保存って出来るのでしょうか
707デフォルトの名無しさん:2006/01/21(土) 12:53:31
DirectSnow
708デフォルトの名無しさん:2006/01/28(土) 13:53:19
grapheditで簡単な再生グラフを作ろうと思ったのですが、どうも上手くいきません
アナログ信号→USB接続のハードウェアMPEG2エンコーダ→パソの流れで
アナログ信号をディスプレイ上に映すだけ…なんですが
CrossBar→WDMEncorder→MPEG2DemultiPlexerとつないだところで
DemultiPlexerのプロパティが開けません(Requested Property page could not be displayedと出る)
ネットの資料とかではプロパティからDemuxの出力Pinを作るのですが、これじゃレンダラに届きません
ご教授願います
709708:2006/01/28(土) 19:29:05
カキコ後、Platform SDK\Sampleのリドミを見たら
「grapheditを使用する前にproppage.dllを登録してください」と言う記述が
登録したら解決しました…orz

graphedit上ではVideo Render迄つながったのですが、実際にグラフを走らせると
真っ黒なウィンドウが出るだけになってしまいました
この場合は、MPEG-2 DemultiplexerのPID設定がマズイのでしょうか
stream_id Mapping、分からない部分は適当にいろいろ試してみたのですが駄目でした
引き続き素人丸出しですが、よろしくお願いします
710デフォルトの名無しさん:2006/02/24(金) 01:05:56
aviとかmpgだと速度変更できるのですがwmvだとできません。
どうすればいいのでしょうか?
711デフォルトの名無しさん:2006/03/01(水) 11:55:27
自分でWMVのコーデック書けばいいんでない?
712デフォルトの名無しさん:2006/03/07(火) 00:18:33
StreamRenderでつなげたフィルタのピンを解除するにはどうすれば
よいのでしょか?

できれば参考ソースおよび参考サイト等教えてください。
713デフォルトの名無しさん:2006/03/07(火) 06:49:20
>>710
avi,mpgでエンコードしてからファイル名拡張子をwmvに変更する。
714デフォルトの名無しさん:2006/03/07(火) 10:53:31
>>712
切断すればいいだろ
サンプルソースをあてにする時点で無理だろうけど
715デフォルトの名無しさん:2006/03/08(水) 19:28:16
>>713
素人さんにそんなこと教えちゃダメポ
信じちゃうでしょwww
716デフォルトの名無しさん:2006/03/18(土) 17:12:41
MP3やWAVをDirectShowで再生しているのですが、
IMediaSeeking::SetRate()で再生速度を変更した上で、
IMediaSeeking::GetCurrentPosition()で再生位置を取得すると、
実際に再生している位置と、取得された位置が一致しません。
例えば、1.2倍速に設定すると、GetCurrentPosition()は1.44倍速(?)で
進んでいき、GetCurrentPosition()が終了位置に達しても、
実際には再生が続いているという現象が起きています。
正しい再生位置を取得する方法はありますか。
717デフォルトの名無しさん:2006/03/18(土) 17:24:50
Audio renderの前に入るダミーのフィルタを作って
送られてきたメディアサンプルのタイムスタンプを取得すればいいんジャマイカ?
718デフォルトの名無しさん:2006/03/18(土) 17:45:24
ダミーフィルタですか。フィルタの作り方が全く分かっていないので、
まずはそこから調べないと・・・。

もう少し挙動を調べてみたのですが、GetCurrentPosition()が終了位置に
達したもののまだ再生が続いている状態で、さらに速度変更を行うと、
突然再生が終了してしまいます。ちょっとやっかいかも。
速度変更なんてただのおまけってことでしょうか。
719デフォルトの名無しさん:2006/03/18(土) 19:21:30
SampleGrabberフィルタをグラフに挿入して、
サンプルキャプチャ通知コールバックさせれば
現時点でレンダリングしてるサンプルの時間が取れるね。
TextSS のWindowsXP(Professional)64bit対応化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
721デフォルトの名無しさん:2006/03/18(土) 23:22:21
>>718
グラブビルダからの指示を受けたフィルタ内部の話をすると
GetCurrentPositionはレンダラフィルタが返すからね
んでSetRateはシークを担当するフィルタ(普通はパーサ)が処理するんだわ
なのでパーサとレンダラの挙動が上手く一致しないとズレが生じることになる。
通常、レンダラが処理するGetCurrentPositionはサンプルのタイムスタンプを見てるだけ
SetRateで設定した値が正しく反映されていないことも良くある話 要はパーサ次第
SetRateの後でGetRateしてみた?
722デフォルトの名無しさん:2006/03/19(日) 18:53:44
スマンがちょっと教えてくれ。

SDKのサンプルの使ってプログラム組んでみたんだけど
サンプルのソースコードを組み込んで使っても著作権的に問題ない?
723718:2006/03/24(金) 01:15:14
しばらくほったらかしにしていましたが、>>719の方法で正しい時間が
取得できました。>>718の後半については、取得した正しい時間で
一度SetPositionsしてから、SetRateすることで対処しました。

>>720
GetRateで確認したところ、ちゃんと設定されていました。
724723:2006/03/24(金) 01:16:15
× >>720
>>721
725デフォルトの名無しさん:2006/03/28(火) 23:42:28
>>722
ドキュメントは読んだのか?
726デフォルトの名無しさん:2006/04/15(土) 00:13:58
今までSampleGrabberを用いてカメラからのフレームを取得していましたが
今回3Dテクスチャレンダラーを使用したことで、qedit.hが使えなくなってしまいました。
そこで、IMediaSampleを使ってフレームの取得を考えているのですがうまくいきません。
きれいに一枚のフレームを取り出すためにはどのような処理を行えば良いのでしょうか?
727デフォルトの名無しさん:2006/04/15(土) 01:16:50
酒飲んだ勢いで書く
MediaDet
728デフォルトの名無しさん:2006/04/17(月) 14:18:26
graphedtで作ったgrfをCのソースにするソフトってないの?

ないね

うぐ〜DShow氏ぬ
729デフォルトの名無しさん:2006/04/17(月) 14:23:45
>>728

492見れ

730デフォルトの名無しさん:2006/04/17(月) 14:38:55
731デフォルトの名無しさん:2006/04/17(月) 17:51:20
Cで読み込む方法じゃなくて同様の事をCで記述する方法を知りたいんですが
732デフォルトの名無しさん:2006/04/17(月) 20:35:58
>>731
自分で書け
733デフォルトの名無しさん:2006/04/18(火) 00:48:48
VC6で作ったDirectShowのプロジェクトをビルドしたらHSEMAPHOREが無いというコンパイルエラーが・・
バカマイクロソフト視ねキチガイ
さんざん調べるとDirectX9.0SDKの2004summer(ばーじょんも沢山ありやがって死ね!!!!)
とか、そのあたりの奴はVC6をサポートしてやがらねぇとくらあ!

お前らに教えておくぜ。そういう時はDirectX9.0 2003 summer updateを使え!
これならまだダウンロードできるしバッチリビルドできた!
がんばれよ!
734デフォルトの名無しさん:2006/04/18(火) 10:35:13
>>732

書けません

>>733

下げろタコ
735デフォルトの名無しさん:2006/04/18(火) 12:08:16
>>731
エラー処理を除いて考えれば、プログラムで書くのはGraphEdit上でやることと大差ないよ。
フィルタを引っ張り出して、ピンを列挙して、ピン同士をコネクトして、とか、泥臭いけど。

GraphEditで作った構成を再構築したいというのであれば、>>730のでいいんじゃない?
736デフォルトの名無しさん:2006/04/19(水) 09:59:33
今からDirectShowを使ってUSBカメラからキャプチャした画像を
OpenGLに流し込む作業を行おうとしているのだけど、すこし確認させて欲しい。

OpenGLで画像を扱うとき、2の二乗(128, 256等)ピクセル長の画像が望ましい。
カメラからSampleGrabberを通じて画像を取得しようと思っているのだが、
まず使用カメラにも依るのだろうがソース自体を任意のサイズに吐き出されるのは
無理とみなしていいのだろうか?

たとえば、手前のカメラだとサイズは、
(352/288) (128/96) (160/120) (176/144) (240/180) (320/240) (640/480)
のモードが見つかるのだが、この中から選ぶことになると。
つまり希望するサイズが見つからなければ自分で加工しなければならないのだろうか?

最終的にSampleGrabberでキャプチャした画像を捕まえるとき、
任意の大きさで取り出せる方法があれば教えて欲しい。
サンプルが見つかれば尚うれしい。その場合、Direct3Dでもかまわない。
助言をおねがいしたい。
737デフォルトの名無しさん:2006/04/19(水) 10:49:08
>>736

D3Dで任意矩形にテクスチャマッピングしてそれを取得くらいしか思いつかん
738デフォルトの名無しさん:2006/04/21(金) 19:50:38
DESで暗号化したMpeg4を再生したいのですが、
ソースフィルタで複合化し、そのデータをMpeg4のフィルタに食わせてやればいいのでしょうか?
サンプルはどれもすぐVideoRenderなのでイメージがつかみづらいです。
739デフォルトの名無しさん:2006/04/21(金) 20:05:36
サンプルの、CAsyncFilterのファイル読み込みのところで
複合化処理すればいいんですかね?
で、その右にMpeg4のフィルタですかね。

でも単純にMpeg4ファイルをDESで暗号化した場合、
そのファイルをWindowsMediaPlayerにドロップしても
レンダリングしてくれなさそうです。
適切なフィルタを選んでくれる関連付けの仕組みってどうなってるんでしょうか?
740デフォルトの名無しさん:2006/04/21(金) 20:13:38
ドキュメントは読みましたか?
わかりやすく書かれていると思いますが。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directshow/htm/registeringacustomfiletype.asp
741デフォルトの名無しさん:2006/04/21(金) 20:27:32
ありがとうございます。
すみません、日本語のところばかり読んでました。
じっくり読んでみます。
742デフォルトの名無しさん:2006/04/21(金) 20:32:02
あ、日本語もありました。
キーワードをぐぐってたらヒットしました。
ありがとうございます。
http://www.microsoft.com/JAPAN/developer/library/jpdx8_c/ds/filtdev/Registering_Custom_File_Type.htm
743デフォルトの名無しさん:2006/04/22(土) 21:44:03
>>735
GraphEdtではCOMインタフェースのメソッド呼べないぞー
プログラムで書くしかないぞー
744デフォルトの名無しさん:2006/04/24(月) 15:12:21
音声のピッチを調節する仕方を教えてください。

IMediaPosition->put_Rate(2.0);
で再生速度を変更した後、ピッチの調節がしたいからです。
745デフォルトの名無しさん:2006/04/24(月) 15:43:17
>>744 >>201 という事で

サウンドプログラミング3
http://pc8.2ch.net/test/read.cgi/tech/1145573675/
に来ればアルゴリズムについては教えてあげられるよ。 コードは自分で作りなさい
746デフォルトの名無しさん:2006/05/03(水) 18:31:49
Vc++2005を使っています。
directshowのCaptureGraphBuilder2 で、ファイル出力とプレビューを実現できますが、
ファイル出力ではなく、ネットワークストリームに出力するにはどうすればよいでしょうか。
よろしくお願いいたします。
747デフォルトの名無しさん:2006/05/04(木) 03:14:38
748デフォルトの名無しさん:2006/05/04(木) 12:19:50
>>747
返信ありがとうございます。
やっぱりActivex9の頃のDIRECTSHOWにはその様なフィルターがあったのですね。
Microsoft Platform SDKのDirectShowにはなぜか見あたらないのです。
.NETのtcpかudpと組み合わせればできるのかなとは思うのですが、
初めてなので良くわからないのです。
昔のバージョンをインストールしたほうが良いのかな・・・。
749デフォルトの名無しさん:2006/05/04(木) 19:04:27
>>748
フィルターはフィルターだけど、サンプルコードだよ・・
とりあえず手元にあった DirectX 9.0 SDK Update (October 2004) Extras の中を見たらあった。
落として取り出してみれば?
750direct歴2ヶ月:2006/05/07(日) 11:33:55
DirectShowをWin32のCで使っています。
DVDの再生プログラムで、再生できるのは音のみで、映像が表示されません。何が原因だと思われます?誰か助けて下さい……
751デフォルトの名無しさん:2006/05/07(日) 12:43:52
>>750
ビデオデコーダがないんジャマイカ?
752デフォルトの名無しさん:2006/05/07(日) 12:48:45
>>750 まずGraphEditでグラフ組んで、実際に映像・音声がでる確認はしたのか?
753direct歴2ヶ月:2006/05/07(日) 13:10:47
GraphEditでは大丈夫なんですが…

何度やっても映像が表示されないです。
754デフォルトの名無しさん:2006/05/07(日) 14:13:42
正常にRunできてるんだよな。音が出てるくらいなんだから。
ビデオウィンドウはどんな感じなんだ?真っ黒か?ぐしゃぐしゃな感じか?
755direct歴2ヶ月:2006/05/07(日) 14:30:49
VideoWindowすら全く表示無しです(;_;)
音が流れるだけの状態です。
756デフォルトの名無しさん:2006/05/07(日) 14:52:25
レンダラに繋ぎ忘れているとかいうオチはなしよ
757デフォルトの名無しさん:2006/05/07(日) 15:09:57
AddGraphToRotでもやって目で確認すれば
758Direct歴2ヶ月:2006/05/07(日) 15:11:05
それは大丈夫です
RenderDvdInterface()ですよね?

759Direct歴2ヶ月:2006/05/07(日) 15:12:18
やってみます!
760デフォルトの名無しさん:2006/05/07(日) 15:18:14
>>755 VideoWindowすら全く表示無しです(;_;)

え?表示ウィンドウは自分で用意するんだよ?
761Direct歴2ヶ月:2006/05/07(日) 15:24:01
やってますよ
IVideoWindowのメソッドでしょ?

一般の動画は再生できるんです。ただDVDだけが音声のみで……
762デフォルトの名無しさん:2006/05/07(日) 15:44:28
Renderで自動構築してるの?個別に自分でフィルタつないでるの?
個別につないでるならグラフ構成書いてくれ。情報少なすぎ

レンダラはちゃんといるのか?こんな感じで構築後に確認してみ?

IBaseFilter *vid = NULL;
m_pGraph->FindFilterByName(L"Video Renderer", &vid);
763デフォルトの名無しさん:2006/05/07(日) 16:02:15
そのDVDの中身は何だ?
スプリッタとかデコーダが対応してないフォーマットジャマイカ
764Direct歴2ヶ月:2006/05/07(日) 16:07:52
自動構築かなぁ?
CoInitialize&CoCreateInstanceの後にGetFiltergraphでIGraphBuilderへのポインタ取得
後にRendererDvdVideoVolume
これ以外の、レンダラは無し。

さっきのやつそのまま書いてエラーチェックした所、S_OK以外で失敗?でした
そのまま L"VideoRenderer"でいいんですよね?
765Direct歴2ヶ月:2006/05/07(日) 16:08:56
DVD-Videoです(映画)
766デフォルトの名無しさん:2006/05/07(日) 16:15:52
MSDNみたらこうあったが

> RenderDvdVideoVolume メソッドは、DVD-Video のボリューム再生に関するユーザー指定に従って、フィルタ グラフの作成を完了する。

いいのか?
767デフォルトの名無しさん:2006/05/07(日) 16:21:02
768Direct歴2ヶ月:2006/05/07(日) 16:22:13
これじゃ出来ないんですか?

もし手動で全て繋ぐとしたら、必要なインターフェースとメソッドを教えてください。
769デフォルトの名無しさん:2006/05/07(日) 16:29:30
HRESULT RenderDvdVideoVolume(
LPCWSTR lpcwszPathName,
DWORD dwFlags,
AM_DVD_RENDERSTATUS *pStatus
);

戻り値やAM_DVD_RENDERSTATUSの値はチェックしてるか
S_OK以外が帰ってきてるんじゃないか?
770デフォルトの名無しさん:2006/05/07(日) 16:37:57
771Direct歴2ヶ月:2006/05/07(日) 16:49:33
格納されたステータスをしらべたら、Line21とかいうのに問題が生じた見たいです。
これは一応用意はした(GetDvdInterface)んですが、使っていません。

あと、MSDNはパソコンでも携帯でも読んだんですが、何が誤っているのかがわかりません。
772デフォルトの名無しさん:2006/05/07(日) 17:09:19
>>771 「問題が生じた見たい」じゃこっちはわからんよ。
助けて欲しいなら具体的にどのフラグがどの値だったから、とか書かないと。

GraphEditでは再生できるなら、構成に問題は無いんだ。
RenderDvdVideoVolumeのdwFlagsは色々と試してみたか?
773Direct歴2ヶ月:2006/05/07(日) 17:28:01
dwFlagはいじったんですが、変化無しです
RenderDvdVideoVolumeに渡すAM_DVD_RENDERSTATUSの、取得したフラグの内容→失敗したストリームはAM_DVD_STREAM_FLAGSのAM_DVD_STREAM_VIDEOです
774デフォルトの名無しさん:2006/05/07(日) 17:44:32
どうしてLine21に問題ありと判断したのか
775デフォルトの名無しさん:2006/05/07(日) 17:52:32
GraphEditのRenderPinで自動構築されるフィルタ構成書いてくれ
776デフォルトの名無しさん:2006/05/08(月) 04:23:44
>>775
最近はGraphEditでRenderDvdVideoVolumeできるように」なったのか。
777デフォルトの名無しさん:2006/05/08(月) 11:07:30
うごかねえ言ってるアフォ
ソース貼れ
778デフォルトの名無しさん:2006/05/10(水) 22:54:57
すみません、教えて下さい。
映像ファイル(*.avi)を再生するにあたり、その再生速度を連続して(40〜60回/sec)変化させるプログラムを組んでいるのですが、よい方法をご存知ではないでしょうか。
Directshowでどうにかなるかな、と思っていたのですが、これの内部処理は"再生停止->再生速度設定->再生開始"となっているようで、実際に走らせて見るとカックンカックンになってしまいます・・・。
再生速度の可変範囲が0〜20倍(ホントは100倍くらいまでの方が都合が良い)なので、MCIを使うことができません(<-勘違い?)。
或いは、フレームをひとつずつ読み込んでは、fpsを可変にしてVRAMに投げた方が良いのでしょうか。
開発言語はCで、開発環境はVisualStudio.NETです。
よろしくお願いいたします。
779デフォルトの名無しさん:2006/05/10(水) 23:12:23
> 再生速度を連続して(40〜60回/sec)変化

用途がわからんが、DirectShowでやるには無理と思ってください。
780デフォルトの名無しさん:2006/05/11(木) 00:43:26
>実際に走らせて見るとカックンカックンになってしまいます・・・。

実現できたら、自分の頭がカックンカックンしそうだな・・・
781778:2006/05/11(木) 01:17:54
>>779
うぅ・・・。
更新頻度が10回/sec程度でも不可能なのでしょうか・・・。もしくは、再生速度の可変範囲を0〜2倍程度まで抑えて、MCIを使うことでは解決できるのでしょうか(スレ違いでごめんなさい)。

>>780
それほどまでに難易度の高いものなのでしょうか・・・?
782デフォルトの名無しさん:2006/05/11(木) 02:27:44
一秒以内の間に再生速度が何十回も変わるって、そのプログラムは何用なの?
おれには想像がつかん。
783デフォルトの名無しさん:2006/05/11(木) 04:03:53
早送りとかスローとか付けて動画再生ソフトつくってみたいんじゃない?
784デフォルトの名無しさん:2006/05/11(木) 20:00:28
AVIファイルなら中間フィルタを作れば高速・低速再生できるとおもう。
ただし音声は無理。
785デフォルトの名無しさん:2006/05/11(木) 20:36:52
一般的な動画とすればNTSCで29.97fps、PALで25fps。
>>778氏の要望は秒間に40〜60回の速度レート変更
仮に実現できても絵を見る人間には何がなにやら ってとこだろ

>>784のいうように、フィルタ自作してタイムスタンプ直接いじればいいよ
アプリから好きなタイミングで指示だしたいならカスタムインターフェースつければいい
786デフォルトの名無しさん:2006/05/11(木) 21:02:12
1秒間に40回も再生レート変えるってどういうこと?
1秒間に30フレームとしても、1フレームを出す間に2回速度変更とかあるわけ?
いみないじゃんw
787デフォルトの名無しさん:2006/05/11(木) 22:16:47
>>786
120FPSのmpeg4とかあるからジャマイカ?
788デフォルトの名無しさん:2006/05/12(金) 21:05:04
キャプチャピンorプレビューピンのプロパティ中の
出力サイズにあたる部分って、
プログラムからどうやって設定するのですか?

AMStreamConfigだと、
320x240までしかできないんですけど...。
789デフォルトの名無しさん:2006/05/12(金) 21:43:29
amcapで設定して320x240までしか設定できないのなら
そういうデバイスということ。
790デフォルトの名無しさん:2006/05/13(土) 00:06:59
やりたいのは解像度を保ったままの表示と静止画とりこみなんですよ。

プロパティを表示してから
出力サイズ設定を640x480とかにすると
それなりの大きさにになるし、
みた限りのPCIキャプチャボードでもそんな感じだから
へんだなぁって...。

知らないだけ?
791デフォルトの名無しさん:2006/05/13(土) 02:12:22
ビデオボードを使ってキャプチャープログラムを作りたいと思っています。
出力はaviファイルです。
その時、縦横を反転させて480x640といった縦長画像のプレビューを出して
キャプチャー(こちらも反転)するにはどうすればよいのでしょうか。
792デフォルトの名無しさん:2006/05/13(土) 02:26:59
>>791
縦横を反転させるフィルタを作って、グラフにAddする。
793デフォルトの名無しさん:2006/05/13(土) 03:06:15
フィルタ自作しかないですか。。。
フィルタ自分で作ったことないですけど、今から勉強してみます
むずそうだなぁ
794デフォルトの名無しさん:2006/05/13(土) 16:54:41
>>790
よくわからないけどキャプチャデバイスから320x240でキャプチャして
表示を640x480にしたいの?
その場合表示に関しては単純にレンダラの能力で解像度は320x240
のものを640x480に引き伸ばして表示することは可能。
(但し1ピクセルが2x2ピクセルになるだけだから荒くなる)

静止画取り込みというのはBMPに落とす、というようなことだと思うが
この場合、サンプルグラバを使うと、サンプルグラバを通過するときのサイズが
320x240なら、そのサイズでしか取り出せない(と思う)

795デフォルトの名無しさん:2006/05/14(日) 07:05:39
http://pc8.2ch.net/test/read.cgi/tech/1026666092/794
ありがとうございます。
やりたいたいのは、
キャプチャデバイスの出力サイズを
640x480にすることなんです。

クロスバー->キャプチャ->グラバ->レンダラ
とかでフィルタグラフを作っておいて、
キャプチャフィルタのキャプチャピンの
プロパティ表示から手設定で出力サイズを
640x480にすることは可能なんです。

手設定してやれば、
表示サイズも静止画サイズも640x480になるんですけど、
ソースコードから設定する方法が判らない...。
796デフォルトの名無しさん:2006/05/14(日) 14:58:20
IAmStreamConfig::SetFormatで画像サイズも正しく指定したAM_MEDIA_TYPEをセットすればできるはず。

797デフォルトの名無しさん:2006/05/14(日) 23:37:24
それも思って過去にやったんですけど、
エラーで返ってくる結果だったんですよ...。

Bt系とかSAA系のPCIボードって、
いくつもみたんですけど、
全部320x240だったんです。
(プロパティからの640x480は可能。)
798デフォルトの名無しさん:2006/05/14(日) 23:46:08
キャプチャの入力って何?
クロスバーってことはS端子入力とかTVチューナーとかついてるボードなのか?
799791:2006/05/15(月) 07:37:26
少し前に縦横回転の質問をしたものです。
http://son-son.sakura.ne.jp/mt/blog/2006/04/directshow_1.html
このサイトを参考にDirectShowのカスタムフィルタを作っているのですが、
入力と出力で画像サイズが変わる場合は、どのようにサイズを設定すれば
よいのでしょうか。
とりあえず、GetMediaType()関数の最後に、

*pMediaType = m_pInput->CurrentMediaType();
// 追加部分
VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pMediaType->pbFormat;
ASSERT(pvi);
int width = pvi->bmiHeader.biWidth;
int height = pvi->bmiHeader.biHeight;
pvi->bmiHeader.biWidth = height;
pvi->bmiHeader.biHeight = width;

このようにして、下流フィルタに縦横の大きさを伝えようとしましたが、
graphedt.exeでつないごうとすると、「接続に必要な中間フィルタが見つかりません」
と出て実行できません。
追加部分をばっさりとってしまうと実行できるのですが、正しく表示はされませんでした。
(480x640でデータが並んでいるのを640x480とVideoRendereが見ているため)
よろしくお願いします。
800デフォルトの名無しさん:2006/05/15(月) 10:55:56
逃げてないで戦えよ
801デフォルトの名無しさん:2006/05/15(月) 19:26:55
>>799
拒否られてんだよ そんなサイズじゃ満足できないってよw
802デフォルトの名無しさん:2006/05/15(月) 20:55:10
>>799 それじゃ入力ピンのサイズもろとも変更しちゃってね?
たいしたコード量じゃないならGetMediaType全部さらしてみ
803791:2006/05/15(月) 22:03:47
リンク先のコードとほぼ同じですが、こういう風に書いています

// このフィルタのアウトピンが接続可能なメディアのタイプを返す
HRESULT Through::GetMediaType(int iPosition, CMediaType *pMediaType)
{
  // outputピンが対応するメディアタイプを返す
if (m_pInput->IsConnected() == FALSE) {
return E_UNEXPECTED;
}

// ピンの位置のチェック
if (iPosition < 0) {
return E_INVALIDARG;
}
if (iPosition > 0) {
return VFW_S_NO_MORE_ITEMS;
}

  // ピンをチェック
CheckPointer(pMediaType,E_POINTER);
804791:2006/05/15(月) 22:04:49
(続き)

  *pMediaType = m_pInput->CurrentMediaType();

  // ここから追加した部分
  VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pMediaType->pbFormat;
ASSERT(pvi);
  int width = pvi->bmiHeader.biWidth;
int height = pvi->bmiHeader.biHeight;
  pvi->bmiHeader.biWidth = height;
pvi->bmiHeader.biHeight = width;

return NOERROR;
}
805791:2006/05/15(月) 22:10:14
コードを見ていると、Transform()関数の中でサンプリングタイムのコピーや
同期用のポイントを設定しています。
その中に、入力ピン側のメディアタイプを出力側のメディアタイプへコピーする
という部分があるのですが、ここも関連しているのでしょうか?
806デフォルトの名無しさん:2006/05/15(月) 22:50:10
まず出力ピンをレンダラなどにつなぐときのメディアタイプで
480x640を提示しないとダメなのでは。
(単に縦横逆転だからサイズは同じだろうが)
次にTransformの中でメディアタイプをコピーしてはダメだと思う。
出力メディアタイプのサイズが入力メディアタイプと異なる(縦横逆転)わけだから。
そして自分の力で640x480のビット列を480x640に並べ替えてあげないとダメだと思う。
807デフォルトの名無しさん:2006/05/15(月) 23:05:50
TransFormは実際にストリームが流れる時に呼ばれる。
なのでグラフエディットでピンが繋がらないのとは関係ない。

グラフエディットで自作フィルタのアウトピンとダウンストリームのフィルタのインピンをつなぐときに
ダウンストリームのフィルタが自作フィルタに「お前が流す形式は何だ」と聞いてくる
これがGetMediaTypeにあたる。ピンのコネクト中なんかで呼ばれるんだわ

※CopyMediaTypeとか上手く使えよな 自分の入力ピンの保持してるMediaTypeの
ポインタそのままダウンストリームフィルタに渡さないように。

ダウンストリームフィルタはGetMediaTypeで返された形式をみて、受け付けられないものなら
拒否される(結果失敗となる)されることがある。これはダウンストリームの仕様による。
808デフォルトの名無しさん:2006/05/15(月) 23:14:44
「ビデオデコーダ」→「自作フィルタ」→「ビデオレンダラ」 
これがだめなの?
「ビデオデコーダ」→「自作フィルタ」→「AVI MAX」→「ファイルライタ」
で一回AVI形式にできないかな
809デフォルトの名無しさん:2006/05/15(月) 23:23:49
810791:2006/05/16(火) 04:48:02
皆さんレスありがとうございます。

>>806
>まず出力ピンをレンダラなどにつなぐときのメディアタイプで
>480x640を提示しないとダメなのでは。
上に書いたGetMediaType()でこれをやってるつもりなのですが、
何か根本的に間違っているのでしょうか?

>>807
とりあえず接続できるかということと実際に処理できるか、というのは別という
ことですね。
んで、GetMediaType()を正しく書かないと接続すらさせてもらえない、と。
サイズを変えてるだけだから、つなげそうに思うのですがうまくいきません。
ポインタのアドレスの件は少し書き換えてみました。

>>808
「ビデオデコーダ」→「自作フィルタ」→「ビデオレンダラ」ができません。
AVI MUXをGraphEdtで自作フィルタの後ろにつなごうとしたら、
「接続に必要な中間フィルタがありません」のエラーがでて、同様にできませんでした。

>>809
とても参考になります。恥ずかしながら知りませんでした・・・
ただ今回の場合、画像をトリミングするわけじゃないので
直接は関係ないように思うのですが、ここも設定がいりますか?
解説の日本語がすごい難解でw勘違いしているかもしれません。
全領域を使うつもりなので、rcSource,rcTargetともにすべて0設定で
やってみましたがだめでした。
811791:2006/05/16(火) 04:54:18
804のコードをこのように書き換えてみました。

// 縦横のサイズ以外は一緒なのでコピー
CMediaType pCurrentMediaType = m_pInput->CurrentMediaType();
CMediaType output(pCurrentMediaType);
*pMediaType = output;

VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pMediaType->pbFormat;
ASSERT(pvi);

long width = pvi->bmiHeader.biWidth;
long height = pvi->bmiHeader.biHeight;
pvi->bmiHeader.biWidth = height;
pvi->bmiHeader.biHeight = width;

812791:2006/05/16(火) 04:55:29
(続き)
pvi->rcSource.bottom = 0;
pvi->rcSource.left = 0;
pvi->rcSource.right = 0;
pvi->rcSource.top = 0;

pvi->rcTarget.bottom = 0;
pvi->rcTarget.left = 0;
pvi->rcTarget.right = 0;
pvi->rcTarget.top = 0;
813デフォルトの名無しさん:2006/05/16(火) 20:13:05
あのさ・・・

もしかしてVIDEOINFOHEADERじゃなくて
「VIDEOINFOHEADER2」 なんじゃないの?
フォーマットタイプ見て無いだろ
814791:2006/05/16(火) 23:55:50
>>813
上のコードで、bmiHeader.biWidthとbmiHeader.biHeightを入れ替えないと
正常に接続できるので(画面は一部が縦になる)、VIDEOINFOHEADERでいいのじゃ
ないかと思うのですが・・・
815デフォルトの名無しさん:2006/05/17(水) 00:41:50
俺が言ってることはコレ フォーマットタイプによって構造体が違うからな
ttp://www.microsoft.com/JAPAN/developer/library/jpdx8_c/ds/ref/structs/struct_AM_MEDIA_TYPE.htm
「思う」じゃなくて確認してくれ
816791:2006/05/17(水) 03:51:37
>>815
今確認してみたところVIDEOINFOHEADERでした。
いろいろ調べていますが、うまくいきません・・・
817791:2006/05/17(水) 08:39:41
ついに解決しました!
原因はほんとうにくだらないことでした・・・
プログラムは、EZRGB24 Filter Sampleをもとに作っていたのですが、
その中のCheckTransform()関数に、

if (*mtIn == *mtOut)
return NOERROR;
return E_FAIL;

なんていう記述が・・・
つまり入力と出力の形式を変えると、ここでエラーがとんでたようです。
サンプルコピペはだめですね、ちゃんと読むことにします。

いま縦向きに映るテレビをみていますw
レス下さった皆さん、ありがとうございました。
818デフォルトの名無しさん:2006/05/17(水) 20:47:58
おめ
819デフォルトの名無しさん:2006/05/17(水) 22:33:50
VC++でファイルからFourCCの情報を取得したいのですが、DirectShowを使うかVFWを使うか迷っています。
どちらを使うべきでしょうか?速い方がいいんですが・・・
820デフォルトの名無しさん:2006/05/17(水) 23:28:02
>>819
AVIなら自分でRIFFをパース。
とても簡単で高速。
ttp://www.usagi-goten.com/jp/AVI_structure.html
821819:2006/05/18(木) 00:04:42
>>820
どうもありがとうございます。
ISO/MPEG-4なども扱います。RIFFではないようなので使えませんねぇ。
DirectShowが無難な気がしてきました。
822デフォルトの名無しさん:2006/05/19(金) 04:24:02
Directshowを使って動画変換ツールを作ろうとしているんですが
・動画変換が実時間でしか行われない。CPUはできたらパツパツまで使いたい
 (Clockを与えなければいけない?)
・エンコードのプロパティを毎回ウィンドゥで設定しなければならないので
設定情報を一括でなにか取り出したり登録したりする方法はないか。

という2点がわからず困っています。開発言語は現在サンプルで検証している
段階なんで、VCかVBです。AviSynthなどを使えばいいのかもしれませんが
できましたら前述2点の解決方法を知りませんでしょうか。
というか、動画変換はDirectshowでやるものではないのでしょうか?
823デフォルトの名無しさん:2006/05/19(金) 13:56:05
>>822
基本的にコーデック依存の話だけど、
エンコーダのプロパティは(UIでは)IAMCompressDialogで設定させといて
GetState / SetState で取出し、再設定が可能なことが多いですよ。
ただし GetState の cbState とかはアテにならないこともあるので注意。

DivX の場合はレジストリのどっかに書かれてるので丸ごと保存・復帰が
無難かも・・・
824デフォルトの名無しさん:2006/05/19(金) 15:20:30
>>823
レスありがとうございます。あれからいろいろしらべて、GetState/SetState
でやる方法で解決しそうな感じにはどうにかなったのですが、どうやらCodec
によってはできないこともある様子…というか使いたいCodecは非対応でした。
さらにXvidなどはプロパティも出ないし!
Icodecなどというものがよい予感ですが使い方がちんぷんかんぷんです。

動画変換の時間についてはサンプルグラバ取って圧縮するほうがいいので
しょうか。その場合コールバックをとるのがよいのですか?

825デフォルトの名無しさん:2006/05/19(金) 16:47:46
>>824
XvidはプロパティもAboutも表示できるよ。

昔AMCapを改造した時のコードからの抜粋を、以下に載せておきます。

------------------------

//xvid filter のインターフェースポインタを取得
IBaseFilter *pXvidFilter = GetCompressorByName(CLSID_VideoCompressorCategory, szName);
                 //↑これは自前関数

//IAMVfwCompressDialogsを取得
IAMVfwCompressDialogs *pVfwCompressDialogs;
hr = pXvidFilter->QueryInterface(IID_IAMVfwCompressDialogs, (void **)&pVfwCompressDialogs);

//各ダイアログが使用可能かチェックする方法
hr = pVfwCompressDialogs->ShowDialog(VfwCompressDialog_QueryConfig, hwnd);
hr = pVfwCompressDialogs->ShowDialog(VfwCompressDialog_QueryAbout, hwnd);

//各ダイアログを表示する方法
hr = pVfwCompressDialogs->ShowDialog(VfwCompressDialog_Config, hwnd);
hr = pVfwCompressDialogs->ShowDialog(VfwCompressDialog_About, hwnd);
826デフォルトの名無しさん:2006/05/19(金) 17:36:39
>>824
普通にグラフを作って、音声のレンダラを
入れなければ全速になると思うけど。

SetDefaultsyncSource(NULL) も必要かもしれない。
827デフォルトの名無しさん:2006/05/19(金) 22:07:43
SetSyncSource(NULL)でOK
828デフォルトの名無しさん:2006/05/21(日) 05:36:32
CSource派生でソースフィルタを作ってます。
CBaseFilter::QueryVendorInfo(LPWSTR* pVendorInfo)などが未解決になってしまいます。
XXX.obj : error LNK2001: 外部シンボル ""public: virtual long __stdcall CBaseFilter::QueryVendorInfo(wchar_t * *)" (?QueryVendorInfo@CBaseFilter@@UAGJPAPA_W@Z)" は未解決です。

これは私のプロジェクトではLPWSTR*はwchar_t*となり、strmbasd.libではLPWSTR*はunsigned short *としてバイナリ化されているためのようです。
私のプロジェクト(デバッグ用のテストプログラムもかねて作っているのでMFCのダイアログベース)です。
stdafx.hの中でLPWSTR*がwchar_t*にでもされているのでしょうか?
LPWSTRをunsigned short *に解釈されるようにするにはどうすればよいのでしょうか?
829デフォルトの名無しさん:2006/05/21(日) 09:59:25
うにこーど
830デフォルトの名無しさん:2006/05/21(日) 23:35:49
自分でstrmbasd.lib (strmbase.lib) をビルドすれば良いんじゃない?
831デフォルトの名無しさん:2006/05/22(月) 13:36:18
BaseClassesを使い、自分で作ったCMyFilterというフィルタをaxファイルにしないで
C++クラスの状態で自分のアプリの中だけで使いたいのですが
pUnk = CMyFilter::CreateInstance(NULL, &hr);
pUnk->NonDelegatingQueryInterface(IID_IBaseFilter, (void **)&m_pFilter);
m_pGraph->AddFilter(m_pFilter);
とやって使えるには使えるのですが、
m_pFilter->Release();
delete pUnk;
としてもメモリリークしてしまいます。
AddFilterしなければOKでした。
axファイル化してCOMとして登録しないと使うことはできないのですか?
832デフォルトの名無しさん:2006/05/22(月) 14:10:27
>>831
そんなことないですよ。
833デフォルトの名無しさん:2006/05/22(月) 14:43:57
ではやり方が問題なのでしょうか?
どのようにやったらよいか教えていただけませんか?
よろしくお願いします。m(_ _)m
834デフォルトの名無しさん:2006/05/22(月) 14:46:46
たぶん Release がひとつ足りないんでしょう。
フィルタグラフを解放した後、自前で Release を呼んで、
デバガで中までステップインして行って開放されることを確認してみてください。
835デフォルトの名無しさん:2006/05/22(月) 15:08:24
ありがとうございます。
Releaseをもうひとつ追加したところ
m_pFilter->Release()としたときに
m_pUnkの参照カウントm_cRefが0になり、いくつかのフィールドも0xfeefeefeのようになり、開放されているようです
最後にm_pUnkをdeleteするとデバッガが固まってしまいました。。
NonDelegatingQueryInterfaceを使ってIBaseFilterを得ることが間違っているのでしょうか?
もう少しがんばってみます。

836デフォルトの名無しさん:2006/05/22(月) 15:40:10
できました!
最後にm_pUnkをdeleteしているのが間違いのようでした。
参照カウントが0になった時点で自分で開放しているらしく
その状態でアプリを終了すればリークしないことがわかりました。
>>834さん、本当にありがとうございました!
837デフォルトの名無しさん:2006/05/24(水) 03:13:14
どなたか教えてくらはい

->SetWindowPosition(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);//上の方で#define
->RenderFile(L"hoge");
で再生させてるんですが
親ウインドウフルスクリーン時にwmvを使った場合だけ
wmvファイル側の元サイズのまま左下にちょこんっと描画されます。
aviやmpeg1,2だとSetWindowPositionで指定した範囲にきっちり描画してくれるのですが
wmvの場合なにか指定するべきモノがあるんでしょうか?
838デフォルトの名無しさん:2006/05/25(木) 15:12:04
>>826-827
音声入れるとやはり等速になるんですね…
もう少し修行してきます。レスありがとうございました。
839デフォルトの名無しさん:2006/05/25(木) 18:19:52
>音声入れるとやはり等速になるんですね…
>>826は正確には「音を鳴らす」音声のレンダラを入れると、
ということだと思う。再圧縮するだけなら全速力で動くよ。
840デフォルトの名無しさん:2006/05/25(木) 23:33:13
事前にバッファへ読み込ませたWMVのデータを再生させたいのですが
どうすればいいのでしょうか?

サンプルのDirectShow/Filters/Async/MEMFileを使って
MPEGやAVIは再生できたんですが…
841デフォルトの名無しさん:2006/05/26(金) 05:29:48
WMMEDIATYPE_ と WMMEDIASUBTYPE_ じゃだめなの?

と適当に答えてみる
842デフォルトの名無しさん:2006/05/27(土) 08:28:02
>>841
ありがとうございます。

DirectShow/Commonを組み込めば良いという事でしょうか?
とりあえずやってみます。
843デフォルトの名無しさん:2006/05/27(土) 10:44:42
VMR使ってるひといる?
844デフォルトの名無しさん:2006/06/07(水) 18:29:30
はい
845デフォルトの名無しさん:2006/06/07(水) 22:49:19
オーディオのコーデックをDirectShowFilterで書いてみました。
MediaPlayerでは使われるのですが、WindowsMediaPlayerで使われません。
WindowsMediaPlayerで認識させる方法をご存知のかた、いません?
ちなみに、拡張子ax形式のファイルです。
regsvr32で登録してます。
846デフォルトの名無しさん:2006/06/07(水) 22:49:50
DirectXのSDKを探していたんだが、ダウンロードセンターに行って検索すると
DirectX February 2006 Redistributable for Software Developers
とかいう奴があるんですよ。「開発者向け」ってあるからSDKかな〜?って思うじゃないですか。
これをダウンロードしてみたら、いつの間にか単なるEnd User Run-timeをダウンロードさせられるんだよ。
インストーラがもっともらしく出てくるからインストールしてみるとしっかり単なるRunTimeだし。
つーか動作変わったらどうしてくれるんだ?どの辺が開発者向け?
これって詐欺じゃね?
847デフォルトの名無しさん:2006/06/07(水) 23:28:41
>>845
ヒント:MP64とWMPでは出力画面のフィルタが違う。よって、フィルタグラフも違う。カラースペース変換周りも違う。
848デフォルトの名無しさん:2006/06/07(水) 23:33:52
MediaPlayerとWindowsMediaPlayerの違いがわからないオレは素人
849デフォルトの名無しさん:2006/06/08(木) 01:51:00
>>847
レス、ありがとうございます。
ということは、WMPが対応するような出力のフィルタをサポートするように、
自作フィルタのピンを設定する必要がある。
もちろん、そのピンに出力できるようなデコードを行う、
ですかね。

できればWMPがさぽーとするような出力フィルタの形式、もしくはそれを調べるのに
参考になるサイトのURLでも教えてもらえませんでしょうか?
850847:2006/06/08(木) 03:01:34
>>849
他のアプリのグラフを見る方法があったような。
詳しくはSDKミロ
http://www.google.com/search?num=50&hl=ja&q=WMP+VMR7&lr=lang_ja
851デフォルトの名無しさん:2006/06/23(金) 02:16:50
あげ
852デフォルトの名無しさん:2006/06/28(水) 10:23:16
platformSDKに移行してからプロジェクトファイルがなくなり、
makefileしかなくなったのでしょうか?

コマンドライン上だとデバッグしづらいので
Win32の空プロジェクトを作ってソースを突っ込んで
DLLにしてビルドしてみたのですが、
エントリポイントが無いと言われ、登録できませんでした。

いったいどうすればいいんでしょうか?
プロジェクトの設定が悪いんですか?
853デフォルトの名無しさん:2006/06/28(水) 22:46:13
>>852
このスレでも既出の件だと思うのですが、(キーワード:extras)
私はDirectX 9.0 SDK Update (February 2005) Extrasを展開して
プロジェクトだけコピーして使ってますよ。
854デフォルトの名無しさん:2006/06/28(水) 22:47:55
DLLにするっつーことはFilterか?
んー defファイルっぽいな
855デフォルトの名無しさん:2006/06/29(木) 15:44:53
>>853
ありがとうございます。解決できました。

>>854
defファイルはSDKに入ってたものをそのまま使ってます。

いまさらですが、コーデック作るのにはDMO使うほうがいいんですね。
こっち使ってみます。
856デフォルトの名無しさん:2006/06/29(木) 23:01:32
DMOか〜。便乗で質問
デバイスからのキャプチャやビデオレンダラのように多機能な描画系は
やっぱり既存のフィルタを使うしかないんですかね?
特にデバイスキャプチャはVFWが無い今はDirectShowしかないですか?
857デフォルトの名無しさん:2006/06/29(木) 23:16:13
レンダラはそれなりに簡単に作れますよ。
VMR がサポートしてる DirectX VA についてだけは、DDKでも資料がなくて
自前で実装するのは無理っぽいですが。

キャプチャフィルタも(そのハードの使い方がわかってるなら)自分でドライバなり
専用のフィルタなり書けば作れますよ。DDKにサンプルもあります。
858デフォルトの名無しさん:2006/06/29(木) 23:27:00
レンダラのほうはDirectDrawを使って自作するとか、そんなイメージですか?
レンダラウインドが複数枚重なったり、ウインドをストレッチしたりした時などを考えると面倒ではないのでしょうか?


キャプチャも世の中に出ているいろいろなキャプチャデバイスが広く利用できる
というのは、ほとんどのアプリケーションにおいては必須な要件だと思うので
やっぱりDirectShowを使うのが一番手っ取り早いのですかねぇ。
859デフォルトの名無しさん:2006/06/29(木) 23:35:32
>レンダラウインドが複数枚重なったり、ウインドをストレッチしたりした時などを考えると面倒ではないのでしょうか?

その面倒さはDirectShowの責任ではないような・・・
860デフォルトの名無しさん:2006/06/30(金) 00:23:42
しかしながら現実にはそのような機能が要求されることは多々ありますので。。
そういう事まで含めるとDirectShowというソリューションがベストなのかな。
861デフォルトの名無しさん:2006/06/30(金) 03:09:30
いや、だから
>レンダラウインドが複数枚重なったり、ウインドをストレッチしたりした時などを考えると面倒ではないのでしょうか?

これはレンダラに限らずDirect3D とか DirectDraw 全般そういうものだし、
「自作」っていうのは自分で書くことなわけで、自分で書くのは当然と思いますが。

自分で書くのが面倒なら自作なんてせずにVMRを使えばいい。
862デフォルトの名無しさん:2006/06/30(金) 09:24:18
比較的簡単に作れるんじゃなかったの?
863デフォルトの名無しさん:2006/07/03(月) 02:14:32
ばかな862はイチからaviファイルのプレイヤ作ることをお勧めする
864デフォルトの名無しさん:2006/07/03(月) 16:23:21
>>862
そのとおり、レンダラなんて簡単ですよ。
それでも自分でコード書きたくないほどの面倒くさがりなら、
「自作」は諦めたほうが良いということです。

 ケーキ自作したい・・・
 →簡単だよ!
 →粉混ぜたり焼いたりとか面倒ですよね?

というような気分
865デフォルトの名無しさん:2006/07/03(月) 19:45:21
質問の意図がまったく理解されていなかったんですね。
もう良いんですよ?
別にあなたたちに聞いても私が知っている以上のことは出てこないでしょうから。
866デフォルトの名無しさん:2006/07/03(月) 23:25:54
流れをぶったぎって845なのですが、
DMO形式で再度オーディオコーデックを書いてみました。

で、WMPは認識してくれるのですが、InternalProcessOutputが呼ばれず、
出力されません。
graphieditを使うとInternalProcessOutputは呼ばれます。
原因がまったくわからないので何かDMOフィルタを書いたことのある方
アドバイスをください。

おながいします。
867デフォルトの名無しさん:2006/07/06(木) 14:22:57
デジタルビデオカメラから映像音声を取り込み、DV Splitterフィルタにて映像音声に別け、
映像をMicrosoftWindowsMediaVideo9 VCMコーデックにて圧縮。その後、映像・音声をAvi Muxフィルタ
にてまとめ、ファイルに書き出すと音声が音声がコマ落ちした様になってしまいます。
※graphieditで調査してます。

不具合?VCM?スペック不足?デジタルビデオカメラ?って感じでどーにもこーにもです。
アドバイスをどうかお願いします。

また、以下では不具合現象が発生しません。
USBカメラ・ラインマイクのように映像・音声を別々のデバイスから取得する。
MicrosoftWindowsMediaVideo9 VCMの代わりにMPEG4を使用。
868デフォルトの名無しさん:2006/07/16(日) 18:59:17
モニカって可愛いの?
869デフォルトの名無しさん:2006/07/16(日) 20:12:37
>>868
食べちゃダメだ!
870デフォルトの名無しさん:2006/07/16(日) 20:55:57
Oh, モニカー♪
871instemast:2006/07/19(水) 16:49:14
どうやってdshowで簡単にmp3/aviをプレーしますか。codeおねがいします。
872デフォルトの名無しさん:2006/07/19(水) 21:40:19
>>871
つ PlayWnd
873デフォルトの名無しさん:2006/07/21(金) 00:17:33
ファイルコンテナを解析しているんだが、途中でわけがわからんなくなった
874デフォルトの名無しさん:2006/07/22(土) 06:06:48
質問です。
IBasicVideo::GetCurrentImage()で取得したイメージを下のような方法でHBITMAPにしようとしているのですが、

long bufSize = 0; BYTE* pBuffer = NULL;
pBasicVideo->GetCurrentImage(&bufSize, NULL);
pBuffer = new BYTE[bufSize];
pBasicVideo->GetCurrentImage(&bufSize, (long*)pBuffer)

long width, height;
pBasicVideo->GetVideoSize(&width, &height);

BITMAPINFO bmpinfo;
memset(&bmpinfo, 0, sizeof(bmpinfo));
bmpinfo.bmiHeader.biSize     = sizeof(bmpinfo);
bmpinfo.bmiHeader.biWidth    = width;
bmpinfo.bmiHeader.biHeight   = height;
bmpinfo.bmiHeader.biPlanes   = 1;
bmpinfo.bmiHeader.biBitCount  = 32;

BYTE* pImageBits = NULL; HBITMAP hBmp = NULL;
hBmp = ::CreateDIBSection(NULL, &bmpinfo, DIB_RGB_COLORS, (void**)&pImageBits, NULL, 0);
int size = ???;
memcpy(pImageBits, pBuffer, size);

sizeはどのように設定すればいいのでしょうか。
 int bits = bmpinfo.bmiHeader.biWidth * bmpinfo.bmiHeader.biBitCount;
 size = ((bits+((0x20-bits&(0x20-1))&(0x20-1)))>>3) * bmpinfo.bmiHeader.biHeight;
とすると、対象のファイルによってAccessViolationといわれてしまう場合があります。
 size = std::min(((bits+((0x20-bits&(0x20-1))&(0x20-1)))>>3) * bmpinfo.bmiHeader.biHeight, bufSize);
とすると、AccessViolationは発生しませんが、上1/4程が真っ黒で残りの部分も白黒(グレイスケール)という画像になってしまいます。
 size = bufSize;
とすると、両方の現象が起こってしまいます。
875874:2006/07/22(土) 08:30:16
すみません、自己解決しました。
他の場所で使用したIMediaSeekingをReleaseするのを忘れていたので直したところ、
1つめと2つめの方法でうまく取得できるようになりました。

謎ながらいちおうこれで取得できるようになったのですが、さらに検証したところ
どうやら常に bufSize - ((bits+((0x20-bits&(0x20-1))&(0x20-1)))>>3) * bmpinfo.bmiHeader.biHeight == 40 のようなので
次のようにするのが正しいようですね。

long bufSize = 0; BYTE* pBuffer = NULL;
pBasicVideo->GetCurrentImage(&bufSize, NULL);
pBuffer = new BYTE[bufSize];
pBasicVideo->GetCurrentImage(&bufSize, (long*)pBuffer)

BITMAPINFO bmpinfo;
memcpy(&bmpinfo, pBuffer, sizeof(BITMAPINFO));

BYTE* pImageBits = NULL; HBITMAP hBmp = NULL;
hBmp = ::CreateDIBSection(NULL, &bmpinfo, DIB_RGB_COLORS, (void**)&pImageBits, NULL, 0);
memcpy(pImageBits, pBuffer + sizeof(BITMAPINFO), bufSize - sizeof(BITMAPINFO));

876デフォルトの名無しさん:2006/07/23(日) 16:53:08
動画を再生中に IVideoWindow::SetWindowPosition を繰り返し呼ぶと動画の再生がとまってしまうことがあるのですが、
どうすれば回避できるのでしょうか?
とまるのは動画のみで、音声は再生されたままです。
IMediaControl::Stop などを呼んでもリセットされません。
また、IMediaEventEx でイベントを見ても特に何も通知されていません。
試した限りではWMV形式の動画のみで起こるようです。
877876:2006/07/29(土) 00:32:22
Media Player 10 をインストールしたら直りました。
878デフォルトの名無しさん:2006/07/31(月) 19:54:25
USBカメラの画像をICaptureGraphBuilder2インターフェースを使用して表示しています。
しかし、どうやらオーバーレイ表示されていないようです。
オーバーレイにするにはどうしたらいいのでしょうか
879デフォルトの名無しさん:2006/08/21(月) 21:21:56
VC-1 Advanced Profileβ入れたら、モジュール読み込み違反が起きるように
なったので戻した。AmCapは動くのになあ。
880もー:2006/08/22(火) 11:34:10
初めて質問します。
VMR9 を使って、BMP画像を取得するアプリを作ろうとしてます。

あるフレーム位置の画像を取得するには、IVMRWindowlessControl::GetCurrentImage
を使って取得できますが、カレントのフレーム位置を変更して直後に GetCurrentImage をすると、
意図したフレームの画像ではなく、直前の画像が取得されてしまうことがあります。
おそらく、VMR のレンダラが間に合っていない為だと思われます。

どのようにしたら、意図したフレームのイメージを取得できるか、ご存知の方がおられましたら、
ご教授ください。
881デフォルトの名無しさん:2006/08/22(火) 15:55:34
DirectShowって、いわゆるDirect2D?
882デフォルトの名無しさん:2006/08/22(火) 17:38:31
むしろDirectXから追放された
883デフォルトの名無しさん:2006/08/22(火) 21:54:32
VISTAはWinGをサポートするんだろうか。
884デフォルトの名無しさん:2006/08/22(火) 22:10:13
DSFの書籍が全くないのはなぜ?
885デフォルトの名無しさん:2006/08/22(火) 22:53:11
誰も書かないからに決まってるだろ。
886デフォルトの名無しさん:2006/08/22(火) 23:47:14
>>881
Direct2Dにあたるのは、DirectDrawのはず。
887デフォルトの名無しさん:2006/08/23(水) 05:59:34
DirectShowプログラミングで
CComPtrとかCComQIPtrを使う人が少ないのは何故ですか?
888デフォルトの名無しさん:2006/08/23(水) 20:49:12
あれはあれで使い方を習得しないといけないからな。
889デフォルトの名無しさん:2006/08/24(木) 02:01:04
なるほど
ただでさえ、把握しきれないほどのDirectShowという難解なものがあるのに
CComPtrやらのインターフェースにまで手が回らないというのが、風潮なのですね。

CComPtrを使うメリットはいろいろ自動でやってくれるというのもありますが、
デメリットしては熟知していないが故の予期せぬ失敗みたいなものがついてまわる。
そんな感じなんですかね。

CComPtrを使ってみようと思っているのですが、
間違っているのかと不安になりました。
決して、完全なる悪というわけでないということですよね。
CComPtr<IGraphFilter> pGF
CComPtr<IMediaControl> pMC
  ・・・・
 pGF.CoCreateInstance(CLSID_....)
  ・・・
pMC = pGF

なんか、このインターフェースって
物凄いことがおこなわれているような気がします。
でも、あまり情報がないという、諸刃の剣!
890デフォルトの名無しさん:2006/08/24(木) 20:33:25
なんだそりゃw
891デフォルトの名無しさん:2006/08/24(木) 22:14:44
物凄いことって?
参照カウンタが上がるたびにレジストリをガーっと検索したり?
892デフォルトの名無しさん:2006/08/25(金) 00:42:26
> CComPtr
ATLやってるやつからすれば普通のことだよ
893デフォルトの名無しさん:2006/08/25(金) 03:08:22
んーなるほど
ATLをやってる人からすれば、普通のことなんですね。

ググった感じだとアレですが、
このような過疎スレで、いくつか反応があったので、
結構、知ってる人は多そうですね。安心しました。

CComPtr とか・・・

他人任せはいけないことですが、もっと皆にも使って欲しいと、
そのように思いました。
894デフォルトの名無しさん:2006/08/25(金) 15:06:26
ATLが過疎なのさ
895デフォルトの名無しさん:2006/08/25(金) 20:37:03
COMのせいで無用に難解になったからな。
もう何もかも終わりだ
896デフォルトの名無しさん:2006/08/25(金) 22:32:14
Win32と同じ関数体系がいいとも思わないがw
897デフォルトの名無しさん:2006/08/26(土) 01:01:50
COMよりはいいと思うんだけど。
898デフォルトの名無しさん:2006/08/26(土) 11:15:10
要は慣れ
899デフォルトの名無しさん:2006/08/26(土) 13:31:23
マナゲト最強
900デフォルトの名無しさん:2006/08/26(土) 23:32:05
いやCOMよりは、どっちかって言うと、すいている方がいいな。
901デフォルトの名無しさん:2006/08/26(土) 23:36:35
あのー、こんなおり、つまらない質問で恐縮なのですが、
フィルタ一覧の中にあったんですけど、
{WDMストリーム標準データ タイプ ハンドラ}って何ですか?
902デフォルトの名無しさん:2006/09/01(金) 02:40:45
FilterGraph等の名前のGraphって
単に「graph=表」だと意味がさっぱり通りません。
この場合のgraphは、日本語にするとどんな意味になるんでしょうか?
903デフォルトの名無しさん:2006/09/01(金) 03:11:38
>>902
コンピュータや数学の世界では、グラフとは頂点とそれらを結ぶ線分の集合のこと。
(そもそも日常の用法でもグラフ=表じゃないと思うけど)
904デフォルトの名無しさん:2006/09/02(土) 14:03:55
レンダラ自作しようと思い、
CBaseRendererを継承させようとしたところ、
そんなクラスは知らないと怒られてしまった。
ヘルプを見ると、CBaseRendererはRenbase.hに宣言されているらしいけど、
そのRenbase.hがそもそも見つからない。

ということで、レンダラを自作するのに必要なものってなんでしょうか?
905デフォルトの名無しさん:2006/09/02(土) 20:12:05
> Renbase.hがそもそも見つからない
最近のDirectShowだとわからんが、少なくとも俺はBaseClassesフォルダの中にあるよ。
906デフォルトの名無しさん:2006/09/02(土) 21:55:43
DirectShowのサンプルは今はPlatformSDKにあるよ
907デフォルトの名無しさん:2006/09/02(土) 22:11:29
そんなことも自力で解決できない奴がレンダラなんか作れるのか?
908デフォルトの名無しさん:2006/09/02(土) 22:44:14
数学能力あっても調査能力がない奴たまにいるよな
909デフォルトの名無しさん:2006/09/02(土) 23:25:21
俺のことかよ! σ(゚д゚ )
910デフォルトの名無しさん:2006/09/02(土) 23:27:39
本物のプログラマは数学能力重視でいい
ライブラリ調査に時間をとられるなんて本末転倒だ
911デフォルトの名無しさん:2006/09/02(土) 23:33:01
Javaプログラマに言っているのか?
912デフォルトの名無しさん:2006/09/03(日) 01:14:35
ライブラリ調査も何も、BaseClassは基本だろ?
913デフォルトの名無しさん:2006/09/03(日) 01:52:29
プログラム=ライブラリを使用する
914デフォルトの名無しさん:2006/09/21(木) 00:52:20
フィルタを自作しているのですが、
アプリケーションからフィルタにパラメータを設定したいと思っています。
それには、IKsPropertySetを使えばよさそうなんですが、
それをフィルタに実装する方法がわかりません。
サンプルを探しても見当たらなかったので、具体的にどうしたらよいかご教示頂けないでしょうか?
915デフォルトの名無しさん:2006/09/21(木) 01:18:05
フィルタはクラスじゃないの?
916914:2006/09/21(木) 09:37:21
フィルタはクラスです。
ある人から、フィルタをIKsPropertySetから派生させろ、
と言われたのですが、良く分かりませんでした。
↓のような感じ?

class EncFilter : public CTransformFilter, public IKsPropertySet
{
public:
DECLARE_IUNKNOWN;// CUnknownのインターフェース定義
EncFilter(TCHAR *tszName, LPUNKNOWN pUnk, HRESULT *phr);
virtual ~EncFilter();
static CUnknown *CreateInstance(LPUNKNOWN punk, HRESULT *phr);
HRESULT CheckInputType(const CMediaType *mtIn);
HRESULT CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut);
HRESULT Transform(IMediaSample *pIn, IMediaSample *pOut);
HRESULT DecideBufferSize( IMemAllocator *pAlloc,ALLOCATOR_PROPERTIES *pProperties);
HRESULT GetMediaType(int iPosition, CMediaType *pMediaType);



};
917デフォルトの名無しさん:2006/09/21(木) 13:30:15
わからないけど
下のサイトのオリジナルフィルタを作るの
(その3)独自インターフェースを追加しVBからつかうソース ページが役に立たないかな?
ttp://www.geocities.co.jp/SiliconValley/7406/tips/dshow/
918デフォルトの名無しさん:2006/09/21(木) 21:04:53
>>916
別にIKsPropertySetじゃなくても自分で勝手に作ったインターフェースでもOK
DECLARE_INTERFACEとかいうマクロがあったような。。
919デフォルトの名無しさん:2006/09/21(木) 21:20:08
GraphEditでピンの名前が文字化けして不明になるものがあるんですが、
正常に表示する方法はありますか?
920デフォルトの名無しさん:2006/10/01(日) 12:18:14
VisualStudio C++ 2003
にて
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdx8_c/ds/AppDev/Capture_Intro.asp
のコードを入力して、このプログラムで作成された
Example.aviをWindowsMediaPlayerで実行したところ
「ファイルを再生できません。プレーヤーがそのファイルの種類をサポートしていないか、そのファイルの圧縮に使用した
コーデックをサポートしていない可能性があります。」
とでます。原因はなぜでしょうか?
ご指導お願いします。
921デフォルトの名無しさん:2006/10/03(火) 19:01:04
>>920
そのAVIをまずGraphEditにつっこんでみなよ
922デフォルトの名無しさん:2006/10/05(木) 23:08:42
directshowを使ったキャプチャソフトを作っています。
フレームレートを変化できるようにしたいのですが、なかなか実装できずに困っています。

SampleGrabber
を使って流れてくる情報を二回に一回捨てるみたいなイメージでいるのですが
具体的なコードがさっぱりわからないのですが、誰か同様のことをやってらっしゃる方、教えていただけませんでしょうか?
923デフォルトの名無しさん:2006/10/06(金) 00:50:35
記録のタイミングでフレームレートをいじりたいってこと?
動画の使用によるよなあ。大概はヘッダ情報にフレームレートとか持ってるでしょ
その辺りもいじらないとね AVIにしろMPEGにしろ

サンプルグラバで2回に1回捨てるというけど、それは1サンプル1フレームならではの
理屈なので確認してね あとタイムスタンプも(フレーム飛ばす分)適切に変更してね
924デフォルトの名無しさん:2006/10/06(金) 01:20:26
キャプチャソフトというからにはUSBカメラとかキャプチャデバイスからの取得だろうな。
キャプチャデバイスにはあらかじめフレームレートを設定できるが、それを動的に変えたいということかな?
AVIファイルに落とすのならサンプルグラバではなく、自作のTransformフィルタを作成するのがよいと思う。
そいつで、偶数フレームに関してはIMediaSample::SetTimeをつかって再生時間が2倍になるようにし、
奇数フレームは捨ててしまう。これでよいと思う。
グラフ構成は
[SRC]-[自作Trans]-[AVI MUX]-[FileWriter]
925デフォルトの名無しさん:2006/10/06(金) 15:14:09
フレームレートが変わるならメディアフォーマットも変わるだろ。
たとえば未圧縮ビデオストリームの場合VIDEOINFOHEADERのAVGTIMEPERFRAMEとか。
926デフォルトの名無しさん:2006/10/06(金) 15:17:28
920で質問したものです。
下のようなコードを書いたのですがファイルの保存がうまくいきません。
アドバイスお願いします。

// pCap は、前のコードのキャプチャ フィルタである。
pGraph->AddFilter(pCap, L"Video Capture");

// プレビュー。
pBuilder->RenderStream(
&PIN_CATEGORY_PREVIEW,
&MEDIATYPE_Video,
pCap,
NULL, // 圧縮フィルタなし
NULL // デフォルトのレンダラ
);
IVideoWindow *pVidWin = NULL;
HWND g_hwnd=NULL;
pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin);
g_hwnd=reinterpret_cast<HWND &>(panel1->Handle);
pVidWin->put_Owner((OAHWND)g_hwnd);
pVidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);
RECT grc;
GetClientRect(g_hwnd, &grc);
pVidWin->SetWindowPosition(0, 0, grc.right, grc.bottom);
927デフォルトの名無しさん:2006/10/06(金) 15:18:58
926の続き

//保存
hr = pBuilder->SetOutputFileName(
&MEDIASUBTYPE_Avi, // ターゲット ファイルの AVI を指定する。
L"d:\\Example.avi", // ファイル名。
&pMux, // Mux へのポインタを受け取る。
NULL
);// (省略可能) ファイル シンクへのポインタを受け取る。
hr = pBuilder->RenderStream(
&PIN_CATEGORY_CAPTURE, // ピン カテゴリ。
&MEDIATYPE_Video, // メディア タイプ。
pCap, // キャプチャ フィルタ。
NULL, // 中間フィルタ (省略可能)。
pMux
); // Mux フィルタまたはファイル シンク フィルタ。
pGraph->AddFilter(pMux, L"Mux");
// Mux フィルタを解放する。
//pMux->Release();

// ビデオ キャプチャ ストリームを制御する。
IMediaControl *pControl;
REFERENCE_TIME rtStart = 10000000, rtStop = 50000000;
const WORD wStartCookie = 1, wStopCookie = 2; // 任意の値。
hr = pBuilder->ControlStream(
&PIN_CATEGORY_CAPTURE, // ピン カテゴリ。
&MEDIATYPE_Video, // メディア タイプ。
pCap, // キャプチャ フィルタ。
&rtStart, &rtStop, // 開始タイムおよび終了タイム。
wStartCookie, wStopCookie // 開始イベントおよび終了イベントの値。
);
928デフォルトの名無しさん:2006/10/06(金) 15:24:55
>>927
Mux を AddFilter してから RenderStream するように。
929デフォルトの名無しさん:2006/10/06(金) 16:35:38
下記のように変更してみたのですが、WindowsMedeaPlayerで見ると
同じようにエラーがでます。
ファイルサイズは0でないので何かはできているようなのです。
引き続きアドバイスお願いします。


//保存
hr = pBuilder->SetOutputFileName(
&MEDIASUBTYPE_Avi, // ターゲット ファイルの AVI を指定する。
L"d:\\Example.avi", // ファイル名。
&pMux, // Mux へのポインタを受け取る。
NULL
);// (省略可能) ファイル シンクへのポインタを受け取る。

pGraph->AddFilter(pMux, L"Mux");

hr = pBuilder->RenderStream(
&PIN_CATEGORY_CAPTURE, // ピン カテゴリ。
&MEDIATYPE_Video, // メディア タイプ。
pCap, // キャプチャ フィルタ。
NULL, // 中間フィルタ (省略可能)。
pMux
); // Mux フィルタまたはファイル シンク フィルタ。

// ビデオ キャプチャ ストリームを制御する。
IMediaControl *pControl;
930デフォルトの名無しさん:2006/10/06(金) 17:35:40
>>920
AMCAPみたいな、ちゃんと動くサンプルのソース眺めたほうが早いんじゃない?
931デフォルトの名無しさん:2006/10/06(金) 22:46:59
>>920
とりあえずココとか参考にすると良いかも
ttp://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/directshow.html
932デフォルトの名無しさん:2006/10/07(土) 22:13:10
エラーが起きるって具体的に何よ?
小出しにされるとイライラする
933デフォルトの名無しさん:2006/10/10(火) 22:14:10
小出さんもイライラ
934デフォルトの名無しさん:2006/10/11(水) 19:14:02
タイムラインオブジェクトを再生する際にフレームレートやビットレートを変更することは可能でしょうか?
ご存知の方いらっしゃれば教えて下さい。
(デフォルトフレームの設定はできるようですが実質役に立ちません)
935デフォルトの名無しさん:2006/10/20(金) 03:46:44
VBでUSBカメラのコントラスト等を設定したいだけど、検索してサンプルを
見つけられなかったです。
設定方法をご存知の方、教えてください。
936デフォルトの名無しさん:2006/10/20(金) 10:53:29
SDKのドキュメント嫁
937デフォルトの名無しさん:2006/10/22(日) 06:38:39
DirectShowがプラットフォームSDKに移動したというけれど
プラットフォームSDKをインストールしてビルドしてみたらstreams.hが見つからないと怒られてしまいました。
もしかしてヘッダファイルもAPIもBaseClassesも変更されちゃったの?
938デフォルトの名無しさん:2006/10/22(日) 09:09:27
目には目を
サンプルはサンプルに
939デフォルトの名無しさん:2006/10/22(日) 16:55:06
ごめん。ちゃんとあった。。ありがと
940Direct将:2006/10/27(金) 01:11:01
Windows Mobile 5.0 向けにDirectShowフィルタを作成しているのですが、
作成したフィルタ(*.ax)を登録するにはどうしたらよいでしょうか。
PCの場合は、
regsvr32.exe *.ax
として、フィルタを登録できたのですが、
Windows Mobile 5.0 上では、このようなコマンドはないのでしょうか。
どうかご教示お願い致します。

Visual Studio 2005を使って、フィルタを作成しています。
(PC版はVC++で作っていました。)
941デフォルトの名無しさん:2006/10/27(金) 10:01:21
regsvrce はないの?
942Direct将:2006/10/27(金) 21:48:48
試してみました。
Windows Mobile 5.0用のregsvrce.exeが見つからなかったので、
C:\Program Files\Microsoft eMbedded C++ 4.0\EVC\WCE400\TARGET\ARMV4I
からregsvrce.exeを実機にコピーし、フィルタの登録を試みましたが、
「Loadlibrary(""\Windows\フィルタ名.ax"")failed.
GetLastError returns 7e」
というエラーが出て登録できませんでした。
943デフォルトの名無しさん:2006/10/27(金) 22:30:06
>>940

プロジェクトのプロパティ→構成プロパティ→配置→サーバー側のアクション→出力の登録→はい

これでいけるはず。
944デフォルトの名無しさん:2006/10/28(土) 15:33:24
avi再生でISampleGrabberCBを継承してコールバックを受け取ってるんだけど
再生中(コールバックが繰り返し呼ばれている状態)
Ctrl+Alt+Deleteまたは、Winキー+'L'によりデスクトップ画面から
ロック画面またはセキュリティ画面に切り替えて、普通にデスクトップに
復帰するとコールバックが停止してしまうんだけど、なんで??
(ちなみにこのとき、IMediaControlのGetState()はRUN、IBaseFilterのGetStateはPAUSEとずれてた)

デスクトップから画面切り替えなきゃまったく問題ないです。
945デフォルトの名無しさん:2006/10/28(土) 16:26:16
とりあえず原因というか、再開する契機はわかりました。
946デフォルトの名無しさん:2006/10/29(日) 03:22:10
ソースフィルタを作ってるんですが、シーク後の再生する瞬間にノイズが入ります。
デバッグするとソースフィルタからは正しくデータを渡しているように見えます。
どこかのフィルタのバッファがクリアされてないのでしょうか?

対策方法はあるのでしょうか?
947デフォルトの名無しさん:2006/10/29(日) 03:26:42
プル型のソースフィルタを作ってます。
ネットワークのストリーミング再生ということもあり、シーク時にバッファリングの時間がかかる事があります。
その時にIMediaSeeking::GetCurrentPosition()すると、勝手に無音状態のまま時間が進んでしまいます。
バッファリングが完了して音が出始めると正しく同期しようとします。

再生開始まで時間がかかる場合にGetCurrentPositionの値が進まないようにはできないのでしょうか?
948デフォルトの名無しさん:2006/10/29(日) 09:24:58
プル型ってことはソースフィルタの後ろにあるパーサフィルタが時計を管理していると思われ。
パーサフィルタが時間が来たと思えば、データが無くてもメディアサンプルをレンダラに渡すから時間が進むのだろう。
パーサフィルタも開発しているなら何とかできるのかもしれない。
そうでなければプッシュ型にするのがよいと思う。
949デフォルトの名無しさん:2006/10/29(日) 15:45:47
IAMVideoProcAmpでチラツキの設定を50Hz、60Hz、なし
のどれかを設定する方法を教えてください。
950デフォルトの名無しさん:2006/10/29(日) 16:21:15
おれもIAMVideoProcAmpの設定方法知りたい
951947:2006/10/29(日) 19:54:46
>>948
バッファリングが必要な場合は一般的にはプッシュ型にするのでしょうか?
プッシュ型だとソースのコーデックが分かってないとSeekの解決(time → byte)などができなくないですか?
952デフォルトの名無しさん:2006/10/29(日) 21:11:13
ネットワーク越しにファイルを再生するの?
ソースフィルタは何をベースに作ってるの?CSource ? IFileSourceFilter?
953947:2006/10/29(日) 21:12:16
>>952
IFileSourceFilterです。ネットワーク越しにファイルを再生します。
954デフォルトの名無しさん:2006/10/29(日) 21:27:07
WaitForNextがパーサフィルタから呼び出されるのでは?
そこでバッファが完了するまでブロックさせればよいのでは
955947:2006/10/29(日) 21:41:01
>>954
WaitForNextはよくわかってないのですが、
SyncReadされる場合は無意味ではないでしょうか?
956デフォルトの名無しさん:2006/10/29(日) 21:51:24
SyncReadでブロックしているにもかかわらずオーディオの時間がどんどん経過するって事?
957947:2006/10/29(日) 21:57:16
>>956
だという理解なんですが。。ありえないでしょうか?
958デフォルトの名無しさん:2006/10/29(日) 22:02:42
オーディオレンダラとパーサフィルタの間にサンプルグラバを仕込んでチェックしてみるとよいかもね。
959947:2006/10/29(日) 22:03:55
>>958
それでやってみます。
ありがとうございました。
960デフォルトの名無しさん:2006/10/30(月) 00:35:46
物によるとは思うけど、動画編集ソフト(フレーム単位で扱えるもの)って一般的にDirectShow使ってる?/使ってない?

使ってないソフトの場合は、特定のコーデックを直に使うとか、
自前でファイル読んだりしてるのかな?
961デフォルトの名無しさん:2006/10/30(月) 20:44:35
グラフが稼動中はオーディオレンダラーの時間は勝手に進んでいき、
基準クロックよりも前のタイムスタンプを持ったサンプルが届くと
クロックに追いつくまで基準クロックが止まるけど、そーいう話の
ことをしてるの?

あと、上はエンドタイムを持たないオーディオサンプルの場合で、
エンドタイムも持ってる場合は、基準クロックは止まらずに、
基準クロックに追いつくまでオーディオサンプルは捨てられて
いくけど。

これは MS の標準オーディオレンダラーの挙動なんで、カスタム
レンダラーつかってる場合はまた別ね。
962947:2006/10/30(月) 23:20:06
>>961
まさしくそういう話です。
MSの標準レンダラーはそういう仕様なのですね。
結局根本的にはレンダラを自作する必要があるのですね。
勉強になりました。
963デフォルトの名無しさん:2006/10/31(火) 01:10:54
オーディオレンダラの動きってそうなんだっけ?
オーディオメディアサンプルに与えられたタイムスタンプが、現在の時間になるんだと思ってた。

たとえば完全に連続したPCMデータを、タイムスタンプだけイタズラして、あるときゼロにして渡すと、
オーディオの再生は問題ないが、フィルタグラフ全体の時刻がゼロに戻ってしまうため、
ビデオのフレームはそのフレームのタイムスタンプになるまで待つため、ビデオがとまって見える

と理解してたんだけど。
964デフォルトの名無しさん:2006/11/01(水) 14:03:43
USBカメラの設定画面を呼び出すC++のコードを紹介しているページ
教えてください。数行ならここで教えていただけると助かるのですが・・。
965デフォルトの名無しさん:2006/11/01(水) 20:22:09
>>964
これでいいのかな?
つ[ttp://mobiquitous.com/programming/usbcamera.html]

おいらはVBでカメラの色調などを直接設定したいです。
教えてください。
966デフォルトの名無しさん:2006/11/01(水) 20:55:00
え。。
967デフォルトの名無しさん:2006/11/02(木) 03:06:01
968デフォルトの名無しさん:2006/11/02(木) 20:31:09
DirectShowの簡単フィルタ作成入門のウェブページ作ろうかと思うが需要ある?
僕自身やり始めて一週間程度なのでインスコ〜グラフエディット〜プロジェクトのつくりかた〜DLL作成
までしかわからんが
969デフォルトの名無しさん:2006/11/02(木) 22:29:21
>>968
おれおれ
970デフォルトの名無しさん:2006/11/02(木) 22:39:01
>>968
おれおれ

といいたいけど、Win2K + VC6でライブラリのビルド、挫折したからな…
971デフォルトの名無しさん:2006/11/02(木) 22:55:23
おれおれなんだけど、
実際にこの辺のちゃんとしたやり方が知りたい。
自分のわかったとこまで公開してツッコミもらいたい
VC.NET2003でaxファイルを作るのにはなんのプロジェクトを新規作成するのがただしいの?
972971:2006/11/02(木) 23:05:25
>>970
プラットフォームSDKの場合、基底クラスのフォルダにプロジェクトファイルがない。
で、MakeFileをつかってビルドしてみたがVC6じゃあリンク通らない関数があった。
えぇきっぱり諦めましたさVC6を…。
973デフォルトの名無しさん:2006/11/02(木) 23:16:18
>>971
新規作成しなくてもフィルタのサンプルをパクってくればいいんじゃね?
974971:2006/11/03(金) 00:09:30
>>973
新規で作りたくならない?
後どのみち環境設定し直ししないとaxファイルのファイル名が変えられないのだが。
975デフォルトの名無しさん:2006/11/03(金) 12:10:47
DirextX SDKの8.1くらいまでならVC6用のプロジェクトファイルがあったと思う。
976デフォルトの名無しさん:2006/11/03(金) 15:16:44
フィルタは知らんけどVC6でDirectShowを使うなら
#include <dshow.h>
#pragma comment(lib, "strmbase.lib")

Platform SDKの
audevcod.h
DShow.h
specstrings.h
strsafe.h
が有ればビルド出来るはず。
インクルードパスに直接Platform SDK指定しても良いけど
俺は上記ファイルだけ抽出したフォルダをパス指定した。

Platform SDK
http://www.microsoft.com/downloads/details.aspx?familyid=D8EECD75-1FC4-49E5-BC66-9DA2B03D9B92&displaylang=en
(ページ下にWeb Installも有る)
977976:2006/11/03(金) 15:19:17
補足:俺もWin2K。
978デフォルトの名無しさん:2006/11/03(金) 20:49:56
>>976>>977
GJ
じゃこれもまとめとこ
979デフォルトの名無しさん:2006/11/03(金) 22:47:31
>>976-977
Win2K + VC6でstrmbase.libをビルドできなくて挫折したんだが、
なくてもできるの?
980デフォルトの名無しさん:2006/11/03(金) 23:13:38
>>979
DirectX8.1SDKでつくればおkwwwww
ってそれじゃあ無意味だもんな
981976:2006/11/03(金) 23:23:51
Win2K + VC6でstrmbase.libは
C:\Program Files\Microsoft Visual Studio\VC98\Lib\strmbase.lib
に置いてあったんだが・・・。
普通は無いの?
982976:2006/11/03(金) 23:31:36
ビルド出来て動いてるのはDirectX8以降のインターフェイス使ってないからかもしれない。
VC6でビルドしたやつは↓しか使ってない。
IGraphBuilder
IMediaControl
IVideoWindow
IMediaEvent
IMediaSeeking
983デフォルトの名無しさん:2006/11/03(金) 23:48:53
たぶんそれ以降に実装されたものは
僕みたいにビルドがとおらないんだろう。

まとめサイトとか作って
strmbase.lib とかそれぞれのSDKバージョンでビルド
されたものがアップされてたほうがよいね
984デフォルトの名無しさん:2006/11/04(土) 16:29:01
(゚д゚)
985デフォルトの名無しさん:2006/11/04(土) 16:45:16
調べたところ、重要なのは strmiids.lib みたいだ。
strmbase.libはstrmiids.libにほんの数個のインターフェイスを追加しただけ。

strmbase.libをビルドするとき、VC6のstrmiids.libをリンクすれば
VC6でリンクするとき「デバッグ情報が壊れています」エラーは出なくなる。
しかしVC6のstrmiids.libには新しいDirectXの
インターフェイスが入ってないから意味が無い。

VC6でビルドしたstrmiids.libが無いかぎり、
どうstrmbase.libビルドしても
デバッグ版strmbase.lib(の中のstrmiids.lib)をリンク出来ない。
986デフォルトの名無しさん:2006/11/04(土) 19:07:47
DirectX 9.0 SDK (October 2004)のstrmiids.libはVC6でリンク出来た。
VC6でDirectShow使うソースでリンクエラー出た人、エラーでたインターフェイス教えてくれない?
リンク出来るか試してみたい。

※ DirectX 9.0 SDK (October 2004)
http://download.microsoft.com/download/1/5/1/1513e3ec-f6e2-4fb1-bf27-7c8983b3bf91/dxsdk_oct2004.exe
987デフォルトの名無しさん:2006/11/04(土) 19:17:22
>>986
了解。
僕のやった環境はPlatformSDKの最新版の基底クラスを
VC6でビルドした際に出たんだ。
しょうがないので基底クラスは別環境で作って自作ソースを
ビルドした際に出たので、今度同じ環境をつくって試してみるよ。
988デフォルトの名無しさん:2006/11/04(土) 21:03:43
ちょっと混乱してるのでまとめてほしいんだけど。
PlatformSDKに移ったDshowの何が問題になってるの?
989デフォルトの名無しさん:2006/11/04(土) 21:10:29
dshowはdoushowもないのでDirectX SDKから外されました。
990デフォルトの名無しさん:2006/11/04(土) 21:42:18
VC6など古い環境ではライブラリのビルドが素直にできない
991987:2006/11/04(土) 21:46:44
まぁ結局出来た訳だが自分がつまづいたところを「おれおれ」
であっても公開するために纏めてる

さっきUSBカメラ買ってきた。画質悪い(´・ω・`)
992デフォルトの名無しさん:2006/11/05(日) 01:59:29
>>989
988への回答かと思ってちゃんと読んだ瞬間ガム吹いてモニタに付いたw
993デフォルトの名無しさん:2006/11/06(月) 20:04:36
('A`)
994デフォルトの名無しさん:2006/11/06(月) 21:46:22
http://www.microsoft.com/japan/msdn/directx/techart/vmr_d3d.aspx#vmr_d3d_topic3c
ここを参考にVMR9を使ってDirect3Dでの表示を行おうとしているのですが
CAllocator::PresentImageが呼ばれるタイミングがよくわかりません。
directshowが勝手に呼び出してくれるのでしょうか?
ちなみにサンプルブラウザではVMR9Allocatorというやつです。
995デフォルトの名無しさん:2006/11/08(水) 00:26:37
996デフォルトの名無しさん:2006/11/08(水) 01:03:54
ちったあ埋めようとしようぜ
997デフォルトの名無しさん:2006/11/08(水) 02:21:14
( ´ー`)
998デフォルトの名無しさん:2006/11/08(水) 05:31:29
('_')
999デフォルトの名無しさん:2006/11/08(水) 05:32:29
(-"-)
1000デフォルトの名無しさん:2006/11/08(水) 05:33:13
つづくしーーー(^・^)
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。