이 문제를 테스트하고 해결하기 위해 오디오 설정이나 프로필을 변경하지 않고 Fedora 33을 새로 설치했습니다.
기본적으로 오디오는 심하게 왜곡됩니다(예재생 중인 항목을 알 수 있지만 일반적으로 사용할 수 없습니다.
그런데 설치하고 jackd
실행해보면 아래와 같이 설정이 되어있습니다.
jackd -r -dalsa -dhw:0 -r48000 -p256 -n2
그런 다음 오디오 파일 mpv
(JACK을 사용할 수 있음)을 사용해 보면 소리가 선명하고 깨끗합니다.예상대로 작동:
mpv --ao=jack test.flac
참고: 작품도 jackd
있습니다 -r44100
.
물론 이것은 만족스러운 보편적 접근 방식은 아닙니다. 모든 소프트웨어가 JACK만 사용할 수 있는 것은 아니므로 Firefox에서는 작동하지 않습니다.
JACK이 문제를 올바르게 처리하므로 펄스 또는 alsa(자동) 설정이 문제를 일으키는 것 같습니다. 아니면 다른 것일까요?
간단히 말해서:ALSA 구성(또는 펄스 오디오)을 사용하여 JACK이 수행하는 작업을 어떻게 복제할 수 있습니까? ALSA를 통한 솔루션은 다음과 같습니다.첫번째 선택이 답변을 유효하게 만드세요맥박 없음게다가. 물론, 이 문제를 일으키는 것이 펄스아디오일지도 모르겠습니다.
추가 정보:
- 출력
aplay -l
:
**** List of PLAYBACK Hardware Devices ****
card 0: Studio [Audiofuse Studio], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC1220 Analog [ALC1220 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 1: ALC1220 Digital [ALC1220 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
- 출력
jackd -r -dalsa -dhw:0 -r48000 -p256 -n2
:
jackdmp 1.9.14
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2016 Grame.
Copyright 2016-2019 Filipe Coelho.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
no message buffer overruns
no message buffer overruns
no message buffer overruns
JACK server starting in non-realtime mode
self-connect-mode is "Don't restrict self connect requests"
audio_reservation_init
Acquire audio card Audio0
creating alsa driver ... hw:0|hw:0|256|2|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 256 frames (5.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback
- 출력
aplay --dump-hw-params -D hw:Studio -t raw /dev/zero
:
Playing raw data '/dev/zero' : Unsigned 8 bit, Rate 8000 Hz, Mono
HW Params of device "hw:Studio":
--------------------
ACCESS: MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT: S32_LE
SUBFORMAT: STD
SAMPLE_BITS: 32
FRAME_BITS: [320 576]
CHANNELS: [10 18]
RATE: [44100 192000]
PERIOD_TIME: [125 297211)
PERIOD_SIZE: [6 13107]
PERIOD_BYTES: [240 524288]
PERIODS: [2 1024]
BUFFER_TIME: (62 594422)
BUFFER_SIZE: [12 26214]
BUFFER_BYTES: [480 1048576]
TICK_TIME: ALL
--------------------
aplay: set_params:1343: Sample format non available
Available formats:
- S32_LE
- 출력
cat /proc/asound/Studio/stream0
("재생"만 해당):
Playback:
Status: Stop
Interface 1
Altset 1
Format: S32_LE
Channels: 18
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Interface 1
Altset 2
Format: S32_LE
Channels: 18
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Interface 1
Altset 3
Format: S32_LE
Channels: 10
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Channel map: FL FR FC LFE RL RR FLC FRC RC SL
답변1
알겠습니다. sox를 사용하여 직접 파일 변환을 시도해 보았습니다. 그러면 다음과 같은 오류가 발생합니다. WAVE 재생 중 'CONVERTED-test.wav': 서명된 32비트 Little Endian, 속도 44100Hz, 스테레오 재생: set_params: 1349: 채널 수를 사용할 수 없습니다. 채널 18과 sox 명령을 사용하면 마침내 파일이 정확하고 명확하게 재생됩니다! 참고: 채널 10에서 sox를 사용하여 파일을 변환하면 파일이 aplay에서도 재생되지만 이 경우 파일이 다시 왜곡됩니다. 채널에 다른 번호가 있으면 채널 수를 사용할 수 없다는 오류가 발생합니다.
따라서 10채널 인터페이스가 드라이버나 다른 곳에서 버그가 있는 것처럼 보이며 Pulseaudio가 18채널 인터페이스를 사용하도록 설득해야 합니다.
보고 있다모듈 alsa 수신기, ALSA 장치에 넣을 수 있습니다.
이는 귀하가 필요하다는 것을 의미할 수 있습니다 ~/.asoundrc
.
채널 수를 구성할 수 있습니다.하드웨어 플러그인, 하지만 저는 이 작업을 직접 해본 적이 없으며 이러한 채널 선택 기능이 있는 하드웨어도 없습니다.
따라서 다양한 구성 파일을 사용하여 몇 가지 실험이 필요할 것 같습니다. 이 작업은 원격으로 수행하기 어려우며 단계별 지침을 제공해드릴 수 없습니다.
또 다른 옵션은 ALSA 추적기에 버그 보고서를 제출하는 것입니다. 드라이버에서 문제를 발견하거나(일반 USB 드라이버인 경우 특별한 방법이 필요할 수 있음) 구성 파일 제안을 제공할 수 있습니다.
ALSA 버그 추적 설명여기.