สร้างสคริปต์สลับเอาต์พุต PipeWire ที่สามารถย้ายเสียงที่ใช้งานอยู่ได้

สำหรับการสลับเสียงใน Debian ขนาดเล็ก ให้ใช้pactlผ่านเซิร์ฟเวอร์ที่เข้ากันได้กับ PulseAudio ของ PipeWire สคริปต์ด้านล่างจะสลับระหว่างเอาต์พุตสองตัวที่มีชื่อ ตั้งค่าเริ่มต้นใหม่ และย้ายสตรีมการเล่นที่เปิดอยู่แล้ว แทนที่ชื่อ sink ตัวอย่างด้วยชื่อที่แสดงบนเครื่องของคุณอย่างถูกต้อง

1. ยืนยันเซิร์ฟเวอร์ PipeWire Pulse และค้นหาเอาต์พุตของคุณ

คอมponent ของ PipeWire pipewire-pulseมีเซิร์ฟเวอร์ที่เข้ากันได้กับ PulseAudio ดังนั้นเครื่องมือมาตรฐานต่างๆ เช่นpactlสามารถควบคุม sinks (เอาต์พุตเสียง) ได้ ตรวจสอบว่าไคลเอ็นต์ของคุณเชื่อมต่อกับเซิร์ฟเวอร์ใด และแสดงรายการ sinks ที่ใช้งานได้:

pactl info | grep -E 'Server Name|Server Version'
pactl list short sinks

สำหรับขั้นตอนนี้ ชื่อเซิร์ฟเวอร์ควรระบุ PipeWire รายการ Sink ประกอบด้วยชื่อเชิงสัญลักษณ์ เช่นalsa_output.pci-0000_00_1f.3.analog-stereoคัดลอกชื่อสองชื่อให้เหมือนกันทุกประการ: ชื่อหนึ่งสำหรับแต่ละเอาต์พุตที่คุณต้องการสลับใช้งาน ชื่อเหล่านี้เป็นชื่อเฉพาะสำหรับฮาร์ดแวร์ที่เชื่อมต่อและโปรไฟล์เสียง อย่าคัดลอกชื่อจากตัวอย่างหรือใช้ดัชนี Sink ที่เป็นตัวเลข ซึ่งอาจเปลี่ยนแปลงได้ระหว่างเซสชัน

หากpactlไม่มีไฟล์ดังกล่าว Debian จะจัดเตรียมไว้ให้ในpulseaudio-utils. ติดตั้งแพ็กเกจไคลเอ็นต์นั้นเฉพาะเมื่อจำเป็นเท่านั้น หากpactl infoไม่สามารถเชื่อมต่อได้หรือรายงานว่าใช้เซิร์ฟเวอร์เสียงอื่น ให้ตรวจสอบก่อนว่าโปรแกรม PulseAudio ที่ใช้แทน PipeWire กำลังทำงานอยู่ในเซสชันผู้ใช้ของคุณหรือไม่ อย่าติดตั้งหรือเปลี่ยนเซิร์ฟเวอร์เสียงโดยไม่ตรวจสอบให้ดีก่อน

เทอร์มินัล Debian แสดงคำสั่ง pactl info ที่ระบุ PipeWire และคำสั่ง pactl list short sinks พร้อมชื่อลำโพงและหูฟัง
คัดลอกชื่อซิงค์เชิงสัญลักษณ์ที่ถูกต้องจากรายการเอาต์พุตแบบเรียลไทม์ก่อนที่จะกรอกสคริปต์สลับสถานะ

2. สร้างสคริปต์สลับการทำงาน

สร้างไดเร็กทอรีสคริปต์สำหรับผู้ใช้แต่ละราย และเปิดไฟล์ใหม่:

mkdir -p ~/.local/bin
nano ~/.local/bin/toggle-audio-output

วางสคริปต์นี้ลงไป โดยแทนที่ค่าทั้งสองในSINK_AและSINK_Bด้วยชื่อที่คุณคัดลอกมา:

#!/usr/bin/env bash
set -euo pipefail

SINK_A='alsa_output.pci-0000_00_1f.3.analog-stereo'
SINK_B='alsa_output.usb-Generic_Headset-00.analog-stereo'

command -v pactl >/dev/null || { echo "pactl is missing" >&2; exit 1; }
server_name=$(pactl info | sed -n 's/^Server Name: //p')
case "$server_name" in
  *PipeWire*) ;;
  *) echo "pactl is not connected to PipeWire's Pulse server" >&2; exit 1 ;;
