• 締切済み

DirectShowでの動画ファイルの保存方法

DirectShowで再生している動画ファイルを別ファイルに保存するというプログラムを作成しようとしていますが 再生はできたものの動画ファイルの保存方法がさっぱりわかりません まだ初心者なのですがわかりやすく教えていただけないでしょうか?

みんなの回答

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

フィルタの接続先を、レンダラの代わりにDumpフィルタあたりにします。 再生しながら保存するならば、Tフィルタ(SmartT等)を間にいれて、 レンダラとDumpフィルタの両方につないでみてください。

関連するQ&A

  • DirectShowでの動画の保存

    現在DirectShowで再生している動画をaviで保存しようとしています。 しかし動画の再生はできたのですが、aviに保存する方法がよくわかりません。 http://www.geekpage.jp/programming/directshow/video-capture-save-avi.php このページを参考にして、ビデオデバイスの部分を再生している動画ファイルに変更したいのですがどのようにすればよいのでしょうか?

  • DirectShowを使ったファイル分割保存

    お世話になります。 現在DirectShowを使って、カメラから動画を保存するプログラムを作成しております。 このプログラムは数日単位を動作させる為、画像ファイルをある一定サイズ(時間)で 分割したいと考えております。 単純に考えると、一旦停止した後に別のファイル名で再度キャプチャを開始する事で 分割できると思いますが、その際に一定時間の抜けが発生してしまいそうなので、できる事なら カメラを停止せずに動的に出力ファイルを変更出来れば良いと考えております。 (とりあえず停止⇒再開を試してみようと思い、GeekなページにあるAVI保存コードをベースに、 途中でMediaCtrl::Stop後、一連のCOMオブジェクトを破棄した上で、再度CapGraphBuilderから 構築して別のファイル名で実行させてみましたが、RenderStreamで失敗してしまいました) 上記を行う場合、どの様にするのがよいでしょうか?(調査のきっかけとなるAPI等でも結構です) また、別に良いアイデアがございましたらご教示いただけると助かります。

  • 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

  • DirectShowを使用し動画ファイルを再生した時に出てくる「Act

    DirectShowを使用し動画ファイルを再生した時に出てくる「ActiveMovie Window」 を閉じたい 【Directshow, ActiveMovie Window, 閉じる】 DirectShowを使用し動画ファイルを再生した時に出てくる「ActiveMovie Window」 だけを閉じたい場合はどのようにすればよいのでしょうか? 動画処理はフレーム単位で、以下の1~4の処理を繰り返すことで行っています。  1. IMediaSeeking::SetPositions(); // シーク  2. IMediaControl::StopWhenReady(); // シークしてレンダリング  3. IMediaControl::StopWhenReady(); // レンダリング完了を待つ  4. ISampleGrabber::GetCurrentBuffer(); // グラブ 2の処理のところで、 「ActiveMovie Window」が出てきます。 IMediaSeeking, IMediaControl, ISampleGrabber を Release してやればウィンドウも消えるかと思いましたが、別問題のようです。 現在、複数の動画を連続で解析しているため、 「ActiveMovie Window」も複数表示される現象が起こってしまい、困っています。 「ActiveMovie Window」を完全に消す、 もしくは、ウィンドウの表示はひとつだけにするためにはどうしたらよいでしょうか? アドバイスよろしくお願いします。

  • DirectShowでのカメラ画像

    DirectShow初心者です。 DirectShowを使ってカメラの画像をリアルタイムでウィンドウに表示させたり、ファイルに保存したいのですがどうすればできますか?

  • Windows7でDirectShowを使おうとしているのですが・・・

    Windows7でDirectShowを使おうとしているのですが・・・ こんにちは、今、プログラムのことで困っていまして、もしわかる方がいらっしゃったら教えていただきたいのですが・・・ 【解決したい問題】 WindowsXPで使っていたプログラムをWindows7で実行させた時、DirectShowの、IMixerPinConfigの生成に失敗する。 【詳細】 先日、新しいパソコン(Windows7)を買って、前のパソコン(WindowsXP)で使っていた、動画を再生するプログラムを、Windows7で使おうとしたのですが、プログラムが起動してすぐにエラーが出てしまい、使うことが出来ませんでした。 そのプログラムは、「VB.NET FrameWork 2.0」で作成したプログラムで、「DirectShow」を使ってDVDから動画を再生しているのですが、ソースをステップごとに追いかけて調べてみると、アスペクト比を変更して、動画の黒い帯(レターボックス)を取るために使用していた、「IMixerPinConfig」というオブジェクトの生成が失敗していました。 「IMixerPinConfig」の生成に使っているのは、「DvdGraphBuilder」というクラスの「GetDvdInterface」という関数で、引数に「IMixerPinConfigのGUID」と、「取得したオブジェクトの格納用の変数」を渡していて、正常に処理されていれば、戻り値で0が返ってくるところが、&H80004002という値が返ってきて、out側の結果は、Nothingで返ってきたため、恐らくそこが原因なのだろうという所はつきとめました。 そして、DirectShowのソースを見ていくと、残念ながら、関数の中身は見ることが出来ませんでしたが、「GetDvdInterface」では、GUIDから、オブジェクトの取得を行っているのではないかと推測したので、問題が発生している箇所の前後で、同じ処理を使って、「IDvdInfo」、「IDvdControl」、「IBasicAudio」等の取得も行ったのですが、こちらは正常に処理されました。 ただ、正常に処理されはしたのですが、ブレークを打って確認しても、それぞれのGUIDの値が、「IMixerPinConfig」も、正常に処理された「IDvdInfo」等の値も、両方Emptyという表示になっていたので、何がなんだかわからなくなりまして・・・ 恐らくGUIDの読み込みで失敗しているのか、GUIDが登録されていないかのどちらかだとは思ったのですが、調べる方法もよくわからず・・・ 代替案も色々試してみたのですが、思うような動作をしてくれず、八方ふさがりの状態になってしまったので、投稿させていただきました。 どうか、よろしくお願いいたします。

  • DirectShowについて

    現在、DirectShowについて勉強している者です。 既存の動画ファイルを読み込み、リアルタイムで動画像処理を施し、それをリアルタイムで表示させる所までは成功しました。 この表示させた動画像をファイルとして保存したいのですが、どのようにすれば保存できるのかがわからない状況です。 ちなみに、フレームごとのデータはサンプルグラバフィルタにより取得しております。 知識不足で本当に申し訳ありませんが、少しでも構いませんので、何か助言を頂けると幸いです。 よろしくお願い致します。

  • Directshowを使って動画を画像として保存

    Directshow でウェブカメラから映像を取得し、毎フレーム画像で保存したいです。 samplegrabber の getcurrentbuffer をタイマーを使って呼びだしていたのですが、タイマーがあまりうまく動いてくれません。 画像をフレーム更新ごと、もしくは一秒間に10フレーム~20フレーム取得し、保存するにはどういった方法がありますか? ご教授お願いいたします。

  • 動画を保存する方法

    動画を保存したいのです いちばん簡単な方法を教えて下さい 先ほどからいろんな方法を試してもだめでした ファイルが見つからない htm.swfとかゴムプレーヤーもオーバーレイができないとか flashmaniaもファイルガ見つからないとでるし 動画を再生してその動画の上でクリックしようがないようですが 再生してキャッシュにファイルがないとゆうか再生できていないのですか? サッパリわかりません

  • 動画の保存方法

    Real One Playerで見ることのできる動画ですが、見たい動画をクリックすると保存先を聞いてきて(マイドキュメントなど)保存してから再生されるものと、一時ファイルに保存されてから再生されるものがあるようなのですが、一時ファイルに保存される動画もマイドキュメント内に保存することは可能でしょうか? (同じHP内の動画でマイドキュメントに次々保存しながら再生して見ていたら、あるところから一時ファイルにしか保存されなくなり、今現在も一時ファイルのみとなってしましました。)

専門家に質問してみよう