問題タブ [audiobuffer]

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.

0 投票する
0 に答える
1444 参照

android - Android サウンド出力に遅延を追加する

そこで、Android アプリ用にこの記事を書きました。アイデアは簡単です:

サウンドが再生されているかどうかを検出し、再生されている場合は BluethoothSCO チャネルを開き、そこでオーディオが再生されるようにします。

これを使用して、ナビゲーションの方向情報を車のスピーカーに「ルーティング」したいと考えています。ほぼ期待どおりに動作します。

音声認識と bluethoothsco 接続の準備が整うまでに約 1 秒の「大きな」遅延があります。これにより、ナビゲーション情報のほぼ半分が失われます。

私のアイデアは、遅延を追加するか、再生を 1 秒間一時停止することでした。

現在: サウンドが検出されます -> BluethootSCO が開きます (サウンドはここで再生され続けます) -> 車のスピーカーからサウンドが聞こえます

IDEA: サウンドが検出されました -> 1 秒間の一時停止/遅延 -> BluethootSCO の開始 -> 再生の再開 -> 車のスピーカーからのサウンド

録音して後で再生することも考えましたが、「今すぐ左に曲がる」などの情報については遅いでしょう。

短い遅延は問題ありませんが、これを実装する方法がわかりません:(

アプリは自分専用なので、ルートを使用しても問題ありません。たぶん、AudioFlinger に直接可能性がありますか?

0 投票する
1 に答える
616 参照

javascript - AudioBufferSourceNode.buffer は廃止されましたか?

によると

https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/buffer

AudioBufferSourceNode.buffer は非推奨になりました。新しい代替手段は何ですか?私はそれを見つけることができないようです。

0 投票する
1 に答える
2715 参照

swift - 正確な CMTime で AudioBuffer を CMSampleBuffer に変換する

ここでの目標は、AVCaptureDataOutput を介してビデオを介して mp4 ファイルを作成し、CoreAudio に記録されたオーディオを作成することです。次に、両方の CMSampleBuffers を、付随する AVAssetWriterInput(AVMediaTypeVideo) と AVAssetWriterInput(AVMediaTypeAudio) を持つ AVAssetWriter に送信します。

私のオーディオ エンコーダーは、AudioBuffer を新しい CMSampleBuffer にコピーし、それを AVAssetWriterInput(AVMediaTypeAudio) に渡します。この例は、AudioBuffer から CMSampleBuffer への変換がどのように行われるかを示しています。CMSampleBuffer への変換

要するに、それは機能しません。ビデオは表示されますが、音声は表示されません。

しかし、ビデオ エンコーディングをコメント アウトすると、オーディオがファイルに書き込まれ、聞こえるようになります。

これは、経験から、タイミングの問題であることがわかります。CMSampleBuffer への変換は示しています

{0/1 = 0.000} それは私には完全に間違っているように見えるCMTimeCopyDescriptionを生成します。レンダリングされたフレームを追跡し、時間値のフレームカウントと時間スケールのサンプルレートをこのように渡してみました

しかし、サイコロはありません。見栄えの良い CMSampleTimingInfo{107520/44100 = 2.438}ですが、ファイルにはまだ音声がありません。

ビデオ CMSampleBuffer は、このようなものを生成します{65792640630624/1000000000 = 65792.641, rounded}。これは、AVCaptureVideoOutput のタイム スケールが 10 億、おそらくナノ秒であることを示しています。そして、時間値はデバイス時間のようなものです。AVCaptureVideoOutput が使用するものに関する情報が見つかりません。

誰にも役立つガイダンスはありますか?私は正しい軌道に乗っていますか?

変換はこちら

そして、私が作成するassetWriters

0 投票する
0 に答える
968 参照

ios - NSData を AudioBufferList から AVAudioPlayer にロードする

デリゲート メソッドから、オーディオの録音中に AudioBufferList を受け取ります。AVAudioPlayer にロードできるように AudioBufferList からデータを収集して保存しようとしていますが、AVAudioPlayer がエラーをスローし、録音を再生できません。AudioBufferList を使用するだけで、ファイルがなくても AVAudioPlayer でオーディオを再生できる必要があります。

もともと、録音をファイルに保存してから AVAudioPlayer にロードしていましたが、この方法では、別のオーディオ ファイルを作成せずに録音に追加できず、追加が行われた後に 2 つのファイルをマージすることができませんでした。これにはかなりの時間がかかっていたので、追加の合間に録音を聞くことができるようにしたいと思っています. そのため、保存するまでオーディオファイルを追加し続けることができるように、オーディオファイルを保存していません。これに関する問題は、AudioBufferList から保存している NSData が AVAudioPlayer に正しく読み込まれていないことです。

NSData を収集するためのコードは次のとおりです。

NSData を AVAudioPlayer に読み込もうとすると、次のエラーが発生します。

エラー: エラー ドメイン = NSOSStatusErrorDomain コード = 1954115647 「操作を完了できませんでした。(OSStatus エラー 1954115647。)」

どんな助けでも大歓迎です。

ありがとうございました、

0 投票する
4 に答える
2888 参照

ios - AVCaptureAudioDataOutputSampleBufferDelegate を使用して迅速にボリューム レベルをキャプチャする

AVCaptureDeviceなどを使用してボリュームレベルをライブにしようとしていますが、コンパイルして実行しますが、値はランダムに見え、オーバーフローエラーも発生し続けます。

編集:

また、RMS 範囲が 0 から約 20000 になるのは正常ですか?

...

0 投票する
2 に答える
3894 参照

javascript - Javascript: Int16 から Float32 への変換

WAV ファイルを AudioBuffer に入れて操作できるようにしようとしています。以前に AudioBuffer から WAV ファイルを作成したことがあり、それには Float32Array を Int16 値を含む DataView に変換する必要がありました。私が拾ったこの便利な機能を使用しました:

さて、あとはこれを逆にするだけです (WAV ファイルはサーバーから読み込まれるため、元のデータはもうありません)。その関数で実際に何が起こっているのか、データがどのように変換されているのかわかりません。

0 投票する
1 に答える
1132 参照

javascript - MediaElementAudioSourceNode を AudioBufferSourceNode に変換します

オーディオ データをデコードする場合、createMediaElementSource() はモバイル デバイスでは機能しませんが、createBufferSource() メソッドは正常に機能します。

このコードは Web ブラウザーでは正しく機能しますが、モバイル デバイスでは機能しません。

このコードは、Web ブラウザーとモバイル ブラウザーの両方で機能します。

私の場合、デコードするビデオ プレーヤーからのオーディオ ソースがあります。これは MediaElementAudioSourceNode であり、コードをモバイル デバイスで動作させるには、それを AudioBufferSourceNode に変換する必要があります。言い換えれば、それは可能ですか? sourceT1sourceT2に変換するには?

それを行う方法はありますか?

編集: この回答に基づいて、残念ながらそれは不可能だと思います