esac

sinks=$(pactl list short sinks | awk '{print $2}')
for sink in "$SINK_A" "$SINK_B"; do
  if ! grep -Fqx -- "$sink" <<< "$sinks"; then
    printf 'Sink not found: %s\n' "$sink" >&2
    exit 1
  fi
done

current=$(pactl get-default-sink)
if [[ "$current" == "$SINK_A" ]]; then
  target=$SINK_B
else
  target=$SINK_A
fi

pactl set-default-sink "$target"
while IFS= read -r input_id; do
  [[ -n "$input_id" ]] || continue
  pactl move-sink-input "$input_id" "$target"
done < <(pactl list short sink-inputs | awk '{print $1}')
printf 'Default output: %s\n' "$target"

สคริปต์จะตรวจสอบว่ามีเอาต์พุตทั้งสองอยู่ก่อนที่จะเปลี่ยนแปลงใดๆ หากค่าเริ่มต้นปัจจุบันเป็น `false` สคริปต์จะเลือกเอาต์พุตที่กำหนดค่าไว้ตัวอื่น แต่SINK_Aถ้าค่าเริ่มต้นปัจจุบันเป็น sink อื่น สคริปต์จะเริ่มต้นด้วย ` SINK_Afalse` set-default-sinkคำสั่ง `false` จะมีผลกับสตรีมใหม่ ในขณะที่ลูปจะใช้ `false` move-sink-inputเพื่อกำหนดเส้นทางสตรีมการเล่นที่มีอยู่ด้วย หากคุณต้องการให้แอปในอนาคตใช้ค่าเริ่มต้นใหม่เท่านั้น ให้ลบwhileลูปออก สตรีมที่กำลังเล่นอยู่จะยังคงอยู่ที่เดิม เรียกใช้สคริปต์นี้โดยใช้ผู้ใช้เดสก์ท็อปที่ล็อกอินอยู่คนเดียวกับที่เป็นเจ้าของเซสชัน PipeWire อย่าใช้ `pipeWire.js` ซึ่งสามารถเชื่อมต่อผ่านรันไทม์ของผู้ใช้ที่แตกต่างกันและไม่สามารถควบคุมเสียงเดสก์ท็อปของคุณได้ การดำเนินการเหล่านี้มีเอกสารอยู่ใน คู่มือ pactlsudoของDebian

โปรแกรมแก้ไข Nano แสดงตัวแปร sink สองตัวในสคริปต์ toggle-audio-output
กำหนดค่าตัวแปรแต่ละตัวให้เป็นชื่อ sink ชื่อใดชื่อหนึ่งที่ pactl รายงานในเซสชัน Debian นี้

3. บันทึก เรียกใช้งาน และตรวจสอบสวิตช์

บันทึกใน Nano ด้วยคำสั่ง `npm install` จากนั้นCtrl+Oกด Enter Enterแล้วออกจากCtrl+XNano ด้วยคำสั่ง `npm start` ทำเครื่องหมายสคริปต์ให้เป็นไฟล์ปฏิบัติการแล้วเรียกใช้:

chmod +x ~/.local/bin/toggle-audio-output
~/.local/bin/toggle-audio-output

ควรแสดง sink เริ่มต้นใหม่ ตรวจสอบ sink เริ่มต้นปัจจุบันของเซิร์ฟเวอร์และสตรีมการเล่นที่ใช้งานอยู่:

pactl get-default-sink
pactl list short sink-inputs

เรียกใช้สคริปต์อีกครั้งเพื่อสลับกลับ สำหรับการตรวจสอบด้วยการฟัง ให้เล่นตัวอย่างเสียงสั้นๆ ขณะสลับ และยืนยันว่าเสียงมาจากอุปกรณ์ที่เลือก ชื่ออุปกรณ์และลักษณะการแสดงผลจะแตกต่างกันไปตามฮาร์ดแวร์ สถานะการเชื่อมต่อบลูทูธ และโปรไฟล์เสียงที่ใช้งานอยู่

เทอร์มินัล Debian แสดงสคริปต์สลับการใช้งานเพื่อเลือกชุดหูฟัง USB เป็นอุปกรณ์เอาต์พุตเริ่มต้น
สคริปต์จะรายงานว่าชื่อเอาต์พุตใดกลายเป็นค่าเริ่มต้นใหม่
การตรวจสอบผ่านเทอร์มินัลแสดงให้เห็นว่าคำสั่ง pactl get-default-sink ส่งคืนชื่อชุดหูฟังและรายการสตรีมการเล่น
ยืนยันปลายทางเริ่มต้น (default sink) และตรวจสอบว่ามีการส่งสตรีมที่ใช้งานอยู่ไปยังเอาต์พุตที่เลือกไว้แล้ว

