- ベストアンサー
VC++でDirectShowのグラフにフィルターを追加する方法
- VC++でDirectShowを使用して、ビデオキャプチャデバイスからファイルに保存する方法について説明します。
- 保存する際には、圧縮を行いたい場合はMicrosoft Video 1というフィルターを追加する必要があります。
- 初心者の方には、MSDNなどの情報が理解しにくい場合もあるため、簡単なサンプルがあれば助かるでしょう。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- DirectShowでフィルタの削除
現在、キャプチャソフトを作っています。 プレビューとキャプチャの切替で行き詰まってしまいました。 プレビューからキャプチャき切り替える時は、グラフにファイルライタフィルタを追加することで簡単に切り替える事が出来るのですが、 キャプチャからプレビューに切り替える時はファイルライタフィルタをグラフから削除する方法がわからないのです。 IFileSinkFilter->Release()で消すことはできそうですが、グラフエディタで見ると残ってしまいます。 なのでキャプチャとプレビューを切替続けると不具合が起きそうです。 ICaptureGraphBuilder2::SetOutputFileName(...)でグラフに追加したファイルシンクフィルタをRemoveする方法はないのでしょうか?
- ベストアンサー
- C・C++・C#
- Directshowフィルターのインストールについてです。
Directshowフィルターのインストールについてです。 ネットで落とした動画をDivX Plus Playerで再生しようとすると 「このビデオは対応していないフォーマットです。 Directshowフィルターを追加インストールしないと再生できません。」 と出て再生できません。 WMPで再生すると 「そのファイルの圧縮に使用したコーデックをサポート していない可能性があります。」と出ます。 Directshowフィルターをインストールすればよいのでしょうか? ネットで探してみましたがダウンロード出来る場所が 見当たりません。 場所をご存知の方よろしくお願いいたします。
- 締切済み
- Windows Vista
- DirectShowで作成した動画がうまく見れない
現在、Visual Studio2010のC++で、webカメラで撮影した動画をDirectshowを使ってaviファイルとして保存するようなプログラムを書いているのですが、ここで出力されたaviファイルをQuicktimePlayerで再生しようとすると、音声のみが流れて画面は真っ黒という状態が起きてしまいます。 再生のため、一通りのコーデック(ffdshow,DivX等)をインストールして再生を試みたのですが、全く変化がありません。 また、DirectShowで動画作成時に圧縮を行う際には"x264vfw - H.264/MPEG-4 AVC codec"を使用しました。 一応のため、作成した動画を真空波動研で調べてみた結果 +++++++++++++++++ [h264.avi] 640x480 24Bit H.264 30.00fps 233f 1809.00kb/s PCM 44.10kHz 16Bit 2ch 1411.20kb/s [RIFF(AVI2.0)] 00:00:07.766 (7.766sec) / 3,195,904Bytes h264.avi / DLL 110813 Unicode +++++++++++++++++ という内容となりました。 どうにかして出力されたaviファイルをQuickTimePlayerで見れるようにしたいと考えています。 再生部分の問題なのか、保存部分の問題なのか全くわからない状態です・・・ かなり限られた状況なので、難しい質問かもしれませんが、何か解る方がいらっしゃいましたらご教授お願いします! また、動画圧縮時に他にもいろいろなコーデックを試してみたのですが、その中にもQuicktimePlayerで見れるものと見れないものが存在しました。 手掛かりになる情報かどうかはわかりませんが、それも記述しておきます。 (×:見れないもの) Microsoft Windows Media Video 9 Microsoft MPEG-4 Video Codec V3 DivX 6.9.2 Codec (4 Logical CPUs) (○:見れるもの) Intel IYUV コーデック MJPEG Compressor Microsoft Video 1
- 締切済み
- C・C++・C#
- DirectShowでの動画の保存
現在DirectShowで再生している動画をaviで保存しようとしています。 しかし動画の再生はできたのですが、aviに保存する方法がよくわかりません。 http://www.geekpage.jp/programming/directshow/video-capture-save-avi.php このページを参考にして、ビデオデバイスの部分を再生している動画ファイルに変更したいのですがどのようにすればよいのでしょうか?
- ベストアンサー
- C・C++・C#
- aviutlで編集したaviファイルが巨大化
aviutlで、あるaviファイルが読めこめなかったので、DirectShow File Reader プラグイン for AviUtlを導入して、読み込めるようになったのですが、 編集していざavi出力しようとすると、ファイルが巨大化してしまうのです。 以前にも似たような質問があったので参考にさせてもらいました。 しかし、ビデオ圧縮、オーディオ圧縮の再圧縮無しにチェックをいれたのにも関らず、巨大化してしまうのです。 aviファイルをキャプチャーする時、すべてがキーフレームになっているのが気になります。関係ないかもしれませんが。 他のaviファイルは巨大化せずに出力できるのですが・・・。 DirectShow File Reader プラグイン for AviUtlを導入してキャプチャーできるようになったaviファイルにこの現象が共通してると思うのです。 解決策等わかる方、回答よろしくお願いします。
- ベストアンサー
- フリーウェア・フリーソフト
- DirectXのDirectShowについて
こんにちは マイクロソフトのサイトからDirectX9.0のSDKをダウンロードしました。 で、DirectShowでVideoファイルを再生しながら、BITMAPとTextを表示させたいのですがどちらか一方しか出来ません。Video再生の上にBITMAP表示かまたは、Video再生時にText表示 サンプルソフトは通常インストールするとここのディレクトリーになります C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Samples\C++\DirectShow\VMR\Ticker Videoを再生しながら、BITMAP表示とText表示が出来るサンプルソフトなんてありますか?
- 締切済み
- C・C++・C#
- GraphEditではつながるのに、DirectShowだとConnectできない
少し特殊なフォーマットをサードパーティ製のフィルターを通して DirectShowを使用して再生します。 該当素材はGraphEditにDnDすると普通にFilterが接続され再生も可能です。 あまり詳しくかけませんので概略のみ 該当素材をAddSourceFilter()して、Splitter/Renderなど必要な FilterをAddFilter()で全て加えます。 SourceのOutpinとSplitterのInpinを HRESULT hr = IGraphBuilder->Connect(Outpin, Inpin); この際 hr = 0x80040207 (VFW_E_NO_ACCEPTABLE_TYPES) となりPinの接続ができません。 Render()でも 0x80040218(VFW_E_CANNOT_RENDER) です。 Source を Mpeg1、Splitter を Mpeg-1 Stream Splitter に変更しますと普通に接続できますので、Programの 構造としてはあっていると思います。 文字通りMediaTypeが異なるから? と QueryAccept()で確認しましたが問題はないようです。 さらにMSDNのサンプルを参考にして上記のProgramで作ったフィルタグラフを .grfファイルに書き出しました。 GraphEditで開きますと必要なFilterはすべて追加されているが、 つながってはいない状態です。これは上記の現象から理解できます。 しかし解せないことに、このGraphEditでSourceFileのPinから Render Pinを行うと完璧にフィルターが接続されます。 もちろんPin同士だけをつなげることも可能です。 基本的にGraphEditでできることはProgramでも出来ると思うのですが、 今回のケースは理解できません。 GraphEditでつながるにも関わらず、直接Pinの接続が出来ないというのは なぜなのでしょうか。 以下に環境を記載します。 Windows XP SP2 DirectX 9.0C Microsoft DirectX SDK (March 2008) Microsoft Platform SDK for Windows Server 2003 SP1
- 締切済み
- C・C++・C#
- カメラからの映像をキャプチャしwmvに変換して保存したい
USBカメラからの映像をキャプチャし、 wmv形式で保存するプログラムをVC.net2003で書いているのですがうまくいきません。 Directshowサンプルや資料を見ながら、 キャプチャした映像をaviで保存することははできました。 が、圧縮に関する資料が見当たりません。 どなたかヒントがあればご教授いただきたいです。
- 締切済み
- C・C++・C#
- DirectShowでのピンの接続
現在C++およびDirectShowでプログラムを作成しています まずGraphEditで以下のようなものを作成しました ttp://sageuploader.if.land.to/cgi-bin/1upload/src/sage1_8271.jpg これをプログラムで書きたいのですが ピンのつなぎ方がよくわかりません この場合はおそらくSetOutputFileNameとRenderStreamを使えばよいのかな?と考えてはいるのですが サンプルがビデオキャプチャからの取得方法ばかりで こういった場合にどのような記述をすればよいのかわかりません できれば具体的な記述方法等で教えてくださるとありがたいです
- ベストアンサー
- C・C++・C#
- MMMの圧縮フィルタ
MMM(MikMikuMoving)を使っています。 AVI出力の圧縮フィルタが非常に圧縮効率悪いです。 5分程度の動画が6GBとか、非圧縮と変わらないくらい。 Ut Video Codecというのを入れてみましたがそれで6GBです。 ちなみに最終的にはPowerDirector10という編集ツールで編集するので 数十Mにはなりますが、途中のファイルがあまりに巨大なので、 せいぜい数百MB程度まで圧縮したいです。 どなたかご存知の方教えてください。 よろしくお願いいたします。
- ベストアンサー
- 画像・動画・音楽編集
お礼
大変細かな親切なご回答本当にありがとうございます。 とても分かりやすく、すぐにできました。 ありがとうございました。