วิธีรับระดับเสียงจากบรรทัดคำสั่ง?


15

ฉันมีแถบสถานะข้อความในตัวจัดการหน้าต่างแบบเรียงต่อกันและฉันใช้ tcl เพื่อป้อนข้อมูล ในขณะที่ฉันต้องการบรรทัดคำสั่งที่ส่งออกระดับเสียง 0% ถึง 100% ฉันใช้ Arch Linux


/var/lib/alsa/asound.stateดูเหมือนว่าคุณควรจะสามารถทำได้โดยการแยก
จอร์แดน

หมายเหตุ: ในอนาคตการพูดว่าคุณกำลังใช้ Arch ไม่เกี่ยวข้องจริงๆ สิ่งที่สำคัญคือระบบย่อยเสียงที่คุณใช้เช่น ALSA, OSS หรือ PulseAudio
strugee

1
แทนที่จะเพิ่ม "ปิด" ในชื่อของคุณคุณควรตอบคำถามของคุณเองและปล่อยให้มัน
jordanm

คำตอบ:


15

หนึ่งซับเพื่อแยกวิเคราะห์amixerเอาต์พุตสำหรับวอลุ่มในแถบสถานะ:

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

สิ่งที่ไม่[][]หมายถึง?
ประมาณ

4
@approximatenumber มันชุดคั่นสนามเป็นอย่างใดอย่างหนึ่งหรือ] [
jasonwryan

เย็น. ฉันไม่รู้ว่าคุณจะมี regex สำหรับF
mihai

คุณจะเก็บคำสั่งนี้ในตัวแปรอย่างไร
mike23

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

12

คุณสามารถใช้amixerการทำเช่นนี้

ตัวอย่าง

$ 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]

คุณสามารถเปลี่ยนและปิดเสียงได้เช่น:

ตั้งค่าเสียง 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]

ปิดเสียง / เปิดเสียง

$ 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]

คุณสามารถเงียบเอาท์พุทถ้าคุณไม่ต้องการที่จะเห็นมันด้วย--quietสวิตช์

$ amixer --quiet set Master 75%
$ 

6

ขวา

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

ซ้าย

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

เซิร์ฟเวอร์เสียง

หากคุณไม่ได้ใช้ pulseaudio เป็นค่าเริ่มต้นคุณสามารถระบุamixerเซิร์ฟเวอร์ที่จะใช้กับ-D pulse

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

สิ่งนี้ไม่ได้ผลสำหรับฉัน ... อาจารย์ด้วยเหตุผลบางอย่างไม่มี "ซ้าย" และ "ถูก" แม้จะมีช่องอื่น ๆ เช่น "ผู้พูด" ที่มี
Michael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.