การปรับปรุงคำตอบ Waschtlของชุดข้อความนี้เพื่อให้คุณสามารถฟังและบันทึกเสียงของแอปได้:
อันดับแรกเรามองหาเอาต์พุตเริ่มต้นของเราและใส่ชื่อ sink ใน$DEFAULT_OUTPUT
:
$ pacmd list-sinks | grep -A1 "* index"
* index: 1
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
$ DEFAULT_OUTPUT=$(pacmd list-sinks | grep -A1 "* index" | grep -oP "<\K[^ >]+")
$ echo $DEFAULT_OUTPUT
alsa_output.pci-0000_00_1b.0.analog-stereo
จากนั้นเราจะสร้างอ่างล้างจานรวมที่มีเพียงหนึ่งทาส: $ DEFAULT_OUTPUT เสียงที่สร้างขึ้นโดยแอพ (แหล่งที่มา) จะถูกส่งต่อไปยังสลาฟทาส (เช่นเอาต์พุตจริง) และเราจะบันทึกเสียงด้วย มันแตกต่างจากอ่างล้างจาน nullที่ไม่มีการส่งต่อเสียงต้นทาง
$ pactl load-module module-combine-sink \
sink_name=record-n-play slaves=$DEFAULT_OUTPUT \
sink_properties=device.description="Record-and-Play"
sink_properties
เป็นทางเลือกและอาจมีข้อบกพร่องหากคุณใช้ช่องว่างในชื่อคำอธิบาย
จากนั้นเราสามารถใช้pactl move-sink-input ...
คำสั่งของคำตอบ Waschtl (ด้วยการบันทึก -n-playแทนที่จะเป็นไอน้ำ ) แต่ GUI pavucontrol
นั้นง่ายกว่า (และยอดเยี่ยมสำหรับการตรวจสอบ / แก้ไขปัญหา):
$ sudo apt-get install pavucontrol
$ pavucontrol &
จากนั้นเราเล่นเสียงในแอพที่เราต้องการบันทึก ในpavucontrol
Playbackแท็บที่เราเลือกในรายการ app แบบเลื่อนลง: "บันทึก-and-Play"
ในที่สุดเราก็ยินดีที่จะบันทึกและฟังในเวลาเดียวกัน! ( ตัวอย่าง mp3 lameทำงานในเบื้องหน้า)
$ parec --format=s16le -d record-n-play.monitor | \
lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3"
หรือเราสามารถบันทึกเป็นพื้นหลังและหยุดเมื่อใดก็ได้:
$ parec --format=s16le -d record-n-play.monitor | \
lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3" \
> /dev/null &1>/dev/null
$ killall -q parec lame
หมายเหตุ:
- หากต้องการเลิกทำทุกอย่างหรือลองใหม่อีกครั้งขั้นตอน: ลบหรือรีเซ็ตอ่างล้างมือโดยใช้คำตอบนี้
pulseaudio -k
ใช้งานได้ดีในการรีเซ็ตทุกอย่างเป็นค่าเริ่มต้นของเซสชัน
- หากเราเปลี่ยนเอาต์พุตเริ่มต้นในการตั้งค่าระบบเสียงการตั้งค่าการเล่นแอพที่กำหนดเองจะถูกเขียนทับและเราจะต้องกลับไปที่ pavucontrol เพื่อตั้งค่ากลับเป็นอินเทอร์เฟซที่รวมกัน
- เพื่อให้สามารถฟังเสียงจากอินเทอร์เฟซ "ของจริง" (เช่นหูฟังเอาต์พุต HDMI ฯลฯ ... ) เราควรรวมเอาท์พุท "ของจริง" ทั้งหมดที่เราอาจใช้ฟังเป็นทาส slink บันทึก -n-play
pactl load-module module-combine-sink sink_name=record-n-play slaves=real-output-1,real-output-2
เช่น:
แก้ไข: ระวังตั้งแต่ Ubuntu 18 (อาจ 17 เกินไป) อ่างรวมที่รวมกันมีแนวโน้มที่จะกลายเป็นอุปกรณ์ส่งออกระบบเริ่มต้นแทนที่จะเป็นอุปกรณ์ส่งออกจริง ดังนั้นเมื่อคุณเปลี่ยนระดับเสียงโดยใช้ไอคอนเสียงในซิสเต็มเทรย์ระบบจะส่งผลต่อเสียงบันทึกของคุณ วิธีแก้ปัญหา: หลังจากสร้างอ่างรวมแล้วให้เปิดpavucontrol
ในแท็บเอาท์พุท เลือก "มุมมอง: อุปกรณ์ส่งออกเสมือน" และรีเซ็ตระดับเสียงของอ่างรวมรวมเป็น 100% จากนั้นเลือก "มุมมอง: อุปกรณ์ส่งออกฮาร์ดแวร์" และกดไอคอนสีเขียว "กำหนดเป็นทางเลือก" บนอุปกรณ์แสดงผลจริง