터미널의 오디오 출력 변경

터미널의 오디오 출력 변경

alsamixerXonar DGX 카드가 있고 Analog Output옵션으로 이동하여 및 Stereo Headphones사이를 전환하여 오디오 출력을 변경할 수 있습니다 Stereo Headphones FP. 명령줄을 사용하여 동일한 작업을 어떻게 수행할 수 있습니까?

수신기와 이를 사용하여 전환하는 방법에 대한 정보를 찾아봤지만 pacmd, 제가 이해한 바에 따르면 두 출력 모두 동일한 수신기, 즉 Xonar 카드 내에 있는 것으로 나타났습니다.

답변1

amixer, pamd또는 와 같은 다양한 도구를 사용하여 이 작업을 수행할 수 있다고 생각합니다 pactl.

노트:당신의 가정은 내가 사물을 이해하는 방식이기도 합니다. 수신기는 실제 사운드 카드(출력)와 동일하며 해당 출력을 포트라고 합니다.

이 가이드의 실제 정의는 다음과 같습니다.PulseAudio의 기본 원리:

싱크대

수신기는 출력 장치입니다. 샘플을 소비하는 활성 유닛입니다.

싱크는 일반적으로 자체 이벤트 루프가 있는 스레드를 실행하고 연결된 싱크 입력에서 샘플 청크를 살펴본 다음 이를 혼합합니다. 또한 시계를 구현하고 지연을 유지합니다. 나머지 세계에서는 일반적으로 메시지를 사용하여 수신자와 통신합니다.

일반적인 수신기는 사운드 카드의 라인 출력에 연결된 헤드셋이나 Bluetooth 헤드셋과 같은 출력 사운드 장치를 나타냅니다. PulseAudio는 감지된 각 출력 장치에 대한 수신기를 자동으로 생성합니다.

사용 방법을 보여주는 예는 다음과 같습니다 pactl.

$ pactl list sinks |& grep -E "Sink|Ports|analog-ou"
Sink #0
    Ports:
        analog-output-lineout: Line Out (priority: 9900, not available)
        analog-output-headphones: Headphones (priority: 9000, not available)
    Active Port: analog-output-lineout

Active Port:위에서 현재 사운드 카드 라인 출력을 볼 수 있습니다 . 헤드폰으로 바꾸자.

$ pactl set-sink-port 0 analog-output-headphones

다시 확인해 보면:

$ pactl list sinks |& grep -E "Sink|Ports|analog-ou"
X11 connection rejected because of wrong authentication.
Sink #0
    Ports:
        analog-output-lineout: Line Out (priority: 9900, not available)
        analog-output-headphones: Headphones (priority: 9000, not available)
    Active Port: analog-output-headphones

에서 man pactl:

   set-sink-port SINK PORT
          Set the specified sink (identified by its symbolic name or
          numerical index) to the specified port (identified by its symbolic 
          name).

오디오 장치가 사라지면 어떻게 되나요?

드물지만 오디오 출력 장치가 장치 목록에서 이상하게 사라지는 것을 발견했습니다. 이런 일이 발생하면 Pulse Audio에 모듈을 다시 로드하도록 지시하여 쉽게 문제를 해결할 수 있습니다.

$ pactl load-module module-detect

인용하다

답변2

pacmd컴퓨터 스피커의 사운드를 HDMI로 자동 전환한 적이 있습니다.

if grep '^connected$' /sys/class/drm/card0/card0-HDMI*/status ;then             
  sleep 2
  pacmd set-card-profile 0 output:hdmi-stereo
else
  sleep 2
  pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
fi

활성 사운드 프로필을 얻으려면:

pacmd list |grep 'active profile'
        active profile: <output:analog-stereo+input:analog-stereo>

지원되는 사용 가능한 모든 출력 사운드 프로필을 나열하려면:

pacmd list |grep 'output:'

답변3

여기에 있는 다른 모든 답변은 내 문제를 해결하지 못했습니다.구성의 필요한 부분을 변경하거나 활성 흐름을 이동하지 마십시오. 이 Q&A는 꽤 복잡한 답변을 제공합니다.. 다만 오늘(2022년 7월 15일 기준)은 참고해주세요.우분투22.04), 이것은많은설명보다 쉬움slm의 답변또는기타 관련 아쿠분투 Q/A.

특히답은 거기에 있다여기에 대한 답변도 생각해 보겠습니다.


그냥 사용할 수 있습니다

  • pactl list short sinks그리고
  • pactl list short sources

사용 가능한 싱크 및 소스 목록 가져오기

(에서그 대답). 나중에 전환할 수 있습니다.

pactl set-default-sink '<the name of the sink from the list>'

이것언급된 답변두 개의 서로 다른 장치 간을 전환/전환하기 위한 스크립트도 제공됩니다.


지속 가능한 토지 관리 언급amixer" , 또는 pamd, 또는 " 과 같은 일부 도구 pactl. 이것들은 모두 다른 답변에서 찾을 수 있습니다. 다음은 사용에 대한 몇 가지 참고 자료입니다.

답변4

이 작업을 수행하는 데 사용할 수 있습니다 amixer.

amixer -c 0 cset name='Analog Output Playback Enum' 0

여기서 0은 -c 0카드 번호를 나타냅니다. 마지막 매개변수는 다음과 같습니다.

0 - 'Stereo Headphones'
1 - 'Stereo Headphones FP'
2 - 'Multichannel'

관련 정보