2011-01-17 32 views
14

Tôi đang làm việc trên một ứng dụng dành cho thiết bị di động cho Maemo/MeeGo và Maemo sử dụng PulseAudio. Tôi muốn phát mp3 để gọi (và hủy mic khi thực hiện nó, và không nghe người gọi, mọi thứ nên được thực hiện trên nền), để làm điều này, tôi phải chuyển hướng đầu ra âm thanh từ một số (nếu không thể, tất cả) ứng dụng, giả mạo nó như là một đầu vào và làm cho ứng dụng điện thoại sử dụng nó.Làm thế nào để chuyển hướng từ đầu ra âm thanh sang đầu vào mic bằng PulseAudio?

Trên máy tính Ubuntu của tôi, tôi đã làm điều đó với pavucontrol. Tôi đã tạo một bồn chứa NULL, sau đó:

Audio Output (from Amarok) --> to NULL Output 
Skype Input <-- NULL Output 
Skype Output --> NULL 

Và nó đã hoạt động, Amarok phát nhạc và phát trực tuyến tới Skype mà không nghe thấy gì về tất cả quy trình. Vấn đề là; a) Maemo không có pavucontrol. b) Ngay cả khi nó đã làm (hoặc nếu tôi gói nó) Nó sẽ không được tốt vì nó là một ứng dụng GUI duy nhất và tôi phải làm tất cả những thứ này trên nền, mà không có bất kỳ đầu vào người dùng. (có nghĩa là: CLI hoặc API)

Đã hỏi về điều này trên Freenode #pulseaudio và một anh chàng hữu ích cho biết "Có thể thực hiện khá nhiều thông qua pactl hoặc pacmd, các lệnh bạn muốn là di chuyển-sink-input và di chuyển nguồn- đầu ra, nhưng bạn cần biết chỉ mục thiết bị và luồng. " Vì vậy, có vẻ như pavucontrol chỉ là một GUI, pactl và pacmd là thỏa thuận thực sự, và quan trọng nhất, chúng là các ứng dụng CLI.

Tôi thực sự biết ơn anh ấy nhưng tôi không biết gì về "pactl", "pacmd", "di chuyển-chìm-input" hoặc "chỉ số thiết bị/suối" vì vậy tôi cần một rất đơn giản của nhãn hiệu trang, hoặc một nguồn của ứng dụng tương tự, một lệnh một lớp (hai? toàn bộ trang lệnh ?, chỉ cần cho tôi chúng! ^^) hoặc một người đủ kiên nhẫn để giải thích công cụ này cho tôi.

Trả lời

1

Hướng dẫn cho pactlpacmd có sẵn nếu bạn tìm kiếm. Tôi tìm thấy chúng ở đây:

pactl

pacmd (pulse-cli-syntax)

Tôi nghĩ rằng bạn quan tâm đến các đoạn trích sau đây từ hướng dẫn pactl:

di chuyển-chìm-input ID tản: Di chuyển luồng phát lại được chỉ định (được xác định bằng chỉ mục số của nó) vào bồn rửa được chỉ định (được xác định bằng tên biểu tượng hoặc chỉ số của nó).

Bạn sẽ có thể sử dụng pactl list sink-inputs, pactl list source-outputs, pactl list sinks, và pactl list sources kết hợp với một số grep và/hoặc sed hoặc một cái gì đó có tính chất đó để lập trình xác định luồng chính xác và bồn rửa.

+0

ha! bạn đã ở đâu sáu năm trước? cảm ơn! :) –

+0

Tốt hơn bao giờ hết? :) – izzy

Các vấn đề liên quan