Aby przełączyć się na wyjście audio HDMI (monitora) i wrócić do normalnego wyjścia audio z systemowego gniazda audio (dla słuchawek, ponieważ mój monitor nie ma wyjścia audio), otwieram preferencje dźwięku i wybieram właściwy kanał za każdym razem. Czy jest jakiś sposób, aby utworzyć przycisk przełączania w panelu lub przypisać jakiś klawisz skrótu do przełączania, ponieważ tak często przełączam.
:aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: STAC92xx Analog [STAC92xx Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 3: HDMI 0 [HDMI 0]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 7: STAC92xx Digital [STAC92xx Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
sound
software-recommendation
iJeeves
źródło
źródło
Odpowiedzi:
Dzięki pulseaudio jesteśmy w stanie wybrać ujście wyjściowe z wiersza poleceń:
To polecenie może być użyte w programie uruchamiającym, skrypcie lub nawet przypisane do skrótu klawiaturowego w celu szybkiego przełączania między różnymi ujściami. Zastąp „SINKNAME” nazwą lub numerem żądanego zlewu. Lista znanych zlewów wraz z ich powiązanymi numerami i nazwami jest podana przez polecenie:
Uwaga: Zmiana ujścia wyjściowego za pomocą interfejsu wiersza polecenia może zostać zastosowana tylko wtedy, gdy odczyt urządzenia docelowego strumienia jest wyłączony. Można to zrobić, edytując linię odpowiadającą w
/etc/pulse/default.pa
:Alternatywnie możemy uruchomić pulseaudio, aby jednocześnie wyprowadzać dźwięk do wewnętrznego urządzenia audio i do urządzenia hdmi, uruchamiając paprefs z opcją dodania wirtualnego urządzenia wyjściowego:
źródło
pacmd set-default-sink "alsa_output.pci-0000_00_1b.0.analog-stereo"
ipacmd set-default-sink "alsa_output.pci-0000_00_1b.0.hdmi-stereo"
działa tylko po wybraniu odpowiedniego profilu w Preferencjach dźwięku. Jeśli mam ustawiony HDMI i uruchamiam polecenie pacmd dla analogowego stereo, dostaję błąd.Sink alsa_output.pci-0000_00_1b.0.analog-stereo does not exist.
Ale jeśli ręcznie wybiorę profil z GUI preferencji dźwięku i uruchomię to samo polecenie, nie otrzymuję błędu. Więc to nie pomaga się zmienić.Uznałem to za bardzo irytujące i napisałem skrypt do przełączania wyjścia:
a następnie związał nieużywany klawisz na klawiaturze, aby go wykonać (zobacz Jak powiązać niestandardowe polecenia ze skrótami klawiaturowymi? )
źródło
Yet Another Sink Switcher Script
testowany na Ubuntu 16.04
Ale ten pozwala przełączać tylko dźwięk aplikacji, którą chcesz.
UŻYTKOWANIE: Skoncentruj aplikację, którą chcesz zmienić, i uruchom ten skrypt. Otóż to!!!
Ten skrypt wykrywa aktywną aplikację, znajduje wszystkie odtwarzane z niej pliki audio i przełącza je na następny dostępny zlew.
https://gist.github.com/madacol/1a0d8569166886d2d98f073f7f5c5fe3
Wyjaśnienie skryptu
Musimy znaleźć PID aplikacji w centrum uwagi
Ale najpierw potrzebujemy xid
Następnie włóż go tutaj,
$xid
aby uzyskać identyfikator aplikacjiTeraz musimy znaleźć wejścia do ujścia związane z tym PID
Najpierw zlinearyzujmy wynik polecenia,
pacmd list-sink-inputs
aby wyświetlić jeden wejściowy obiekt sink w wierszu, pokazując jego indeks, obiekt sink i pid w tym samym wierszuprzeanalizujmy to krok po kroku:
grep -E 'index:|sink:|process.id
tylko utrzymać linie, które zawierająindex:
,sink:
lubprocess.id
tr '\n' ' '
łączy wszystkie linietr -d '"'
usuwa wszystkie"
postacie. Niezbędne, aby uzyskać pid bez cytatówsed -e 's/index:/\n/g'
zastępuje wszystkieindex:
wystąpienia nowym znakiem wiersza\n
tail -n +2
usuwa pierwszy wiersz, ponieważ jest pustyRezultat jest mniej więcej taki:
Przeanalizujmy jedną linię, aby zrozumieć, co to znaczy:
182
jest indeksem wejścia-ujścia,0
jest indeksem ujścia, a13752
na końcu jest pid odpowiedniej aplikacjiNastępnie iterujemy każdą linię
I na koniec filtruj tylko pid wejścia wejścia do zlewu, który odpowiada pidowi skoncentrowanej aplikacji
Wyodrębnianie danych
Dzięki
awk
możemy uzyskać potrzebne elementyUzyskaj liczbę zlewów, aby wiedzieć, kiedy obrót zlewów powinien rozpocząć się od 0.
Znajdując następny zlew, musimy iterować listę zlewów, aby wiedzieć, który z nich pasuje do current_sink_index i znać indeks następnego zlewu.
I na koniec, przesuwamy wejście sink do play in next_sink_index
Uwaga na temat Ubuntu 16.04:
Podczas konfigurowania klawisza skrótu nie mogłem go uruchomić z menedżerem skrótów ubuntu. Musiałem więc zainstalować compizconfig-settings-manager
źródło
Jeśli używasz Gnome Shell zamiast Unity, możesz zainstalować rozszerzenie poniżej. Będziesz wtedy mógł przełączyć się ze skrótu głośności w górnym panelu. https://extensions.gnome.org/extension/142/output-device-chooser-on-volume-menu/
źródło
Ponieważ na zrzucie ekranu widoczna jest tylko jedna karta dźwiękowa, myślę, że wyjście tej karty dźwiękowej powinno zostać przełączone.
Na przykład: Mam notebooka z jedną zintegrowaną kartą dźwiękową, ale po zadokowaniu ma on wyjście cyfrowe (SPDIF).
Więc chciałem przełączyć aktywne wyjście lub „Profil” w pulseaudio.
Znalazłem polecenia, które dokładnie to robią:
To, co zrobiłem, aby uzyskać prawidłowe nazwy dla pożądanego ustawienia wyjścia - tutaj, wyjście cyfrowe, ale wejście analogowe (mikro) - to:
źródło
Próbowałem również znaleźć rozwiązanie tego problemu. W przypadku Ubuntu 11.04 nie wydaje się to możliwe bezpośrednio, znalazłem tylko ten przewodnik, aby dodać zarówno HDMI, jak i Analog jako osobne wyjścia, więc pacmd pokazuje teraz 3 zlewy. Następnie można przełączać się między zlewami za pomocą powyższych poleceń. ( patrz także )
Ale najwyraźniej Ubuntu 11.11 otrzyma PulseAudio z systemem wykrywania gniazd. Zgodnie z poniższą witryną David Henningsson zakodował wykrywanie za pomocą udev, więc pulsacyjny dźwięk automatycznie przełącza się na ostatnio dodane wyjście, w tym przełączanie między różnymi profilami tej samej karty dźwiękowej (jak ma to miejsce w przypadku twojej i mojej konfiguracji). (patrz tutaj )
Mam więc nadzieję, że to zadziała, kiedy wypróbuję ostateczną wersję w następny piątek.
źródło
Na podstawie wielu poprzednich odpowiedzi napisałem skrypt, który ustawia ujście odtwarzania na przemian z dostępnymi.
Najlepszym sposobem korzystania z niego jest utworzenie skrótu klawiaturowego, aby go uruchomić, więc za każdym razem, gdy naciśniesz tę kombinację klawiszy, dźwięk zostanie przekierowany do następnego dostępnego zlewu.
Kod jest dostępny tutaj: https://gist.github.com/germank/7fa2fb07d45a838bf890addadd8bea8c
źródło
W moim przypadku opcji analogowych nie ma na liście. Zainstaluj pavucontrol:
sudo apt install pavucontrol
Można rozwiązać problem, uruchamiając aplikację:
pavucontrol
(enter)Teraz mogę tutaj brzmieć i wybierać różne profile (w Linux Mint):
źródło
Alternatywą dla Sound Switcher Indicator (która wymaga dodania PPA) jest utworzenie polecenia (lub skryptu) i wywołanie go za pomocą skrótu:
W moim przypadku był
hdmi-stereo-extra1+input
profil, więc w jednej linii byłoby:Możesz użyć niestandardowego skrótu (
gnome-control-center keyboard
), aby go wykonaćbash -c
(ostrzeże Cię, jeśli wystąpi konflikt z innym skrótem):Używam:
Możesz także dodać
alias
do swojego.bashrc
.Testowane na Ubuntu 16.04 i 18.04
Jeśli nie wolisz zachowania skryptowego, dokonałem pewnych zmian w oparciu o odpowiedź @ user829996:
źródło
Napisałem aplet wskaźnika, który pozwala przełączać wyjście dźwięku.
źródło