Pertanyaan Pintasan untuk beralih antara output Stereo Analog & output audio HDMI


Untuk beralih ke output audio HDMI (monitor) dan kembali ke output audio normal dari jack audio sistem (untuk headphone, karena monitor saya tidak memiliki audio keluar), saya menemukan diri saya membuka preferensi suara dan memilih saluran yang tepat setiap kali. Apakah ada cara saya dapat membuat tombol toggle di panel atau menetapkan beberapa tombol pintas untuk beralih karena saya sering beralih.

: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

enter image description here


16
2018-05-10 18:46


asal


+1 Akan sangat luar biasa jika saya dapat beralih ke mode output tampilan HDMI yang benar dan mode suara dalam satu penekanan tombol. - Kit Menke
Apa yang lebih baik lagi adalah jika ketika mendeteksi saluran audio HDMI / Display Port ini akan mengubahnya secara otomatis. Ini untuk apa docking. Saya sepertinya ingat beberapa kode docking beberapa waktu yang lalu yang akan mengubah konfigurasi berdasarkan ID perangkat keras tertentu (MAC). Adakah yang tahu apa itu dipanggil lagi? - Elijah Lynn


Jawaban:


Dengan pulseaudio kita dapat memilih sink output dari baris perintah:

pacmd set-default-sink "SINKNAME"

Perintah ini dapat digunakan dalam peluncur, skrip atau bahkan ditugaskan ke pintasan keyboard untuk beralih cepat antara berbagai sink yang berbeda. Harap ganti "SINKNAME" dengan nama atau nomor wastafel yang Anda inginkan. Daftar sink yang dikenal dengan nomor dan nama yang terkait diberikan oleh perintah:

pacmd list-sinks

catatan: Mengubah sink output melalui antarmuka baris perintah hanya dapat berlaku jika streaming pembacaan perangkat target dinonaktifkan. Ini dapat dilakukan dengan mengedit garis korespondensi di /etc/pulse/default.pa untuk:

load-module module-stream-restore restore_device=false

Atau kita bisa menjalankan pulseaudio untuk secara bersamaan mengeluarkan suara ke perangkat audio internal, dan ke perangkat HDMI dengan menjalankan paprefs dengan opsi untuk menambahkan perangkat output virtual:

paprefs


10
2018-05-10 20:15



pacmd set-default-sink "alsa_output.pci-0000_00_1b.0.analog-stereo" dan pacmd set-default-sink "alsa_output.pci-0000_00_1b.0.hdmi-stereo" hanya berfungsi setelah memilih profil yang sesuai dalam Preferensi Suara. Jika saya memiliki set HDMI dan saya menjalankan perintah pacmd untuk analog stereo, saya mendapatkan eror Sink alsa_output.pci-0000_00_1b.0.analog-stereo does not exist. Tetapi jika saya secara manual memilih profil dari GUI Preferensi Suara dan menjalankan perintah yang sama, saya tidak mendapatkan kesalahan. Jadi itu tidak membantu untuk beralih. - iJeeves
@iJeeves: lihat edit untuk pembaruan. - Takkat
Masalah serupa. Jika saya menjalankan perintah itu secara visual akan mengubahnya di GUI tetapi suara tidak redirect. Saya harus secara manual mengaktifkannya di GUI agar berfungsi. Ada ide? - Elijah Lynn
@ElijahLynn: Anda mungkin juga harus memindahkan streaming: askubuntu.com/questions/71863/… - Takkat
@Takkat: Saya belum mencobanya tetapi tampaknya itu adalah masalah yang sebenarnya saya hadapi. Terima kasih banyak! - Elijah Lynn


Saya menemukan ini sangat menjengkelkan diri saya sendiri dan menulis naskah untuk beralih output:

#!/bin/bash

CURRENT_PROFILE=$(pacmd list-cards | grep "active profile" | cut -d ' ' -f 3-)

if [ "$CURRENT_PROFILE" = "<output:hdmi-stereo+input:analog-stereo>" ] ; then
        pacmd set-card-profile 0 "output:analog-stereo+input:analog-stereo"
else 
        pacmd set-card-profile 0 "output:hdmi-stereo+input:analog-stereo"        
fi

dan kemudian mengikat kunci yang tidak terpakai pada keyboard saya untuk menjalankannya (lihat Bagaimana cara mengikat perintah kustom ke pintasan keyboard?)


7
2018-03-26 18:22



