임베디드 시스템에서는 하나의 응용 프로그램만 사운드 카드를 동시에 사용할 수 있다는 것을 발견했습니다. 제가 아는 한, 이 문제를 해결하기 위해 ALSA는 dmix
사용자 공간에서 믹싱을 수행하여 여러 응용 프로그램이 사운드 카드를 공유할 수 있도록 하는 플러그인을 제공합니다.
를 사용하는 방법을 알아내려고 노력하는 동안 dmix
문제가 발생했습니다. 오디오 파일(스테레오, 16비트, 44.1KHz)을 재생할 때 오디오가 자신과 겹치는 것처럼 이상한 에코 효과가 나타나며 재생 시간이 지날수록 에코 수가 눈덩이처럼 늘어납니다. (재생 후 이미 10초가 지나면 스피커가 영구적으로 손상될까 봐 멈춰야 할 정도로 소리가 "강화"됩니다.)
내 생각에는 오디오의 첫 번째 초만 정상적으로 재생되고, 두 번째 초부터 이상한 현상이 시작됩니다. 버퍼링 설정을 조정하려고 했지만 aplay
소용이 없었습니다. 효과는 버퍼링과 관련이 없습니다.
이것은 작동합니다:
aplay /mnt/annie-honestly.wav
그러나 이것은 이상한 에코 효과를 표시합니다.
aplay -Dplug:dmix /mnt/annie-honestly.wav
문제를 Google에 검색해 보았지만 효과/문제를 호출하는 방법조차 잘 모르겠고 다른 ALSA 문제의 홍수 속에서 아무것도 발견하지 못했습니다.
PS Linux v3.18.24, ALSA-lib/-utils v1.0.29. 하드웨어: SGTL5000 사운드 칩이 포함된 FreeScale i.MX35(48KHz 모드에서 사용됨)