เมื่อสคริปต์ไม่สลับเสียง

  • “ไม่พบอุปกรณ์รับสัญญาณ”:ลองpactl list short sinksใหม่อีกครั้ง ชุดหูฟังที่ถอดออกหรือโปรไฟล์ที่เปลี่ยนแปลงอาจทำให้ชื่ออุปกรณ์รับสัญญาณเปลี่ยนไป โปรดอัปเดตตัวแปรให้ตรงกัน
  • ไม่สามารถเชื่อมต่อได้:ตรวจสอบว่าบริการผู้ใช้ PipeWire ทำงานอยู่และpactl infoระบุเซิร์ฟเวอร์ PipeWire Pulse ได้ อย่างถูกต้อง แพ็คเกจ pipewire-pulse ของ Debian มีเซิร์ฟเวอร์ทดแทนให้ ในขณะที่pulseaudio-utilsมีpactlไคลเอ็นต์ ให้
  • ไฟล์เสียงใหม่จะเคลื่อนที่ แต่แอปปัจจุบันจะไม่เคลื่อนที่:ให้เรียกใช้สคริปต์อีกครั้งในขณะที่สตรีมนั้นยังปรากฏอยู่pactl list short sink-inputsบางแอปพลิเคชันจะเปิดสตรีมใหม่หรือคงการเลือกอุปกรณ์ของตนเองไว้ ดังนั้นให้เลือก “ค่าเริ่มต้น” ในแอปพลิเคชันนั้นหากยังคงตรึงไว้ที่เอาต์พุตใดเอาต์พุตหนึ่ง

เอกสาร Protocol Pulseของ PipeWire อธิบายว่าเหตุใดไคลเอนต์บรรทัดคำสั่ง PulseAudio จึงสามารถควบคุม PipeWire ได้เมื่อpipewire-pulseเป็นเซิร์ฟเวอร์ที่ใช้งานอยู่ สคริปต์นี้ใช้เลเยอร์ความเข้ากันได้ดังกล่าว โดยไม่ได้กำหนดค่าโปรไฟล์ฮาร์ดแวร์หรือรับประกันว่าอุปกรณ์ที่ไม่ได้เชื่อมต่อจะพร้อมใช้งาน

ฝากความเห็น

สร้างสคริปต์สลับเอาต์พุต PipeWire ที่สามารถย้ายเสียงที่ใช้งานอยู่ได้

สร้างสคริปต์สลับเอาต์พุต PipeWire ที่สามารถย้ายเสียงที่ใช้งานอยู่ได้

สลับการใช้งานเสียงของ Debian ระหว่างเอาต์พุต PipeWire ที่ตั้งชื่อไว้ โดยใช้สคริปต์ pactl ที่อัปเดต sink เริ่มต้นและกำหนดเส้นทางสตรีมที่กำลังเล่นอยู่ใหม่

กู้คืนการป้อนข้อมูลไมโครโฟนของหูฟังบลูทูธบน Ubuntu 24.04

กู้คืนการป้อนข้อมูลไมโครโฟนของหูฟังบลูทูธบน Ubuntu 24.04

ทำให้ไมโครโฟนของชุดหูฟังบลูทูธใช้งานได้โดยเลือกอินพุตที่ถูกต้อง ใช้โปรไฟล์เสียงแบบแฮนด์ฟรี และตรวจสอบเส้นทาง PipeWire ของ Ubuntu

แก้ไขปัญหาแอป Flatpak ไม่รองรับธีม GTK ใน Ubuntu 24.04

แก้ไขปัญหาแอป Flatpak ไม่รองรับธีม GTK ใน Ubuntu 24.04

เรียนรู้สาเหตุที่แอป Flatpak อาจไม่รองรับธีม GTK ของ Ubuntu 24.04 และปฏิบัติตามขั้นตอนที่ปลอดภัยเพื่อตรวจสอบส่วนขยายธีม รีเฟรชแอป Flatpak และวินิจฉัยปัญหาของพอร์ทัล

วิธีการติดตั้งระบบปฏิบัติการ Ubuntu 24.04 และ Windows 11 แบบ Dual-Boot โดยเปิดใช้งาน BitLocker ไว้