Meskipun Anda belum masuk dalam 18 bulan hanya ingin memberi tahu Anda bahwa ini adalah jawaban IMO +1 terbaik - WinEunuuchs2Unix
Bagaimana saya bisa melakukan ini jika saya perlu beralih di antara dua kartu, bukan hanya dua profil dari satu kartu? - Oebele


Namun Script Sink Switcher Lain

diuji pada Ubuntu 16.04


Tetapi yang satu ini memungkinkan Anda mengganti hanya audio dari aplikasi yang Anda inginkan.

PEMAKAIAN: Fokus aplikasi yang ingin Anda ubah sink-nya dan jalankan skrip ini. Itu dia!!!

Skrip ini mendeteksi aplikasi yang fokus, menemukan semua audio yang diputar darinya, dan mengalihkannya ke sink yang tersedia berikutnya.

https://gist.github.com/madacol/1a0d8569166886d2d98f073f7f5c5fe3

Menjelaskan naskahnya

Kita perlu menemukan PID dari aplikasi pada fokus

Tetapi pertama kita membutuhkan xid

xprop -root _NET_ACTIVE_WINDOW 

Kemudian masukkan di sini $xid untuk mendapatkan pid aplikasi

xprop -id $xid _NET_WM_PID

Sekarang kita perlu menemukan sink-input yang terkait dengan PID itu

Pertama mari melinierkan output dari perintah pacmd list-sink-inputs untuk mencantumkan satu sink-input per baris, menunjukkan indeksnya, tenggelam, dan pid pada baris yang sama

pacmd list-sink-inputs | grep -E 'index:|sink:|process.id' | tr '\n' ' ' | tr -d '"' | sed -e 's/index:/\n/g' | tail -n +2

mari kita menganalisisnya selangkah demi selangkah:

grep -E 'index:|sink:|process.id hanya menyimpan baris yang berisi index:, sink: atau process.id

tr '\n' ' ' bergabung dengan semua lini

tr -d '"' menghapus semua " karakter. Diperlukan untuk mendapatkan pid tanpa tanda kutip

sed -e 's/index:/\n/g' menggantikan semua index: kejadian dengan karakter baris baru \n

tail -n +2 menghapus baris pertama karena kosong

Dan hasilnya seperti ini:

  180 sink: 0 <alsa_output.pci-0000_00_00.1.hdmi-stereo-extra1> application.process.id = 3521
  181 sink: 1 <alsa_output.pci-0000_00_01.0.analog-stereo> application.process.id = 2733
  182 sink: 0 <alsa_output.pci-0000_00_00.1.hdmi-stereo-extra1> application.process.id = 13752

Mari kita menganalisis satu baris untuk memahami apa artinya:

  # 182 sink: 0 <alsa_output.pci-0000_00_00.1.hdmi-stereo-extra1> application.process.id = 13752

182 adalah indeks masukan-tenggelam, 0 adalah indeks wastafel, dan 13752 pada akhirnya, adalah pid aplikasi milik

Kemudian kami melakukan iterasi melalui setiap baris

... | while IFS= read -r line || [ -n "$line" ]; do
  sink_input_pid=$(echo $line | awk '{print $NF}')

Dan akhirnya menyaring hanya pid input-sink yang cocok dengan pid aplikasi yang terfokus

  if [ $sink_input_pid = $app_pid ]; then

Mengekstrak data

Dengan awk kita bisa mendapatkan elemen yang kita butuhkan

sink_input_index=$(echo $sink_input | awk '{print $1}')
current_sink_index=$(echo $sink_input | awk '{print $3}')

Dapatkan jumlah sink, untuk mengetahui kapan rotasi sink harus dimulai dari 0.

sink_list_size=${#sink_list_array[@]}

Menemukan sink berikutnya, kita harus beralih melalui daftar sink, untuk mengetahui mana yang cocok current_sink_index dan untuk mengetahui indeks sink berikutnya.

i=0
for sink in "${sink_list_array[@]}"; do
  i=$((($i+1)%sink_list_size))  # i++ mod(#sinks)
  if [ $sink = $current_sink_index ]; then
    next_sink_index=${sink_list_array[i]}
    break
  fi
done

Dan akhirnya, kita memindahkan sink-input untuk dimainkan next_sink_index

pacmd move-sink-input $sink_input_index $next_sink_index

catatan:

Ketika mengkonfigurasi tombol pintas, saya tidak bisa membuatnya bekerja dengan manajer shortcut Ubuntu. Jadi saya harus menginstal compizconfig-settings-manager

sudo apt-get install compizconfig-settings-manager

2
2018-02-07 21:33



Beri +1 untuk jawaban pertama yang hebat sebagai pengguna baru. Karena pertanyaan aslinya adalah untuk Ubuntu 11.04 Anda harus menunjukkan versi apa yang diuji. - WinEunuuchs2Unix
@ WinEunuuchs2Unix Wow! Terima kasih :). Saya menambahkan versi Ubuntu di bawah judul. - Madacol


