Làm thế nào để có được mức âm lượng từ dòng lệnh?


15

Tôi có một thanh trạng thái văn bản trên trình quản lý cửa sổ ốp lát và tôi đang sử dụng tcl để cung cấp thông tin cho nó. Hiện tại tôi cần một dòng lệnh xuất mức âm lượng 0% đến 100%. Tôi đang sử dụng Arch Linux.


Có vẻ như bạn sẽ có thể làm điều đó bằng cách phân tích cú pháp /var/lib/alsa/asound.state.
jordanm

Lưu ý: trong tương lai, nói rằng bạn đang sử dụng Arch không thực sự phù hợp. Điều thực sự quan trọng là hệ thống con âm thanh nào bạn đang sử dụng, ví dụ ALSA, OSS hoặc PulseAudio.
strugee

1
Thay vì thêm "đóng" vào tiêu đề của bạn, bạn chỉ nên trả lời câu hỏi của riêng mình và để lại nó
jordanm

Câu trả lời:


15

Một amixerđầu ra để phân tích cú pháp cho âm lượng trong thanh trạng thái:

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)

[][]nghĩa là gì
xấp xỉ

4
@approimumatenumber Nó đặt dấu phân cách trường là ]hoặc [.
jasonwryan

Mát mẻ. Tôi không biết bạn có thể có một regex choF
mihai

Làm thế nào bạn sẽ lưu trữ lệnh này trong một biến?
mike23

@ mike23vol=$(awk '/%/ {gsub(/[\[\]]/,""); print $4}' <(amixer sget Master))
jasonwryan

12

Bạn có thể sử dụng amixerđể làm điều này.

Ví dụ

$ amixer get Master
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [off]
  Front Right: Playback 65536 [100%] [off]

Bạn cũng có thể thay đổi nó và tắt tiếng như vậy:

đặt âm lượng 75%

$ amixer set Master 75%
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 49152 [75%] [on]
  Front Right: Playback 49152 [75%] [on]

tắt tiếng / bật tiếng

$ amixer set Master toggle
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [on]
  Front Right: Playback 65536 [100%] [on]

Bạn có thể tắt đầu ra nếu bạn không muốn thấy bất kỳ đầu ra nào bằng công --quiettắc.

$ amixer --quiet set Master 75%
$ 

6

Đúng

amixer sget Master | grep 'Right:' | awk -F'[][]' '{ print $2 }'
85%

Trái

amixer sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

Máy chủ âm thanh

Nếu bạn không sử dụng pulseaudio làm mặc định, bạn có thể chỉ định amixersử dụng máy chủ nào với-D pulse

amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

Điều này không phù hợp với tôi ... Chủ nhân vì một số lý do không có "Trái" và "Phải" mặc dù các kênh khác như "Người nói" có nó.
Michael
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.