再生の開始時にオーディオが遅延しないように、Fedora 35でWirePlumberを使用してアイドル状態でオーディオレシーバーが一時停止されるのを無効にするにはどうすればよいですか?

再生の開始時にオーディオが遅延しないように、Fedora 35でWirePlumberを使用してアイドル状態でオーディオレシーバーが一時停止されるのを無効にするにはどうすればよいですか?

Fedora 35では、WirePlumberはパイプライン - メディア - セッションをオーディオセッションマネージャに置き換えます。 Linuxに組み込まれている多くのサウンドカードのオーディオには、3秒間何も再生しないとオーディオレシーバーが一時停止するという非常に迷惑な問題があります。 3秒後に再生が再開されると、音声が遅れたり、飛び出したりします。このデフォルトの動作をどのように修正できますか?

ベストアンサー1

関連する設定ファイルですが、/usr/share/wireplumber/main.lua.d/50-alsa-config.luaシステムバージョンを編集しないでください。

/etc/wireplumber/main.lua.d/これを(グローバル構成)または(ユーザー構成)にコピーし、~/.config/wireplumber/main.lua.d/必要な変更を加える必要があります。

最も簡単な方法は、すべてのユーザーアカウントに適用されるようにグローバル設定の場所にコピーすることです。

sudo cp -a /usr/share/wireplumber/main.lua.d/50-alsa-config.lua /etc/wireplumber/main.lua.d/50-alsa-config.lua
sudo nano /etc/wireplumber/main.lua.d/50-alsa-config.lua

apply_properties次に、ファイルの下部の該当するセクションまで下にスクロールし、そこに1行を追加する必要があります。

["session.suspend-timeout-seconds"] = 0

私はいくつかをさらに変更し、私の個人的なハードウェアに合わせてカスタマイズしました。参照用の構成は次のとおりです。ただし、この構成は正確なデバイスでのみ機能します。実際、自動サスペンドを無効にするには、上記の行だけが必要です。これを自分のデフォルト設定に追加します。私の設定をコピーしないでください。私が変更した他のものは関係ありません。

alsa_monitor.properties = {
  ["alsa.jack-device"] = true,
  ["alsa.reserve"] = true,
  ["alsa.midi.monitoring"] = true
}

alsa_monitor.rules = {
{
    matches = {
      {
        { "device.name", "matches", "alsa_card.*" }
      }
    },
    apply_properties = {
      ["api.alsa.use-acp"] = true,
      ["api.acp.auto-profile"] = false,
      ["api.acp.auto-port"] = false
    }
  },
  {
    matches = {
      {
        { "node.name", "matches", "alsa_output.pci-0000_0c_00.4.iec958-ac3-surround-51" }
      }
    },
    apply_properties = {
      ["api.alsa.period-size"] = 128,
      ["api.alsa.headroom"] = 2048,
      ["session.suspend-timeout-seconds"] = 0
    }
  },
  { 
    matches = {
      {
        { "node.name", "matches", "alsa_input.usb-BEHRINGER_UMC202HD_192k-00.analog-mono" }
      }
    },
    apply_properties = {
      ["api.alsa.period-size"] = 128
    }
  }
}

一時停止/スリープ動作を防ぐには、このsession.suspend-timeout-secondsプロパティを設定します。0WirePlumberのソースコードに示すように、動作を完全に無効にします。

変更を適用するには、WirePlumberを再起動する必要があります。

systemctl --user restart wireplumber

おすすめ記事