Jika Anda menggunakan Gnome Shell, bukan Unity, Anda dapat menginstal ekstensi di bawah ini. Anda kemudian akan dapat beralih dari short-cut volume di panel atas. https://extensions.gnome.org/extension/142/output-device-chooser-on-volume-menu/


1
2018-01-27 14:41





Karena hanya ada satu soundcard yang terlihat di layar, saya pikir keluaran dari soundcard ini harus diganti.

Sebagai contoh: Saya memiliki Notebook dengan satu soundcard terintegrasi, tetapi memiliki output digital (SPDIF) ketika dipasang.

Jadi yang ingin saya lakukan adalah mengganti output aktif atau "Profil" di pulseaudio.

Saya menemukan perintah yang melakukan hal itu:

pacmd set-card-profile 0 output:analog-stereo
pacmd set-card-profile 0 output:iec958-stereo+input:analog-stereo

Apa yang saya lakukan untuk mendapatkan nama yang benar untuk pengaturan output yang saya inginkan - di sini, keluaran digital, tetapi input analog (mikro) - adalah:

pacmd list | grep output

1
2017-09-22 21:02





Saya sudah berusaha mencari solusi untuk masalah ini juga. Pada Ubuntu 11.04 ini sepertinya tidak mungkin secara langsung, saya hanya menemukan panduan ini untuk menambahkan HDMI dan Analog sebagai output terpisah, jadi pacmd menunjukkan 3 sink sekarang. Maka dimungkinkan untuk beralih antara sink menggunakan perintah di atas. (Lihat juga)

Namun ternyata Ubuntu 11.11 akan mendapatkan PulseAudio dengan sistem pendeteksi jack. Menurut situs web di bawah, David Henningsson telah mengkodekan deteksi melalui udev sehingga audio pulsa secara otomatis dialihkan ke keluaran terakhir yang ditambahkan, termasuk beralih antara profil yang berbeda dari soundcard yang sama (seperti halnya dengan pengaturan Anda dan saya). (Lihat sini)

Jadi saya berharap ini akan berhasil, ketika saya mencoba versi final Jumat depan.


1
2017-10-09 18:17





Apakah ada cara saya dapat membuat tombol toggle di panel

Saya menulis sebuah applet indikator yang memungkinkan Anda mengganti output suara (lihat gambar layar).

https://github.com/lkettenb/sound-output-switcher

Screenshot: http://www.capslockblog.com/images/misc/Screenshot.png


0
2017-12-21 13:05



Selamat datang di Tanya Ubuntu! Sementara ini secara teoritis dapat menjawab pertanyaan itu, itu akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan berikan tautan sebagai referensi. - Warren Hill


Berdasarkan banyak jawaban sebelumnya, saya menulis skrip yang mengatur sink pemutaran bergantian antara yang tersedia.

Cara terbaik untuk menggunakannya adalah dengan membuat pintasan keyboard untuk menjalankannya, jadi setiap kali Anda menekan kombinasi tombol tersebut, audio dialihkan ke sink yang tersedia berikutnya.

Kode ini tersedia di sini: https://gist.github.com/germank/7fa2fb07d45a838bf890addadd8bea8c


0
2017-09-08 07:17





Dalam kasus saya, opsi analog di mana tidak ada dalam daftar. Instal pavucontrol: sudo apt install pavucontrol

Bisa memperbaiki masalah, dengan memulai aplikasi:

  1. Mulai aplikasi melalui terminal, dengan memasukkan: pavucontrol (memasukkan)
  2. Buka tab 'Konfigurasi'.
  3. Pilih profil output stereo Analoge di Intern Sound

enter image description here

Sekarang saya dapat di sini berbunyi dan memilih profil yang berbeda (di Linux Mint):

enter image description here


0
2017-07-10 16:11