4

作成中のプログラムで低レイテンシーの Linux でオーディオをキャプチャしたいと考えています。

ALSA API を使用していくつかの実験を行いました。snd_pcm_readi() を使用してサウンドをキャプチャし、すぐに snd_pcm_writei() を使用して再生しました。

キャプチャされたフレーム数とバッファ サイズで遊んでみましたが、遅延を 1 秒未満に抑えることはできないようです。

PulseAudio と JACK のどちらを使用した方がよいでしょうか? それらを使用して、キャプチャしたオーディオを再生できますか?

4

3 に答える 3

1

キャプチャ レイテンシを短縮するには、キャプチャ デバイスの期間サイズを減らします。再生遅延を減らすには、再生デバイスのバッファ サイズを減らします。

ジャックはキャプチャされたオーディオを再生できます (入力ポートを出力ポートに接続するだけです) が、その期間/バッファを構成する必要があります。

スピーカーとマイクの周期サイズの関係とALSAを理解したメモリ マッピングからの録音も参照してください。

于 2014-09-03T17:08:31.923 に答える
1

低遅延のオーディオプログラミングに関する作業を行っていますが、

私の経験では、まず、10 ミリ秒の期間バッファーのように、キャプチャ バッファーを小さくする必要があります。(512 フレーム バッファと 48000 サンプル レートを使用していると仮定します)。

次に、出力デバイスの start_threshold を少なくとも 2 * フレーム サイズ (記録されたデータのプロセスがあまりない場合は 1 * フレーム サイズ) に設定する必要があります。

CL などのレコード デバイス用。比較的小さい期間サイズを使用する方が良いですが、IRQ が多すぎるのを避けるために小さすぎないようにしてください。

また、プロセス スケジュールを FIFO スケジュールに変更することもできます。

その後、うまくいけば、約 20 ミリ秒の合計レイテンシが得られます。

于 2015-05-19T08:00:58.673 に答える