Эта проблема возникла у меня, когда я писал программу на c ++, поэтому я создал минимальный экземпляр кода, чтобы лучше разобраться в проблеме:
#include <portaudio.h>
#include <iostream>
int main()
{
Pa_Initialize();
int devices = Pa_GetDeviceCount();
std::cout << devices << std::endl;
for (int i = 0; i != devices; ++i)
{
auto * info = Pa_GetDeviceInfo(i);
std::cout << info->name << std::endl;
}
Pa_Terminate();
}
Так что этот код должен печатать устройства, которые у меня есть для звукая протестировал этот код на двух Linux-компьютерах с Ubuntu 16 и Ubuntu 18.10 и с некоторыми настройками, которые кажутся нерациональными для изменения результата (я объясню позже), результаты были очень абсурдными.Сначала я запустил свое приложение на Ubuntu 16, и оно обнаружило множество устройств, включая sysdefault (который был полезным).Затем я запустил то же самое приложение на Ubuntu 18, и оно не нашло sysdefault, я проверил с помощью команд aplay -L
и arecord -L
, что Alsa распознает sysdefault, поэтому я подумал, что это проблема pulseaudio.Я скачал pavucontrol и сделал несколько изменений без удачи.Наконец, вот еще одна иррациональная вещь: я попытался снова использовать свое приложение на Ubuntu 16 после загрузки и настройки pavucontrol, и это не сработало, более того, когда я удалил pavucontrol на Ubuntu 16, это сработало, но когда я сделал то же самое на Ubuntu 18, этоне сделал!Стоит упомянуть, что мой ubuntu 16 - это старая система, в которую я установил много библиотек cpp, и за последние годы я сделал много изменений, а с другой стороны, мой ubuntu 18 был отформатированным ноутбуком, на котором почти ничего не установлено.в теме.Здесь я добавляю вывод консоли для лучшего понимания проблемы:
$aplay -L
>
> default
> Playback/recording through the PulseAudio sound server null
> Discard all samples (playback) or generate zero samples (capture) pulse
> PulseAudio Sound Server hdmi:CARD=HDMI,DEV=0
> HDA Intel HDMI, HDMI 0
> HDMI Audio Output hdmi:CARD=HDMI,DEV=1
> HDA Intel HDMI, HDMI 1
> HDMI Audio Output hdmi:CARD=HDMI,DEV=2
> HDA Intel HDMI, HDMI 2
> HDMI Audio Output dmix:CARD=HDMI,DEV=3
> HDA Intel HDMI, HDMI 0
> Direct sample mixing device dmix:CARD=HDMI,DEV=7
> HDA Intel HDMI, HDMI 1
> Direct sample mixing device dmix:CARD=HDMI,DEV=8
> HDA Intel HDMI, HDMI 2
> Direct sample mixing device dsnoop:CARD=HDMI,DEV=3
> HDA Intel HDMI, HDMI 0
> Direct sample snooping device dsnoop:CARD=HDMI,DEV=7
> HDA Intel HDMI, HDMI 1
> Direct sample snooping device dsnoop:CARD=HDMI,DEV=8
> HDA Intel HDMI, HDMI 2
> Direct sample snooping device hw:CARD=HDMI,DEV=3
> HDA Intel HDMI, HDMI 0
> Direct hardware device without any conversions hw:CARD=HDMI,DEV=7
> HDA Intel HDMI, HDMI 1
> Direct hardware device without any conversions hw:CARD=HDMI,DEV=8
> HDA Intel HDMI, HDMI 2
> Direct hardware device without any conversions plughw:CARD=HDMI,DEV=3
> HDA Intel HDMI, HDMI 0
> Hardware device with all software conversions plughw:CARD=HDMI,DEV=7
> HDA Intel HDMI, HDMI 1
> Hardware device with all software conversions plughw:CARD=HDMI,DEV=8
> HDA Intel HDMI, HDMI 2
> Hardware device with all software conversions sysdefault:CARD=PCH
> HDA Intel PCH, ALC3234 Analog
> Default Audio Device front:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> Front speakers surround21:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> 4.0 Surround output to Front and Rear speakers surround41:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers dmix:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> Direct sample mixing device dsnoop:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> Direct sample snooping device hw:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> Direct hardware device without any conversions plughw:CARD=PCH,DEV=0
> HDA Intel PCH, ALC3234 Analog
> Hardware device with all software conversions
И запуска приложения:
$./main
6
HDA Intel HDMI: 0 (hw:0,3)
HDA Intel HDMI: 1 (hw:0,7)
HDA Intel HDMI: 2 (hw:0,8)
hdmi
pulse
default
Вопрос / запрос: Что создает проблему?Это, вероятно, не Альса, так что это portaudio?но в первом случае это сработало, так что это Pulseaudio? и если да, то как я могу решить проблему теперь, когда я ее воспроизвел?