Saya memiliki satu set headphone nirkabel yang bagus yang saya gunakan dari waktu ke waktu, selain speaker dan mikrofon biasa.
Saya ingin menulis skrip untuk beralih antara satu sumber input dan output dan yang lain, pada dasarnya beralih antara headphone dan speaker saya + mikrofon.
Saya ingin mengubah antara ini:
...dan ini:
Apakah ada cara bagi saya untuk skrip transfer antara dua input dan output? Pada dasarnya saya mencari sesuatu seperti ini:
CURRENT_INPUT="$(get-current-input-name)"
CURRENT_OUTPUT="$(get-current-output-name)"
if [ "$CURRENT_INPUT" == "Vengeance 2000" ]; then
set-current-input "HD Pro Webcam C920"
else
set-current-input "Vengeance 2000"
fi
if ["$CURRENT_OUTPUT" == "Vengeance 2000" ]; then
set-current-output "Built-in Audio"
else
set-current-output "Vengeance 2000"
fi
Apakah ada cara untuk skrip ini?
audio
alsa
pulseaudio
Naftuli Kay
sumber
sumber
man pactl
opsi-opsi baris perintah PulseAudio.Jawaban:
Seperti yang ditunjukkan oleh @ Teresa-e-Junior
pactl
adalah alat untuk digunakan:Pertama-tama kita mungkin ingin mendapatkan ID sink PA kita. Di sistem saya inilah yang saya dapatkan:
Sink 1 saat ini adalah wastafel default saya.
Tapi sekarang saya ingin semua streaming saya saat ini dan masa depan diputar melalui HDMI (yaitu wastafel 0).
Ada perintah untuk mengatur bak cuci default untuk PulseAudio, tetapi sepertinya tidak berpengaruh pada PC saya:
Alih-alih, aliran baru tampaknya terhubung ke wastafel yang alirannya paling baru dipindahkan.
Jadi mari kita beri tahu pactl untuk memindahkan semua stream yang sedang diputar ke sink
0
. Pertama-tama kita harus mendaftar mereka:Oke, kita punya dua aliran (ID 290 dan 295) yang keduanya terhubung ke wastafel
1
.Mari kita gerakkan mereka untuk tenggelam
0
:Jadi, seharusnya begitu. Sekarang kita hanya perlu membuat skrip yang berfungsi untuk kita:
Anda bisa menyebutnya dengan ID wastafel atau nama wastafel sebagai parameter (mis. Salah satunya
0
atau sejenisnyaalsa_output.pci-0000_01_00.1.hdmi-surround
).Sekarang Anda dapat melampirkan skrip ini ke acara udev atau pintasan kunci.
sumber
0 sink input(s) available.
? Tapi flash player yang menyebalkan itu masih memutar audio? Dan saya melihat flash player diclient(s) logged in
bagianpacmd list
$ pacmd set-default-sink INDEX
masih diperlukan untuk skrip saya jika tidak perintah keyboard untuk mengubah volume terus menggunakan sumber wastafel yang lama.Perintah berikut digunakan untuk memanipulasi server suara PulseAudio:
Berikut ini beberapa contoh bagaimana fungsinya.
pacmd list-sinks
:: daftar nama atau nomor indeks kemungkinan tenggelampacmd set-default-sink [sinkname]
:: set sink keluaran defaultpacmd set-default-source [sourcename]
:: mengatur input defaultpacmd set-sink-volume [index] [volume]
:: mengatur volume wastafelpacmd set-source-volume index volume
:: rentang kendali volume 0 - 65536 (semakin rendah angkanya semakin rendah)Ini hanya beberapa yang saya tarik dari halaman wiki & man. Referensi ini untuk informasi lebih rinci. Atau Anda dapat melihat perintah
--help
atauman
halaman.Ada juga alat baris perintah yang sudah ada di luar sana yang melayani tujuan ini. Nama itu adalah ponymix . Ini adalah mixer baris perintah untuk PulseAudio. Tautan yang disediakan adalah ke proyek github. Ini dikembangkan oleh teman dan sesama Pengguna / Pengembang Arch Linux Tepercaya. Jika Anda tidak menjalankan Arch, Anda bisa mengkompilasinya dari sumber menggunakan
make
dansudo make install
.sumber
Di laptop saya berjalan Fedora 20, HDMI output yang tidak terdaftar sebagai wastafel dalam profil default, tetapi sebagai yang berbeda profil itu sendiri.
Saya hanya punya 1 wastafel seperti ini, musik yang bagus diputar di speaker laptop saya:
Jika saya jalankan
pactl set-card-profile 0 output:hdmi-stereo
maka musik yang bagus diputar melalui HDMI. Saya mendapat:Untuk kembali ke default saya jalankan
pactl set-card-profile 0 output:analog-stereo+input:analog-stereo
. Either way default ada lagi jika saya reboot.Daftar profil untuk kartu saya ada di suatu tempat di
pactl list cards
output.sumber
set-card-profile
tidak disebutkan sebelumnya, dan itulah info terpenting tentang jawaban ini.Memperluas jawaban yang diterima oleh @cinelli, saya telah membuat skrip itu
Ubah sesuai kebutuhan!
sumber