Создание вывода Windows::Media::Playback::MediaPlayer с возможностью захвата с помощью ActivateAudioInterfaceAsyncC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Создание вывода Windows::Media::Playback::MediaPlayer с возможностью захвата с помощью ActivateAudioInterfaceAsync

Сообщение Anonymous »

Я планирую создать исполняемый файл Windows Text To Speech, звук которого может быть уловлен OBS с помощью Application Audio Capture, но захват звука приложения ничего не улавливает.
После некоторого копания я сузил проблему до того, что ActivateAudioInterfaceAsync не может получить вывод из класса MediaPlayer. У меня есть следующий фрагмент кода, который, по моему мнению, имеет решающее значение для ответа на этот вопрос: полный код на github

Код: Выделить всё

class PlayerWrapper final
{
private:
Windows::Media::Playback::MediaPlayer m_player{};
Windows::Media::SpeechSynthesis::SpeechSynthesizer m_synth{};

public:
PlayerWrapper(concurrent_queue& q)
{
m_player.AutoPlay(true);
m_player.MediaEnded(
[&](auto...)
{
std::string msg{q.wait_and_pop()};
this->speak(msg);
});

this->speak("");
}

~PlayerWrapper()
{
spdlog::info("PlayerWrapper dropped");
m_player.Close();
}

void speak(auto message)
{
m_player.SetStreamSource(
m_synth.SynthesizeTextToStreamAsync(to_hstring(message)).get());
}
};
Ищу помощь в том, что мне следует изменить в коде, чтобы OBS могла получать аудиовыход из этой программы, заранее спасибо!


Подробнее здесь: https://stackoverflow.com/questions/798 ... through-ac
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»