問題タブ [vfw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
video - ダイアログ ウィンドウに他のコーデックを追加する方法は?
VFW (WM_CAP_GET_VIDEOFORMAT) からのビデオ形式リストを使用して dlg ウィンドウを呼び出すと、2 つの位置しかありません。そのうちの 1 つ - MJPG (Motion JPG) を選択すると、ビデオ キャプチャが黒い画面になります。動作しませんが、選択可能です。YUY2 は正常に動作し、管理方法もわかっています。
反対側から見ると、インストールされているすべてのコーデックのリストを見ると、MJPG と YUY2 だけではありません。
- ICM Microsoft RLE MRLE msrle32.dll 6.1.7601.17514
- ICM Microsoft ビデオ 1 MSVC msvidc32.dll 6.1.7601.17514
- ICM マイクロソフト YUV UYVY msyuv.dll 6.1.7601.17514
- ICM Кодек Intel IYUV IYUV iyuv_32.dll 6.1.7601.17514 ICM 東芝
- ICM YUV コーデック Y411 tsbyuv.dll 6.1.7601.17514
- ICM Кодек Cinepak、Radius 製 cvid iccvid.dll 1.10.0.13
ICM (Image Color Management) と RLE (8 ビットのビットマップ圧縮) があります。その他。ただし、ダイアログには 2 つしか表示されません (MJPG は機能しません)。
それはどのように機能しますか?ダイアログ ウィンドウに他のコーデックを追加する方法と、VFW から有効にする方法は? SET_VIDEOFORMAT を無駄に試しました.. 1つだけ-YUY2が受け入れられ、設定できました。
カメラ - ドライバー - vfw COM グラフ ビルダーの原則について詳しく教えてください。たとえば、ICM Microsoft RLE コーデックを追加するにはどうすればよいですか?
windows - Webcam オーディオ キャプチャ コールバックから直接 WaveOutWrite
VFW とオーディオ キャプチャ コールバックを使用して、Webcam からオーディオデータをキャプチャしています。同時に、同じキャプチャ コールバックの本体内で、waveOutWrite を使用して、サンプリングされたデータをデフォルトの MAPPER に転送します。
Webcam からの信号品質は、1 チャネル/8 ビット/11025 サンプル/秒です。FORMAT_QUERYフラグを指定したwaveOpenのおかげで、サウンド形式はデフォルトのオーディオ デバイスでサポートされています。
waveWriteOutの戻り値はNOERRORですが、私の予想とはかけ離れています。部屋の中は静かで、空のホワイトノイズのような音のはずです。
Pls、音のYouTube録音を聞いてください
16K 程度のサイズのパックごとに開始し、WAVEHDR 構造は問題ありません。その後、徐々に速度が低下し、システムの回復不能エラーで終了します。
それは何に似ていますか?
以下は VFW からのオーディオ dta レシーバー コードです。lpWHdr は視覚的には問題ありません。内部フラグが 2 = Prepared にトリガーされていても、VFW と WaveAudio が互いに作成されているようです :)
DateTimeミリ秒のスタンプが表示され、1400ミリ秒ごとに刻み、サンプルレート= 11025であり、バッファサイズは約16500バイト= OKのように見えるため、バッファはオーバーランしていないと思います..
UPD:管理されていないバッファーを管理対象にコピーし、その値を調べました。鋸歯または過負荷の副鼻腔のように見えます。0 4 0 3 0 32 109 213 255 251 255 243 241 97 0 7 0 2 1 1 0 5 0 そして、ほぼ同じ数と同じ周期で再び上下します。正確ではありませんが、ほぼ同じです (+/-)。また、そのカムからの信号を内蔵の Windows レコーダーを使用して録音することもできます。また、信号レベルが上下にジャンプするように、自分の声の上下が見えるので、Web カメラのマイクも問題ありません。 VFW入力オーディオ信号フィーダーが間違っています。WAVEFORMATEX を受け入れて WAVEHDR を送り返しても、どちらも問題ありません... しかし、バッファ データには Web カメラではなく他のソースが入力されていますが、VFW は Web カメラからのものである必要があると言っています。 、そしてそれは機能しています。私は1つの余分なメッセージを追加しました: SendMessage(camHwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, audioCallback); VFW の代わりに waveIn を使用すれば、問題なく動作することはほぼ確実です.後で確認します..
c++ - 小さいサイズのビデオを出力する Directshow リアルタイム圧縮
そこで、WDM キャプチャ ソースからビデオ ストリームを表示およびキャプチャするアプリケーションを作成しました。問題は、ファイル サイズが大きすぎることです (つまり、7 分間のビデオは 1.5 GB になります)。グラフ「ffdshowエンコーダー」ですでにエンコーダーを使用していますが、さらに圧縮された出力ビデオが必要です。
これは私が使用しているグラフです:
x264、x265などの他のエンコーダーを使用しようとしましたが、検索の結果、エンコーダー自体がフィルターとして表示されず、VFWとしてラップする必要があることがわかったので、x264用のVFWラッパーをダウンロードしてインストールしましたおよび x265 エンコーダー。それでもグラフに表示されなかったので、さらに検索したところ、32ビットバージョンのグラフエディターにのみ表示され、64ビットバージョンのソフトウェアでは機能しない/表示されないことがわかりました。私は立ち往生しました。
しかし、さらに検索した後、このgithubプロジェクトに出くわしました:
https://github.com/RenderHeads/DirectShow-vfwFilter
これは基本的に 32 ビット vfw の 64 ビット ラッパーなので (私が理解している限り)、ダウンロードして試してみたところ、x264vfw エンコーダーを使用して比較的小さなビデオ ファイルを出力することができました。しかし、このフィルターに関する私の問題は、以下に示すように構成を保存しないことでした
そして、これは私が今立ち往生している場所です。小さな出力ファイルを取得するには、優れたコンプレッサー/エンコーダーが必要です。
c++ - AVIFileInit() のセグメンテーション違反
私は現在、XP の GCC コンパイラで Code::Blocks を使用しています。次のテスト コードで AVIFileInit() を呼び出すと、セグメンテーション エラーが発生します。
この問題の原因または解決策が見つかりません。どんな助けでも大歓迎です。