Pulseaudio loopback dỡ các thiết bị đầu ra âm thanh


12

Tôi đang cố gắng tìm hiểu làm thế nào để giải nén đầu ra loopback pulseaudio. Tôi đang sử dụng pulseaudio để tạo hỗn hợp loopback để thu micrô và âm thanh hệ thống để phát trực tuyến. Mỗi lần tôi khởi chạy tập lệnh có mã này:

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

nó để lại hai thiết bị đầu ra sau khi nó đóng lại. Lệnh unload-module thoát khỏi bản ghi nhưng tôi không thể tìm thấy lệnh cho đầu ra.

Câu trả lời:


17

Cách thích hợp để dỡ bỏ các mô-đun

Dỡ bỏ một mô-đun được tải vào Pulse Audio được thực hiện bằng số chỉ mục của mô-đun, được đưa ra khi tải:

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

Trong ví dụ trên, máy chủ Pulseaudio đã tải mô-đun với id chỉ mục 24. Mô-đun này có thể được dỡ tải bằng lệnh sau:

pactl unload-module 24

Kịch bản của bạn sẽ phải phân tích đầu ra của pactl.

Trong trường hợp chúng ta không biết số mô-đun, chúng ta có thể đưa ra lệnh sau sẽ hiển thị số và tên mô-đun:

pactl list short modules

Các phiên bản mới hơn cũng cho phép dỡ tải theo tên:

pactl unload-module <name>

Phương pháp nhanh và bẩn

Nếu pulseaudio được thiết lập là quỷ sinh sản tự động (phải là yêu cầu mặc định), chúng tôi có thể nhanh chóng dỡ tất cả các mô-đun được tải sau khi đăng nhập bằng thiết lập lại máy chủ PulseAudio để tải các mô-đun mặc định được xác định trong default.pakhi chạy:

pulseaudio -k

Điều này sẽ thực sự dỡ tất cả các mô-đun khỏi tập lệnh của bạn và sẽ tải phần chìm mặc định cho đầu ra.


Đáng nói là không phải tất cả các ứng dụng sẽ phục hồi sau khi cắt luồng của họ.
Aurelia

Lấy số mô-đun theo tên chìm: 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]+")nơi MY-SINK-NAMElà những gì nó nói. Giữ < >mã trong!
KrisWebDev

1
@KrisWebDev: cảm ơn, đã thêm một dòng về cách lấy các chỉ số mô-đun cho một aproach tổng quát hơn.
Takkat

Tuyệt vời, sau đó điều này trở thành : pactl list short modules | grep "sink_name=MY-SINK-NAME" | cut -f1 | xargs -L1 pactl unload-module. Nó có lợi thế là xóa TẤT CẢ các mô-đun có tên MY-SINK-NAME(tên chìm không phải là duy nhất).
KrisWebDev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.