Odtwarzaj dźwięk przez dwa lub więcej wyjść / urządzeń

79

Myślę, że to dość prosta koncepcja. Mam jedną kartę dźwiękową i jedną parę słuchawek Bluetooth. Chcę odtwarzać dźwięk przez kartę dźwiękową i słuchawki Bluetooth.

Wierzę, że Windows ma pola wyboru, które pozwalają „sprawdzić” wyjścia, aby je włączyć / wyłączyć, ale Ubuntu najwyraźniej ma odpowiednik selektorów radiowych (możesz wybrać tylko jeden na raz).

Premia Pytanie: Z podobnej uwagi mam 5 analogowych kanałów wyjściowych na mojej karcie dźwiękowej (oprócz mojego dźwięku cyfrowego i HDMI) - Chciałbym móc określić, co wychodzi z każdego z tych portów (np. „Przód” głośniki „na wszystkich 5 lub„ przednich ”,„ środkowych ”,„ tylnych ”itp.).

Z góry dziękuję!

Nathan JB
źródło
Przeczytałem wszystkie odpowiedzi, sprawdzając również datę odpowiedzi. Jakie jest obecne rozwiązanie dla Ubuntu 18.04?
LeonidMew
Tak, wersja paprefsrepozytoriów Ubuntu 18.04 jest bezużyteczna (ponieważ nadal uważa, że ​​GConf jest modny i dlatego nie działa). Najlepszą alternatywą jest samodzielne ładowanie module-combine-sinkPulseAudio (bo to i tak paprefsdzieje się za sceną). Użyj polecenia pactl load-module module-combine-sinki sprawdź sekcję Dźwięki w Ustawieniach Ubuntu.
AneesAhmed777

Odpowiedzi:

88

Dzięki paprefsdostępowi do wirtualnego urządzenia wyjściowego, które umożliwia jednoczesne wyjście na wszystkie podłączone karty dźwiękowe / urządzenia:

sudo apt install paprefs 

Następnie w uruchomieniu terminalu paprefswybierz zakładkę „Jednoczesne wyjście” i zaznacz „Dodaj wirtualne wyjście dla jednoczesnego wyjścia na wszystkich lokalnych kartach dźwiękowych”.

paprefs

Dodatkowo utworzone urządzenie wyjściowe audio do jednoczesnego wyjścia można wybrać w zakładce „Wyjście” z menu preferencji dźwięku pulseaudio:

wprowadź opis zdjęcia tutaj

W tym przykładzie pokazano to dla urządzenia HDMI, ale jak tylko urządzenie Bluetooth zostanie rozpoznane, będzie również dostępne do jednoczesnego wyjścia.

Zmiany mogą wymagać ponownego uruchomienia pulseaudio w celu wyegzekwowania przez wylogowanie i ponowne zalogowanie do sesji lub uruchomienie pulseaudio -kw terminalu.

Takkat
źródło
1
To załatwi sprawę. W miarę pogłębiania się w rozwoju dźwięku, naprawdę chciałbym móc wybrać określone urządzenia i / lub porty.
Nathan JB,
1
@ NathanJ.Brauer: możesz być zainteresowany tą odpowiedzią . Aby zmienić porty, zobacz także wiki pulseaudio, do której tam linkowałem.
Takkat
1
och, nieważne, sudo apt install paprefsdziała
tatsu
2
ten nie działa dla mnie w 18.04. Jeśli wiesz, jak to zrobić z ALSA, pomóż mi tutaj: askubuntu.com/q/1042485/586277
ICE
2
nie działa dla mnie w Ubuntu 16.04. Nie widzę żadnej takiej opcji jak „Jednoczesne wyjście” w oknie preferencji dźwięku
node_man
21

Ubuntu

Właśnie potwierdziłem, że to rozwiązanie (sprzed 4 lat) nadal działa na Ubuntu 14.04 LTS.

zainstalować

Otwórz terminal i wpisz sudo apt-get install paprefsprzejdź do zakładki dokładnie tak, jak na powyższym obrazku i wybierz opcję.

Uruchomienie początkowe

Następnie; pozostając w terminalu, wpisz, pulseaudio -kaby zabić i ponownie uruchomić pulseaudio.

Następnie przejdź do ustawień dźwięku, a zobaczysz opcję wyjścia na wiele urządzeń dźwiękowych.

Rekwizyty dla każdego, kto napisał paprefs, to genialny mały program, który chciałbym zobaczyć w Ubuntu bez konieczności dodatkowej instalacji.

Apple Mac OS OS X

Podobne rozwiązanie jest dostępne za pomocą dołączonego oprogramowania, a to, co jest tak wspaniałe, pulseaudioto to, że dźwięk wydaje się idealnie zsynchronizowany z obydwoma wyjściami, więc musi dostosowywać się również do opóźnienia, dlatego jest tak imponujący; w przeciwnym razie usłyszymy nieco opóźnioną wersję z jednego wyjścia i drugiego.

