또한 스피커 사운드를 HDMI로 복제합니다.

또한 스피커 사운드를 HDMI로 복제합니다.

내 Linux 컴퓨터에서 오디오를 설정하는 데 도움이나 조언을 구하고 있습니다.

스피커에서 나오는 오디오를 hdmi 출력으로 복제하고 싶습니다.

내가 가지고 있는 설정을 확인하세요.

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: Generic Digital [Generic Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 1: ALC662 rev3 Digital [ALC662 rev3 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
hdmi:CARD=HDMI,DEV=0
    HDA ATI HDMI, Generic Digital
    HDMI Audio Output
sysdefault:CARD=Generic
    HD-Audio Generic, ALC662 rev3 Analog
    Default Audio Device
front:CARD=Generic,DEV=0
    HD-Audio Generic, ALC662 rev3 Analog
    Front speakers
surround21:CARD=Generic,DEV=0
    HD-Audio Generic, ALC662 rev3 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Generic,DEV=0
    HD-Audio Generic, ALC662 rev3 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Generic,DEV=0
    HD-Audio Generic, ALC662 rev3 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Generic,DEV=0
    HD-Audio Generic, ALC662 rev3 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Generic,DEV=0
    HD-Audio Generic, ALC662 rev3 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Generic,DEV=0
    HD-Audio Generic, ALC662 rev3 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Generic,DEV=0
    HD-Audio Generic, ALC662 rev3 Digital
    IEC958 (S/PDIF) Digital Audio Output

그리고

asound.conf

pcm.!default{
 type plug
 slave.pcm "speakerphat"
}

ctl.!default {
 type hw card 1
}

pcm.speakerphat {
  type softvol
  slave.pcm "plughw:1"
  control.name "Master"
  control.card 1
}

스피커에 대해 사운드가 활성화되었습니다.

amixer -q sset 'Master' unmute
amixer -q sset 'IEC958' unmute

답변1

이 답변은 alsa 전용 사운드 시스템의 맥락에서 가능한 작업 답변으로 서 있습니다.
이후의 모든 코드 부분은 연결되어 기존 asound.conf 정의를 대체해야 합니다.
이 모든 것은 계단식 정의를 통해 훨씬 더 짧아질 수 있습니다. 그러나, 그마법이해하기가 더 어려울 것이고 디버깅도 훨씬 더 어려울 것입니다… ;-)


리샘플링이 필요한 경우 사용할 속도 변환기 정의를 시작하겠습니다(필요한 경우 dmix 리샘플링).

defaults.pcm.rate_converter "speexrate_best"

그런 다음 주로 장치에 대한 별칭을 정의합니다.비차단여러 응용 프로그램이 관련 장치를 동시에 열 수 있도록 허용합니다.

pcm.ALC662{
        type hw
        card Generic
        device 1
        subdevice 0
        nonblock true}
ctl.ALC662{
        type hw
        card Generic}
pcm.ATI{
        type hw
        card HDMI
        device 0
        subdevice 0
        nonblock true}
ctl.ATI{
        type hw
        card HDMI}

이제 진행해보자디믹스플러그인 정의(여러 사운드 소스의 믹싱 및 필요한 경우 리샘플링 가능) 각 사운드 출력 장치마다 하나씩.
참고하세요ipc_키(공유 메모리 식별자). 고유 번호를 선택하세요. (첫 번째 실행 확인 sudo ipcs -ma)
또한 필요에 따라 여전히 문서화되어 있으며 이제 내 시스템에서 ipc_key를 지정하는 것이 쓸모가 없다는 것을 깨달았습니다. 아마도 내 등 뒤에서 sysV와 같은 ipcs 사용을 중단한 일부 업그레이드가 있을 것입니다...?
또한 자유롭게 적응해 보세요.기간_크기&버퍼 크기대기 시간 요구 사항 및 시스템 기능에 따라…

pcm.analog {
    type dmix
    ipc_key 219345
    slave{
        pcm ALC662
        format S32_LE
        period_size 1024
        buffer_size 4096 }}

pcm.hdmi {
    type dmix
    ipc_key 219346
    slave{
        pcm ATI
        format S32_LE
        period_size 1024
        buffer_size 4096 }}

이제 온다마법: 여러(스테레오 vg 2 채널) 스트림을 하나(스테레오 vg 2 채널)로 결합합니다.다중플러그인 :

pcm.analogHDMI {
    type multi
    slaves.a.pcm "analog"
    slaves.a.channels 2
    slaves.b.pcm "hdmi"
    slaves.b.channels 2

    bindings.0.slave a
    bindings.0.channel 0
    bindings.1.slave a
    bindings.1.channel 1
    bindings.2.slave b
    bindings.2.channel 0
    bindings.3.slave b
    bindings.3.channel 1}

그게 다야? 흠 음… 아직은 아닙니다.

결과 pcm은 인터리브 형식이 아니라 "복합" 형식이라는 점에 유의하세요. 따라서 인터리브(또는 비인터리브) 형식만 처리할 수 있는 응용 프로그램에서는 액세스할 수 없습니다. 그러한 경우에는 이 PCM을 경로 또는 플러그 플러그인으로 래핑하십시오.

윌코, 가자노선채널(소스.대상 볼륨):

pcm.2in1 {
    type route
    slave.pcm "analogHDMI"   
    ttable.0.0 1
    ttable.1.1 1
    ttable.0.2 1
    ttable.1.3 1}

물론, 이것이 기본 alsa 출력이 되도록 하려면 다음을 추가해야 합니다.

pcm.!default {
    type plug
    slave.pcm "2in1"}

더 나아가참조.

관련 정보