私はBluetoothスピーカーのペアとラインであるスピーカーのペアを持っていますが、2つを同時に再生しようとしています。どちらのゲームも接続してプレイするのに問題はありませんでしたが、接続すると多くの問題が発生しました。また、Bluetoothスピーカーの設定が反転し、正しい位置に合わせて再マッピングしています。
私はpulseaudioを使ってスピーカーを反転させ、コンボスピーカーの使い方を説明するmodule-remap-sink
いくつかのスレッドを見ましたmodule-combine-sink
。また、Bluetoothレイテンシーを考慮して有線スピーカーに遅延を追加したかったので、1つを追加してリスニングソースをmodule-null-sink
有線受信機にループさせてこの遅延を得ました。私の4つのコマンドが以下にリストされています。
注:書式設定のために、ここでは長い行をバックスラッシュで区切ります。各コマンドは実際のコードの1行です。
pacmd load-module module-null-sink sink_name=delayed_speakers \
sink_properties=device.description=DelayedSpeakers
pacmd load-module module-remap-sink sink_name=remapped_bluetooth \
master=bluez_sink.EC_81_93_5A_66_BB.a2dp_sink channels=2 \
master_channel_map=front-left,front-right channel_map=rear-right,rear-left remix=no
pacmd load-module module-loopback latency_msec=80 source=delayed_speakers.monitor \
sink=alsa_output.usb-Generic_USB_Audio-00.analog-stereo
pacmd load-module module-combine-sink slaves=remapped_bluetooth,delayed_speakers \
sink_name=CombinedSink sink_properties=device.description=CombinedSpeakers \
channel_map=front-left,front-right,rear-left,rear-right
この一連のコマンドは、bash端末で各コマンドを1つずつ実行するとうまく機能しますが、起動時に実行するように設定したいので、この行を含むbashスクリプトを作成しました。 bashスクリプトを実行すると、CombinedSpeakersリスナーはロードされません。これを調べるために、その行をコメントアウトし、各行delayed_speakers
を個別にテストしましたremapped_bluetooth
。 module-loopbackの前にmodule-remap-sinkを挿入すると、ハードワイヤードオーディオは出力(正しい再マッピングを含む)をdelayed_speakers
受け取ります。remapped_bluetooth
このラインの順序を変更すると、Bluetoothスピーカーは両方のラインの出力を受信します。各モジュールのロード間に10秒のスリープモードを追加しようとしましたが、問題も解決されませんでした。以下にスクリプトを含めました。
#!/bin/bash
echo "Loading null sink";
pacmd load-module module-null-sink sink_name=delayed_speakers \
sink_properties=device.description=DelayedSpeakers
sleep 10
echo "Loading remap sink"
pacmd load-module module-remap-sink sink_name=remapped_bluetooth \
master=bluez_sink.EC_81_93_5A_66_BB.a2dp_sink channels=2 \
master_channel_map=front-left,front-right channel_map=rear-right,rear-left \
remix=no
sleep 10
echo "Loading delayed speakers loopback"
pacmd load-module module-loopback latency_msec=80 source=delayed_speakers.monitor \
sink=alsa_output.usb-Generic_USB_Audio-00.analog-stereo
sleep 10
echo "Loading combined sink"
pacmd load-module module-combine-sink slaves=remapped_bluetooth,delayed_speakers \
sink_name=CombinedSink sink_properties=device.description=CombinedSpeakers \
channel_map=front-left,front-right,rear-left,rear-right
pulseaudioログを確認すると、systemctl --user status pulseaudio
100以上のメッセージ
pulseaudio[7998]: q overrun, queuing locally
と1つのメッセージが表示されます
No remapping configured, proceeding nonetheless!
。その後、pulseaudioを使用してpulseaudioを再起動するまで、これ以上pactl
コマンドを実行することはできません。pacmd
sudo pkill -9 pulseaudio
編集:default.paファイルにモジュールローディングを追加できることを知っていますが、ファイルの実行時にBluetoothスピーカーが接続されず、モジュールローディングが失敗するため、私の場合は機能しません。
答え1
私はこれを見つけました。その結果、失敗はシナリオではなく偶然の一致でした。module-remap-sink
プライマリ受信機で使用しようとするたびに不具合が発生します。この失敗は自動的に発生し、pacmdは正常に存在します。set-default
新しくマッピングされた受信機を使用する場合、またはそれを含む結合された受信機を作成しようとした場合にのみ、パルスオーディオが応答しなくなります。
回避策:pacmd set-default-sink 0
使用する前に使用してくださいmodule-remap-sink
(該当する受信機が受信機0の場合は別のインデックスを使用してください)。問題の受信機が唯一の受信機である場合は、ダミー受信機を作成し、対応する受信機に切り替え、再pacmd load-module module-null-sink
マッピングを設定し、最後にダミー受信機を削除できます。
答え2
ちなみに、シンクの代わりにソースを再マップしようとすると、同じ問題が発生します。
ソースとして同じことを行うとうまくいきます。
pactl load-module module-null-source source_name=dummy-temp-source
pactl set-default-source dummy-temp-source
その後、すべてのソース再マッピングコマンドを実行します。途中で余分な睡眠を取る必要はありません!
最後に作成したソースの1つに切り替えます。
pactl set-default-source my-newly-created-source
一時削除して
pactl unload-module module-null-source
注:このモジュールmodule-null-source
はパルスオーディオモジュールドキュメント。理由が気になりました。
評判が足りないので投票できませんが、@scott-driggersに感謝します!何かがシェルで動作しますが、スクリプトのコンテキストでは動作せずに睡眠を追加する愚かな方法を経験しているという事実は本当に混乱しています...