Pulseaudio loopback ยกเลิกการโหลดอุปกรณ์เอาต์พุตเสียง


12

ฉันกำลังพยายามหาวิธีที่จะยกเลิกการโหลดลูปแบ็กเอาต์ pulseaudio ฉันใช้ pulseaudio เพื่อสร้างการวนลูปแบ็คเพื่อบันทึกไมโครโฟนและระบบเสียงสำหรับการสตรีม ทุกครั้งที่ฉันเรียกใช้งานสคริปต์ซึ่งมีรหัสนี้:

pactl load-module module-null-sink sink_name=mix 
pactl load-module module-loopback sink=mix
pactl load-module module-loopback sink=mix

avconv ...

pactl unload-module module-loopback

มันปล่อยให้อุปกรณ์เอาต์พุตสองตัวอยู่ด้านหลังหลังจากปิด คำสั่ง unload-module กำจัดการบันทึก แต่ฉันไม่พบคำสั่งสำหรับเอาต์พุต

คำตอบ:


17

วิธีที่เหมาะสมในการยกเลิกการโหลดโมดูล

การยกเลิกการโหลดโมดูลที่โหลดไปยัง Pulse Audio นั้นทำโดยหมายเลขดัชนีของโมดูลซึ่งกำหนดไว้เมื่อโหลด:

pactl load-module module-null-sink sink_name=test
24

ในตัวอย่างข้างต้นเซิร์ฟเวอร์ PulseAudio โหลดโมดูลที่มีค่าดัชนี 24ID โมดูลนี้สามารถยกเลิกการโหลดด้วยคำสั่งต่อไปนี้:

pactl unload-module 24

pactlสคริปต์ของคุณจะมีการแยกการส่งออกของ

ในกรณีที่เราไม่ทราบหมายเลขโมดูลเราสามารถใช้คำสั่งต่อไปนี้ซึ่งจะแสดงหมายเลขและชื่อโมดูล:

pactl list short modules

เวอร์ชันที่ใหม่กว่าอนุญาตการยกเลิกการโหลดตามชื่อ:

pactl unload-module <name>

วิธีที่รวดเร็วและสกปรก

หาก pulseaudio ถูกตั้งค่าเป็นปีศาจวางไข่อัตโนมัติ (ซึ่งควรเป็นจุดเริ่มต้นเริ่มต้น) เราอาจยกเลิกการโหลดโมดูลทั้งหมดที่โหลดหลังจากเข้าสู่ระบบอย่างรวดเร็วด้วยการรีเซ็ตเซิร์ฟเวอร์ PulseAudio เพื่อโหลดโมดูลเริ่มต้นที่กำหนดไว้ในการdefault.paทำงานของเรา:

pulseaudio -k

สิ่งนี้จะยกเลิกการโหลดโมดูลทั้งหมดจากสคริปต์ของคุณอย่างมีประสิทธิภาพและจะโหลด sink เริ่มต้นสำหรับเอาต์พุต


เป็นมูลค่าการกล่าวขวัญว่าไม่ aplications ทั้งหมดจะกู้คืนจากการมีการตัดกระแสของพวกเขา
Aurelia

ได้รับหมายเลขโมดูลโดยใช้ชื่ออ่างล้างจาน: MODULE_NUMBER=$(pacmd list-sinks | grep -E "^\s*name:|^\s*module:" | grep -A 1 -E "^\s*name: <MY-SINK-NAME>" | grep -oP "module: \K[0-9]+")ที่MY-SINK-NAMEคือสิ่งที่มันพูดว่า เก็บ< >ในรหัส!
KrisWebDev

1
@KrisWebDev: ขอบคุณเพิ่มบรรทัดในการรับดัชนีโมดูลสำหรับ aproach ทั่วไปมากขึ้น
Takkat

เยี่ยมมากแล้วสิ่งนี้จะกลายเป็น: pactl list short modules | grep "sink_name=MY-SINK-NAME" | cut -f1 | xargs -L1 pactl unload-module. มันมีข้อดีของการลบโมดูลทั้งหมดที่มีชื่อMY-SINK-NAME(ชื่ออ่างไม่ซ้ำกัน)
KrisWebDev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.