Saya ingin membaca level volume yang dapat saya atur
pactl set-sink-volume $SINK $VOLUME
Apakah ada cara mudah untuk melakukan itu? Semudah hipotesis
pactl get-sink-volume $SINK
?
(Apa yang saya coba lakukan? Saya menggunakan pactl untuk mengatur volume dan memungkinkan saya mengatur volume lebih tinggi dari 100% yang merupakan ide yang buruk (kualitas suara turun), jadi saya sedang berpikir tentang menulis skrip kecil yang akan tidak melebihi 100% .Baca keluar. Lebih dari ambang batas? Setel ke 100%. Di bawah ini? Tambahkan 1%. Jika ada cara lain untuk melakukan itu, bagus, katakan padaku! Solusi terbersih mungkin akan memberitahu pulsa untuk berhenti begitu saja 100%. Tapi pertanyaan aslinya tetap, pasti ada beberapa cara ..)
Saya menggunakan Debian jika itu membuat perbedaan.
command-line
pulseaudio
Higemaru
sumber
sumber
pactl list sinks
memberi Anda volume, tetapi tidak dalam format mudah yang bagus seperti set-sink-volume.Jawaban:
Itu yang saya miliki. Itu tidak rapi, tapi cukup untuk saya gunakan. Saya tidak dapat menemukan cara untuk melakukannya. Orang
pactl
sepertinya tidak memiliki cara mendapatkan daftar untuk satu wastafel saja, tetapi mereka dicetak dalam urutan menaik. Sehingga memilih baris ke-n menggunakantail
danhead
. Perhatikan bahwa garis volume mungkin memiliki volume yang terpisah untuk saluran kanan dan kiri dansed
penggantinya hanya mengambil yang pertama, karena saya membutuhkannya.Sebagai catatan, saya menggunakan
pactl list sinks short
untuk mendapatkan nomor wastafel aktif saya:EDIT 2017-10-05: Saya harus mengubah sedikit itu karena perubahan di pulseaudio. Inilah yang saya miliki sekarang:
Saya telah
MOD
menetapkan ke +10 atau -10 dan saya melakukan beberapa pemeriksaan batas dan akhirnya:sumber
pactl list sinks short | grep RUNNING | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,'
- Addedsinks
betweenpactl list
andshort
LC_ALL=C pactl list sinks | grep
karena teks "Volume:" dapat diterjemahkan ke dalam bahasa pengguna.volume=$(pactl list sinks | grep Volume | head -n1 | awk '{print $5}')
Jika Anda tidak memiliki batasan untuk menggunakan program lain, ada
pamixer
.Anda bisa mendapatkan volume dengan:
sumber
pulsemixer
paket. Itu terlihat hampir sama.Perhatikan bahwa jawaban Tommi Kyntola bergantung pada wastafel yang akan digunakan sehingga Anda benar-benar bisa mendapatkan nomor wastafel.
Perhatikan juga bahwa itu bergantung pada indeks wastafel yang dinamai sama dengan indeks yang dihitung . Katakanlah, misalnya, kita memiliki 3 wastafel 1, 2 dan 3 dan 3 itu adalah wastafel pilihan kita, lalu kita putuskan sambungan nomor 2, meninggalkan kita dengan 1 dan 3. Sekarang Anda tidak dapat menghitung untuk tenggelam 3 dengan solusi Tommi Kyntola karena
pactl list sinks | grep "^[[:space:]]Volume:"
hanya akan menghasilkan 2 bidang Volume, jadi perpipaan ke kepala / ekor untuk mendapatkan$SINK + 1
garis th tidak akan berfungsi. (Saya telah mengalami irl ini, saya tidak hanya melakukan nitpicking)Solusi saya bekerja berdasarkan asumsi bahwa pacmd akan selalu daftar tenggelam dalam urutan tertentu. Jika Anda menginginkan solusi yang lebih andal, Anda perlu mengurai output.
Catatan: Saya tidak tahu apakah bidang volume berbeda, milik saya terlihat seperti ini (dari
pacmd list-sinks
):Saya juga hanya mendapatkan volume saluran pertama (kiri-depan) dalam format persentase (yaitu, bidang 5), saluran Anda mungkin ada di level yang berbeda.
EDIT:
Setelah dipikir-pikir, Anda mungkin benar-benar ingin mendapatkan nama bak cuci default dari
pacmd stat
untuk solusi yang tidak berbelit-belit:sumber
pactl set-sink-volume $(getdefaultsinkname) "$1"
untuk mendapatkan volume, saya mencoba yang ini:
sumber
Varian multibahasa
Diuji pada pactl 5.0
sumber
Karena saya belum dapat berkomentar (mendaftar secara khusus untuk meningkatkan jawaban @ jgr), dalam kasus bahwa bak cuci default Anda adalah sebuah plugin (seperti jumlah plugin ladspa), solusi editnya akan mengembalikan XX%, (perhatikan koma setelahnya ), jadi ini bekerja sedikit lebih baik dari itu. Maaf, awk-fu saya sangat mendasar, saya yakin ada cara yang lebih baik untuk melakukan ini.
Solusi yang dimodifikasi juga menghilangkan '%' karena saya tidak melihat gunanya menyimpannya, dan jika kita mengembalikan hanya angka kita dapat menggunakannya dalam matematika. Juga memperbaiki kasus setvol, yang membutuhkan instruksi khusus dalam kasus saya.
sumber
Anda dapat menggunakan
amixer
untuk membaca volume audio dengan menggunakan opsi mixer seperti ini.Sekarang kita dapat menguraikannya menggunakan
grep
ataused
atauperl
.sumber