問題タブ [audio-capture]
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.
c++ - Windows での WASAPI キャプチャー・バッファー・サイズ
私は WASAPI を使用して、Windows 7 の共有モードでオーディオ バッファーをキャプチャします。48 kHz のサンプル レート、96 kHz、192 kHz、または 44.1 kHz のサンプル レートしか持たないラウドスピーカーを使用しています。私のサウンド カードは Realtek High Definition です。
Windows Vista や Windows 8 などの別の OS でプログラムを実行すると、WASAPI の動作が異なるかどうかを知る必要があります。また、異なるハードウェア (異なるサウンド カード) でキャプチャされたバッファーに対して getBuffer が同じサイズを取得するかどうかを知る必要があります。
自分でテストすることはできず、インターネットで詳細を見つけることはできません。しかし、私のプログラムは、さまざまなバージョンの Windows とさまざまなハードウェアを搭載したさまざまなコンピューターで動作する必要があります。キャプチャされたバッファ サイズが異なると、別のコンピュータでプログラムが正しく動作しません。
誰かがそれについて何か知っているなら、私に知らせてください。ありがとうございました。
audio - トポロジに 2 つの分岐がある場合の MESessionStarted イベントの E_UNEXPECTED
EVR でビデオ ストリームを表示しながら、ビデオ (オーディオ付き) を記録するセッション トポロジに取り組んでいます。ビデオとオーディオ ストリームに SampleGrabber シンクを使用しているので、(シンクライターを使用して) いつ録音を開始/終了するかを簡単に制御し、必要に応じてサンプル データを抽出できます (静止画をキャプチャしてマイクのオーディオ レベルを表示するため)。私は、Tee ノードを使用してビデオ フィードを EVR とビデオ サンプルグラバーの間で分割し、copierMFT を使用してサンプルを EVR に配信しています。オーディオとビデオの両方のサンプルグラバーは、RATELESS とマークされています。
トポロジの各ブランチは単独で機能しますが、両方をトポロジに追加すると、MESessionStarted イベントで status="E_UNEXPECTED Catastrophic Error" が設定され、メディア セッションが開始されません。これが、MFTrace ログで見つけた唯一のエラーです。カメラの電源が入らず、サンプルグラバーにサンプルが届きません。トポロジーは正しく解決されているように見えるので、セッションが何を予期していなかったのかわかりません。MediaSession::Start のドキュメントには、このエラーについては何も言及されていません。私の現在の推測では、これはプレゼンテーション クロックの同期と関係があると思われますが、サンプルグラバーの出力ノードをレートレスに設定しても効果がないようです。Topology Ready ステータス イベントを受信した後、セッションのクロック状態を確認すると、MFCLOCK_STATE_INVALID が返されます。
ライブ カメラ ソースとマイク ソースを同じトポロジに配置するために必要な特別な設定はありますか? E_UNEXPECTED エラーに関する詳細情報を取得する方法はありますか?
これを理解するための助けをいただければ幸いです。準備が整ったトポロジとエラーを示す mftrace ログのスニペットを次に示します。
更新 1: mofo77 で提案されているように、systemtimesource を使用して新しいプレゼンテーションクロックを作成し、それを EVR のプレゼンテーションクロックとして設定してみました。残念ながら、これは何も変わりませんでした。
TopologyReady イベントを詳しく調べたところ、クロックにプレゼンテーション タイム ソースがないことに気付きました。
systemtimesource を作成して mediasession のクロックに設定しようとしましたが、これも役に立ちません。
ビデオ ブランチのみ (またはオーディオ ブランチのみ) で、サンプルグラバーは OnSetPresentationClock コールバックを受け取ります。両方をトポロジに追加すると、これは発生せず、MESessionStarted イベントで壊滅的な障害ステータスが表示されます。
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 を使用すれば、問題なく動作することはほぼ確実です.後で確認します..
ios - 最新リビジョンでの WebRTC iOS ネイティブ アプリのオーディオの問題
iOS ネイティブのオーディオ/ビデオ チャットを構築しようとしていて、オーディオにこだわっています。音は遅れており、いくつかの部分が欠落しており、歪んでいます。r9919 と最新のビルド スクリプト (r10184) でこれを試してみました。しかし、PerchRTC Demo プロジェクト ( https://github.com/perchco/perchrtc - ファット ライブラリとパブリック ヘッダー)から取得した古いバージョン (r8444、r8926、r9132、および r9137) を使用しようとすると、すべて問題ないように見えます (小さなエコーを除く)。(r8444、r8926、r9132、および r9137) が提供するものと少なくとも同じストリーミング品質を達成するには、どのような準備を行う必要がありますか? また、さまざまなオーディオコーデックとさまざまなメディアの制約を使用しようとしましたが、まだうまくいきません. この方法でオーディオ接続を作成します
この制約を使用して(さまざまな組み合わせを試しました)
必須制約 = @[
optionalConstraints = @[
また、AudioTrack を取得する前に、AVAudioSession でさまざまな操作を試みましたが、うまくいきませんでした。
SDP の説明は、遅れているビルドと遅れていないビルドで似ています (これはオファーです - a=setup:actpass,answer has a=setup:active):
助言がありますか?
google-chrome - Chrome アプリで audioCapture を失う
私のマニフェストでは、audioCapture パーミッションを追加しました。
アプリが常に機能しているかどうかを確認するために、さまざまなシナリオを試しました。アプリを閉じ、Chrome を閉じ、アプリを再度開くと、オーディオ キャプチャが失われることがあります。オーディオ キャプチャは、backgound.js で実行中です。
オーディオを再開できる唯一の方法は、マニフェストから audioCapture 権限を削除し、アプリを再度開くことです。getusermedia でエラーが発生しましたが、問題ありません。オーディオ キャプチャを許可に戻します。アプリをリロードします。そして今、私のオーディオキャプチャが戻ってきました。
アプリが開いている、閉じている、Chromeが閉じているなど、あらゆる条件で、アクションをトリガーしたときにアプリが常にオーディオをキャプチャする準備ができていることを確認するにはどうすればよいですか。
audio - Windows でコア オーディオとウェーブ オーディオを一緒に使用する
C++ コア オーディオ API を使用して、デバイスの変更の検出、音量レベルの検出など、アプリケーションでさまざまなオーディオ関連の操作を実行する予定です。しかし、私のソリューションには、古い Wave API (waveInxxx) を使用するオーディオ キャプチャ コードもあります。今は触れたくない。コア オーディオ API を安全に使用できますか? また、これら (コアとウェーブ) が同じオーディオ エンドポイントで動作する場合、共存できますか? これにより、アプリケーションがクラッシュまたはハングしますか?
前もって感謝します。