pavucontrol에서 재생 장치를 만드는 방법은 무엇입니까?

pavucontrol에서 재생 장치를 만드는 방법은 무엇입니까?

첫째, Linux 오디오에 대한 지식이 부족하다는 점을 인정합니다. 크고 혼란스럽고 조금 무섭게 보입니다.

내가 원하는 것은 웹에 떠도는 다른 예에서 볼 수 있듯이 아마추어 라디오 프로그램의 오디오를 gqrx디지털 음성 디코더로 전송하는 것입니다.dsd

그러나 가상 사운드 장치를 만든 후 다음을 /dev/dsp/사용하십시오.

padsp -- dsd -i /dev/dsp -o /dev/dsp -fa -ma

열어보니 재생 장치 아래에 DSD가 표시되지 않습니다 pavucontrol(그러나 gqrx목록에는 표시됩니다). 다양한 방법을 시도했지만 dsd재생 장치 목록에 표시되지 않습니다. 이 단계는 출력을 듣기 위해 다른 오디오 수신기를 추가로 사용하는 데 필요합니다.

미리 감사드립니다...

답변1

Linux 오디오를 덜 무섭게 만들려면 Linux 오디오 기록에 대한 간략한 개요(자세한 내용은 Google 참조):

Linux에서 최초로 널리 사용된 사운드 시스템은개방형 사운드 시스템(OSS), 유사한 장비가 사용되었습니다 /dev/dsp. OSS는 이제 더 이상 사용되지 않지만 이를 사용하기 위한 오래된 프로그램이 여전히 있으므로 거의 모든 다른 오디오 시스템은 padspPulseaudio와 같은 아날로그 레이어를 제공합니다.

오늘날 리눅스에서 사용되는 기본 오디오 시스템은알자스. 이는 커널의 일부가 되었으며 하드웨어용 드라이버를 제공합니다. 장치는 /dev/snd/pcmC0D0p(card0, device0, play) 또는 (card1, device2, Capture)처럼 보이지만 콘텐츠를 그렇게 연결할 수 없기 때문에 /dev/snd/pcmC1D2c모든 사람이 장치 대신 라이브러리( )를 직접 사용합니다 . ALSA를 구성할 수 있지만 이 구성 파일은 사용자에게 친숙하지 않습니다.libalsa/dev/dsp/.asoundrc

오늘날 대부분의 데스크탑 시스템에는 Pulseaudio도 함께 제공됩니다. 이는 ALSA 위에서 실행되며 OSS뿐만 아니라 ALSA에 액세스하려는 프로그램(이라는 의사 ALSA 장치 사용 pulse)에도 호환성 레이어를 제공합니다. 보시다시피 명령줄에서 제어 할 수 있는 pavucontrolPulseaudio와 Pulseaudio도 있습니다 (왜 두 개가 있는지는 묻지 마세요...).pacmdpactl

귀하의 질문으로 돌아갑니다. pavucontrol실행 후 재생 탭과 녹화 탭에 표시되어야 하는 내용

padsp -- dsd -i /dev/dsp -o /dev/dsp -fa -ma

비슷한 것 같아요 OSS emulation[dsd]. 아마도 "OSS 에뮬레이션" 부분( padspOSS 에뮬레이션 때문에 존재함) 에 대해 혼란스러울 수도 있습니다 . 이 내용이 표시되지 않으면 위 명령을 실행한 후 발생할 수 있는 오류와 pactl list short clients명령 실행 시 출력을 포함하도록 질문을 편집하세요. 그런 다음 무엇이 잘못되었는지 디버그해 볼 수 있습니다.

Pulseaudio에서는 모든오디오 수신기(예: 사운드 카드의 재생 하드웨어)에도 관련 항목이 있습니다..monitor 오디오 소스. 두 번째 애플리케이션을 .monitor첫 번째 애플리케이션이 재생 중인 싱크 소스 에 연결하여 한 애플리케이션에서 다른 애플리케이션으로 오디오를 스트리밍할 수 있습니다. puvacontrol지금까지 읽은 튜토리얼에 설명된 대로 에서 이 작업을 수행할 수 있습니다 .

귀하의 경우 사운드 출력을 모니터링하고 싶으 gqrx므로 하드웨어 오디오 수신기를 사용할 수 있습니다. 너할 수 있다또한 연결된 소스를 사용하여 "더미" 오디오 싱크를 생성 .monitor하지만 오디오를 들을 수는 없습니다.

snd_aloopALSA에서만 루프백을 수행하는 다른(다소 복잡한) 방법입니다. 어쨌든 Pulseaudio를 실행하면,아니요그걸 써.

편집하다

다음과 같이 문제를 재현했습니다.이 블로그 항목dsd및 설정 방법에 관해서는 3개 외에 gqrx5개의 스트림("재생" 및 "녹음" 아래에 표시되는 것은 장치가 아닌 오디오 스트림임)을 얻는다는 점을 제외하고 말입니다 . 과거에 비슷한 문제가 있었던 것을 pavucontrol막연하게 기억하지만 padsp(스트림 하나만 생성해야 하는데 여러 스트림을 생성함) 추가 스트림을 무시하여 작동했습니다. 저도 잠깐 살펴보니 padsp.cI/O가 발생할 때만 스트림이 생성되는 것 같습니다. 아마도 스트림이 아직 재생되지 않는 이유일 것입니다. padsp블로그 게시물이 작성된 이후 상황이 변경되었을 수 있으며 그 과정에서 몇 가지 문제가 발생했을 수 있습니다.

따라서 "Records"에서 OSS emulation[dsd]스트림을 선택합니다(이것은입력하다, 기록하려는 내용 과 아무 관련이 없습니다. dsd재생 중인 .monitor수신기의 입력 에 연결하고 gqrx유효한 데이터를 공급합니다(여기에서는 예상되는 데이터가 무엇인지 모르기 때문에 그렇게 할 수 없습니다. 테스트할 수 없음) 재생 스트림이 나오는지 확인하세요.

하드웨어에서 dsd의 출력을 재생하려면 가상 수신기를 만드세요.

pacmd load-module module-null-sink sink_name=gqrx_to_dsd  sink_properties=device.description=GQRX-to-DSD

이 싱크를 의 출력으로 선택 gqrx하고 .monitor이 싱크의 소스를 의 입력으로 선택합니다 dsd. 그런 다음 하드웨어 오디오 수신기를 출력으로 선택합니다 dsd(재생 스트림이 있는 경우).

관련 정보