내 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
그리고
사운드 프로필
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 }}
지금와마법: 여러(Stereo VG 2채널) 스트림을 하나(Stereo 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"}
더 나아가인용하다.