aaricus
źródło
1
dziękuję za wykonanie pracy, aby sprawdzić, czy rozwiązanie jest nadal aktualne!
Peter Karasev
2
Działa to również na Ubuntu 16.04.1 LTS
aggsol
5

Aby uzupełnić doskonałą odpowiedź Takkata, zauważyłem, że domyślna nazwa nowego urządzenia była zbyt długa i zniekształciłem okno dialogowe Ustawienia dźwięku. Aby skrócić tę nazwę, musiałem dodatkowo wykonać następujące polecenie:

gconftool --set --type string /system/pulseaudio/modules/combine/args0 sink_properties=device.description=Combined

Ustawienia dźwięku z połączonym urządzeniem

Paulo
źródło
2
Jak mogę to cofnąć ?!
Iman Mohamadi
4

Nie mogłem wyciągnąć propozycji Takkata z pudełka w Debianie 8.7, chociaż zrestartowałem system. Zakładam, że wypełniłeś propozycję Takkata podczas instalacji paprefs. Rozszerzenie odpowiedzi Takkata, które działa w oparciu o Arch Arch wiki, w którym przechowuje wejście analogowe i Pulse wywołuje ten „dupleks”

# /etc/pulse/default.pa
# http://unix.stackexchange.com/a/180374/16920
load-module module-alsa-sink device=hdmi:0
load-module module-combine-sink sink_name=combined
set-default-sink combined

Następnie uruchom ponownie pulseaudio:

pulseaudio -k
Léo Léopold Hertz 준영
źródło
Dla mnie ten zadziałał, gdy miałem urządzenie = "hw: 0,0" zgodnie z aplay -l(patrz forums.linuxmint.com/viewtopic.php?t=264540#p1436479 )
Laurenz
Pamiętaj, aby umieścić na początku pliku! Działa to dla mnie (hw: 0,0) na Ubuntu 18.04.2, grając na dwóch monitorach HDMI, po tym, jak przesunąłem linie na górę.
orangenarwhals
2

W Kubuntu 18.04, Plazma 5.12 paprefsnie jest potrzebna, ponieważ podobne ustawienie już tam jest:

wprowadź opis zdjęcia tutaj

Nowa opcja wyjścia powinna być dostępna po ponownym uruchomieniu, zwana „Jednoczesnym wyjściem”.

wprowadź opis zdjęcia tutaj

Lub w pavucontrol:

wprowadź opis zdjęcia tutaj


W 18.10 z Plazą 5.13.5 ta opcja „Wyjścia symultanicznego” została usunięta, więc aprefsjest potrzebna.


źródło
0

Ponieważ LeonidMewpytałem o 18.04 (używam 18.04.2), oto moja wersja.

GUI paprefspróbował połączyć jedno HDMI z jednym wyjściem analogowym, zamiast obu HDMI. Musiałem więc edytować plik zgodnie z opisemLéo Léopold Hertz 준영

$ gedit /etc/pulse/default.pa
# then after changes 
$ pulseaudio -k

Obie te metody działają same, więc wybierz jedną ( pamiętaj, aby dodać na początku pliku , umieszczam ją zaraz po tym .fail! W przeciwnym razie nie działa).

Metoda A

load-module module-alsa-sink device=hw:1,3 sink_name=hdmi
load-module module-alsa-sink device=hw:1,7 sink_name=hdmi2
load-module module-combine-sink sink_name=combined slaves=hdmi,hdmi2
set-default-sink hdmi-combined

Metoda B

load-module module-alsa-sink device=hw:0,0
load-module module-combine-sink sink_name=combined

Odniesienie

Metoda A

Dla porównania, hw:0,0pochodzi zaplay -l

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Metoda B

I 1:3pochodzi z

$ pacmd list-sinks | grep -e 'name:' -e 'alsa.device ' -e 'alsa.subdevice '
    name: <alsa_output.pci-0000_00_1b.0.iec958-stereo>
        alsa.subdevice = "0"
        alsa.device = "1"
    name: <alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1>
        alsa.subdevice = "0"
        alsa.device = "7"

W „ustawieniach dźwięku” ustawiłem drugie HDMI jako wyjście, a potem dostałem

$ pacmd list-sinks | grep -e 'name:' -e 'alsa.device ' -e 'alsa.subdevice '
    name: <alsa_output.pci-0000_00_1b.0.iec958-stereo>
        alsa.subdevice = "0"
        alsa.device = "1"
    name: <alsa_output.pci-0000_01_00.1.hdmi-stereo>
        alsa.subdevice = "0"
        alsa.device = "3"

Aby zweryfikować, pobiegłem

$ aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Right.wav
$ aplay -D plughw:1,7 /usr/share/sounds/alsa/Front_Right.wav

które brzmiały na ich odpowiednich monitorach.

orangenarwhals
źródło