Всем привет, последняя надежда на вас.
Я пытаюсь программно записать звук, который слышу из компа (internal output). Уже перепробовал все девайсы, все комбинации в portaudio - звук записывает только с микрофона. Однако программа SoundWire использует PortAudio для записи внутреннего звука. Я открыл её в IDA - результат конфигурации:
input_parameters.device = Pa_GetDefaultInputDevice();
input_parameters.channelCount = 2;
input_parameters.sampleFormat = paInt16;
const PaDeviceInfo *input_info = Pa_GetDeviceInfo(input_parameters.device);
input_parameters.suggestedLatency = input_info->defaultLowInputLatency;
input_parameters.hostApiSpecificStreamInfo = NULL;
Pa_OpenStream(&stream, &input_parameters, NULL, input_info->defaultSampleRate, paFramesPerBufferUnspecified/*на самом деле тут 338u(которая скорее всего ссылка на sampleRate) и 1(флаг либо 1 семпл на 1 вызов), я решил что на результат не повлияет*/, paClipOff, recordCallback, NULL);
Окей, всё есть, в recordCallback тупо вот это:
int16_t *in = (int16_t *) inputBuffer;
for(int i = 0; i < LEN(in); i++) {
cout << in[i] << ":";
}
cout << endl;
Типа вроде всё в порядке, всё должно работать, но вот запись звука идёт с микрофона.
Уже несколько дней пытаюсь написать или найти хоть одну рабочую программу, которая записывает внутренний звук (искал по запросам "sound visualize", "audio capture" в github, stackoverflow). Но каждая либо записывает звук с микрофона, либо предлагается JACK, либо там другая ОС (windows).
Gist: main.cpp