Как транслировать аудио на конкретное устройство вывода? - PullRequest
0 голосов
/ 25 октября 2019

Были попытки найти способ для потоковой передачи звука из файла или веб-страницы на конкретное устройство вывода, а не только на устройство по умолчанию. Пробовал использовать mciSendString, и хотя команда открытия принимает идентификатор устройства / имя файла, я не нашел способа использовать его, даже не уверен, что это то, что я ищу или нет, но учитывая, что он говорит ... or the filename of the device driver, я думаю, да (?), но поправьте меня, если я ошибаюсь, и это не параметр типа specify your output device.

Если это правильно, то как это сделать? вы перечисляете установленные драйверы устройств, заглядываете в интерфейс IMMDevice, потому что он выглядит так, как будто в нем могут храниться имена файлов в реестре, но ни один из разделов реестра устройства вывода не имеет записи значения типа driver filename или, по крайней мере,Я не нашел ни одного.

Так что мой вопрос: как бы вы пошли в потоковом режиме аудио на конкретное устройство вывода, это не должно быть сделано через mciSendString, это просто то, что я посмотрелпоскольку это одна из самых обсуждаемых функций, когда речь идет о воспроизведении аудио.

Примечание: пожалуйста, сделайте , а не порекомендуйте мне сторонние библиотеки, такие как NAudio, вот почему я спрашиваю этоВопрос не в том, чтобы получить рекомендации для библиотек, в противном случае я бы уже использовал один и никогда бы не написал этого, просто видел, как многие ответы выглядят так: Use {LibName}, it has what you want или что-то в этом роде.

В случае, еслинаписано нечетно или неправильно сформулировано местами, в основном вот какова должна быть конечная цель:

Installed Output Devices:
 - Output1
 - Output2
 - Output3

Method For Playing:
  //will play x.mp3 through output device 1
  PlayAudio(output: "Output1", mp3File: "x.mp3");

  //will play x.mp3 through output device 2
  PlayAudio(output: "Output2", mp3File: "x.mp3");

  //will play x.mp3 through output device 3
  PlayAudio(output: "Output3", mp3File: "x.mp3");

1 Ответ

0 голосов
/ 25 октября 2019

Похоже, вы ищете этот API: mciSendCommand ()

Чтобы установить устройство WaveAudio (звуковую карту), используемое мультимедийным элементом управления, необходимо использовать API mciSendCommand,Управление мультимедиа напрямую не предоставляет метод, позволяющий вам установить устройство, используемое для воспроизведения или записи.

  • Вызов mciSendCommand() с MCI_SET & MCI_WAVE_SET_PARMS установкой wOutput на желаемыйИдентификатор устройства воспроизведения.
  • Затем получите IDDevice для mciSendCommand() через mciGetDeviceID("waveaudio")

Не совсем на 100% ясно, что хочет wOutput, вероятно, тот же идентификатор, что ивозвращено waveOutGetDevCaps()

Я просто носильщик.

Пожалуйста, обратитесь:

https://stackoverflow.com/a/13320137/11128312

https://stackoverflow.com/a/10968887/11128312

...