PulseAudioの起動時にすべてのALSAサウンドデバイスを開くのはなぜですか?

PulseAudioの起動時にすべてのALSAサウンドデバイスを開くのはなぜですか?

また、見ることができますPulseAudioを起動するには?

いつ。 。 。いつパルスオーディオオーディオデーモンが起動し、デフォルトでロードされ、module-udev-detectすべてのサウンドカードを検出して開きます。 PulseAudio は以下を使用します。アルザスハードウェアとのインタフェース ALSA は、カーネルモジュールとユーザ空間ライブラリの組み合わせです。

PulseAudioはすべてのサウンドカードを開き、ALSAカードは一度だけ開くことができるため、PulseAudioの起動後にALSAカードを開こうとすると、「デバイスまたはリソースの使用中」エラーが発生します。

$ arecord -D hw:2 -f S16_LE -c 1 -r 48000 -d 3 t.wav
arecord: main:830: audio open error: Device or resource busy

今回のデザイン決定が気になります。PulseAudioの起動時にすべてのデバイスを開く必要があるのはなぜですか?

ユーザーとして、私はPulseAudioが必要なときに必要なものだけを開くようにしたいと思います。デバイスを開くのに問題がある場合は、クライアントアプリケーション(PulseAudioデバイスを読み書きするアプリケーション)にエラーが再報告されるようにします。

オンデマンドデバイスオープンの利点:

  • ALSAとPulseAudioは共存できます。 ALSAアプリケーションを起動するためにPulseAudioサーバーをシャットダウンする必要はありません。

  • 誰かが私を見ているかどうかがわかります。マイクデバイスを使用していないときに点灯するのは、現在のデザインでは疑わしいことですが、これは正常です。

  • ALSAと同様に、デバイス関連のエラーはロギングツールではなくユーザーに直接報告される可能性があります。

  • 同じシステムで両方のバージョンのPulseAudioを実行し、実行時にどのサーバーがどのデバイスを制御する必要があるかを判断できます。

  • 問題なく他の(より良い?)サウンドサーバーと並列にPulseAudioを実行できます。

欠点は何ですか?使用していないときにLinuxサウンドサーバーが知っているデバイスをリリースできないという技術的な問題がありますが、私が認識していないものはありますか?初期のサウンドサーバーは次のようになりました。静電気放電あなたもこの操作方法を使用していますか?すべてのデバイスを先制的に開くことに決めたのは、反競争的なものですか?つまり、意図的に他のサウンドサーバーがLinuxプラットフォームで競合するのをより難しくするのですか?

ベストアンサー1

サウンドサーバーの一般的な設計は、さまざまなソフトウェアのデータを受け取り、便利なオーディオデバイスにルーティングするか、その逆(入力用)にルーティングすることです。

これが目標であるため、PulseAudioは使用する各デバイスの機能を理解する必要があります。したがって、サポートされているサンプルサイズ、予想される遅延時間、およびデバイス名に関する情報を照会するためにそれを開く機能が必要です(ユーザーがデバイスを選択するにはこの情報を知る必要があるため)。完了したら、ユーザーにオプションを提供できます。

ユーザーがデバイスで何かを再生したい場合、PulseAudioはカード上で直接再生できます(カードがオンの場合)。カードが開いていない場合は、PulseAudioが最初にカードをインポートする必要があり、他のデバイスでカードを使用している場合は機能しない可能性があります。この場合、ユーザーは正当な理由なく自分の声が侵害されているという感じを受けます。同様に、ユーザーはマイクで音が出ない理由について質問することができます。

一般ユーザーはログを理解できない、または見たくないので、特にビデオ会議などの作業を開始しようとしたときにログを確認する必要がある突然の中断は、せいぜい面倒で最悪の場合は克服できない問題です。私はLinuxで数十年の経験を持つ非常に技術的なユーザーであり、サウンドの問題(またはそれに関するすべての問題)を処理したくありません。

すべてのサウンドカードを購入し、ALSAがPulseAudioをデフォルトのALSAデバイスとして使用するようにします。これはALSAの使い方を知っていますが、PulseAudioについて知らないプログラムが他のプログラムと競合することなく直接実行されることを意味します。そうしないと、オーディオプレーヤーがカードをつかみ、ターミナルチャイムベルなどのサウンドエフェクトが機能しなくなる可能性があります。実際、これはまれな問題ではありません。これがPulseAudioがALSA出力デバイスとしてサポートされている理由です。

もちろん、このデザインはすべての人のニーズを満たすことはできませんが、ユーザーに表示されるカードは一般的に使用できますが、表示されていないカードは使用できないため、最もシンプルで強力な動作を生成します。一部の構成では、目的の動作を作成したり、dmixやALSAを含むJACKなどの他のソリューションを使用した方が良い場合があります。

おすすめ記事