วิธีการติดตั้งระบบปฏิบัติการ Ubuntu 24.04 และ Windows 11 แบบ Dual-Boot โดยเปิดใช้งาน BitLocker ไว้

ติดตั้ง Ubuntu 24.04 ควบคู่ไปกับ Windows 11 ที่มี BitLocker อย่างปลอดภัย เปรียบเทียบเส้นทางไดรฟ์แยกต่างหากและไดรฟ์ที่ใช้ร่วมกัน รหัสกู้คืน การแบ่งพาร์ติชั่น และการตรวจสอบการบูต

วิธีแก้ไขปัญหาไดรเวอร์ Nvidia ไม่โหลดหลังจากอัปเดตเคอร์เนลบน Ubuntu

วิธีแก้ไขปัญหาไดรเวอร์ Nvidia ไม่โหลดหลังจากอัปเดตเคอร์เนลบน Ubuntu

ตรวจสอบความล้มเหลวของไดรเวอร์ NVIDIA หลังจากการอัปเดตเคอร์เนล Ubuntu ตรวจสอบ DKMS และ Secure Boot สร้างโมดูลที่เกี่ยวข้องใหม่ ลงทะเบียน MOK และตรวจสอบการแก้ไข

วิธีแก้ไขปัญหา Wi-Fi หลุดการเชื่อมต่อหลังจากพักเครื่องใน Ubuntu 24.04

วิธีแก้ไขปัญหา Wi-Fi หลุดการเชื่อมต่อหลังจากพักเครื่องใน Ubuntu 24.04

แก้ไขปัญหาการหลุดการเชื่อมต่อ Wi-Fi ใน Ubuntu 24.04 หลังจากเข้าสู่โหมดพักเครื่อง โดยตรวจสอบ NetworkManager, การบล็อกคลื่นความถี่, การอัปเดต, โหมดประหยัดพลังงาน และไดรเวอร์ จากนั้นตรวจสอบทุกครั้งที่กลับมาใช้งานต่อ

แก้ไขปัญหาการใช้งาน CPU สูงโดย Tracker-Miner-3 ใน Ubuntu GNOME

แก้ไขปัญหาการใช้งาน CPU สูงโดย Tracker-Miner-3 ใน Ubuntu GNOME

เรียนรู้ว่าเหตุใด tracker-miner-fs-3 จึงใช้ CPU สูงใน Ubuntu GNOME และวิธีการตรวจสอบการจัดทำดัชนี การยกเว้นโฟลเดอร์ การอัปเดต Ubuntu หรือการสร้างดัชนีการค้นหาใหม่อย่างปลอดภัย

แก้ไขปัญหา “ไม่พบอุปกรณ์บูต” หลังจากติดตั้ง Debian บน UEFI

แก้ไขปัญหา “ไม่พบอุปกรณ์บูต” หลังจากติดตั้ง Debian บน UEFI

แก้ไขข้อผิดพลาดในการบูต UEFI ของ Debian โดยตรวจสอบโหมดการบูต พาร์ติชั่นระบบ EFI ไฟล์ GRUB และลำดับการบูตเฟิร์มแวร์ โดยไม่ต้องติดตั้ง Debian ใหม่ก่อน

วิธีใช้ Focus Session ใน Windows 11 เพื่อการเรียน

วิธีใช้ Focus Session ใน Windows 11 เพื่อการเรียน

ค้นพบวิธีใช้ประโยชน์จาก Focus Sessions ใน Windows 11 เพื่อการเรียนที่มีประสิทธิภาพ เรียนรู้เคล็ดลับทีละขั้นตอนเพื่อลดสิ่งรบกวน เพิ่มสมาธิ และบรรลุผลการเรียนที่ดีขึ้นด้วยเครื่องมือเพิ่มประสิทธิภาพการทำงานในตัวนี้

แก้ไขข้อผิดพลาด Nxdomain ใน Windows 11 (DNS Probe Finished)

แก้ไขข้อผิดพลาด Nxdomain ใน Windows 11 (DNS Probe Finished)

กำลังประสบปัญหาข้อผิดพลาด "DNS Probe Finished Nxdomain" บน Windows 11 อยู่ใช่ไหม? ค้นพบวิธีแก้ไขปัญหา DNS อย่างรวดเร็ว กู้คืนการเชื่อมต่ออินเทอร์เน็ต และกลับมาใช้งานออนไลน์ได้โดยไม่หงุดหงิด คู่มือทีละขั้นตอนสำหรับผู้เริ่มต้น