c++ - studio - manual desarrollo de aplicaciones android pdf
Establecer dispositivos de punto final de audio específicos de la aplicación(programáticamente) (1)
Enlace al informe de error en ''Feedback Hub''
Un dispositivo de punto final de audio, de aquí en adelante denominado "punto final", es un dispositivo de entrada o salida de audio físico o virtual.
Con la actualización de abril 10 de Windows 10, se introdujo el largo ''Volumen de la aplicación y las preferencias del dispositivo''. Estas configuraciones permiten un mayor control sobre la gestión de la transmisión de audio, ya que ahora es posible establecer diferentes puntos finales para diferentes aplicaciones, sin importar si esa aplicación en particular viene con una selección de punto final o no.
Sin embargo, hay un problema en el que el audio de un programa, cuyo punto final no es el predeterminado, se transmite a través del punto final predeterminado (o no se aplica en absoluto) después de que se haya cerrado y ejecutado nuevamente, aunque el punto final se muestra correctamente en la configuración. :
Por lo que sé, el problema se puede recrear en una máquina con Windows 10 (versión 1803 o superior) con cualquier punto final virtual o físico y un programa afectado. Utilicé ''VLC Media Player'' en este ejemplo (sin tener en cuenta el hecho de que viene con una selección de punto final) ya que es bien conocido y ampliamente accesible, lo que debería facilitar la recreación del problema.
Lo que estoy buscando ...
... es una solución programática para cambiar entre puntos finales, que idealmente se puede iniciar en forma de un script para establecer el punto final correcto con el inicio de una aplicación.
Para mi propósito, sería suficiente tener que ajustar la ruta de la instancia del dispositivo manualmente, ya que el dispositivo sería siempre el mismo, pero tampoco voy a quejarme de una solución que recupera la ruta de la instancia del dispositivo del registro.
- Los puntos finales definidos y la ruta de la instancia del dispositivo del dispositivo que están utilizando se pueden recuperar de las subclaves de la clave
HKEY_USERS/# YOUR SID #/Software/Microsoft/Multimedia/Audio/DefaultEndpoint
. No sé cómo Windows genera el nombre de las subclaves o dónde se pueden encontrar. Si tuviera que hacer una suposición descabellada, diría que estos son identificadores de aplicaciones (siéntase libre de corregirme si me equivoco). - La ruta de la instancia del dispositivo se puede encontrar en el Administrador de dispositivos (en ''Entradas y salidas de audio'', haga doble clic en el dispositivo deseado, vaya a la pestaña ''Detalles'' y seleccione ''Ruta de la instancia del dispositivo'' en el menú desplegable ''Propiedad'') .
- Además, la entrada sobre Audio Endpoint Devices y Stream Management en Microsoft Docs puede ser útil, pero eso está muy por encima de mi cabeza.
Una solución posible pero poco práctica ...
... sería, establecer manualmente otro punto final para la aplicación y volver al punto final deseado en cada lanzamiento de dicha aplicación (como se muestra arriba).
Pero no solo toma esto por lo menos 10 segundos en cada lanzamiento, incluso podría olvidarse de hacer esto, ya que el audio podría ser transmitido a través del punto final predeterminado *¹
.
La alternativa a esta última es que no se transmitirá ningún audio en absoluto *²
o, en algunos casos, realmente funciona *³
.
*¹
por ejemplo: VLC Media Player, Rainbow Six Siege de Tom Clancy (aunque el audio se transmitirá correctamente durante las pantallas de inicio)
*²
por ejemplo: Call of Duty 4: Modern Warfare, Call of Duty: Modern Warfare 2, Call of Duty: Modern Warfare 3
*³
por ejemplo: Windows Media Player, Microsoft Edge, Firefox
Observaciones
- VLC Media Player viene con una selección de punto final, pero también TeamSpeak 3 y, a diferencia de VLC, omite la configuración de Windows por completo.
- Call of Duty no transmite ningún audio, lo más probable es que esté conectado al motor, ya que no encontré ninguna otra aplicación que hiciera algo similar.
- Windows Media Player, Microsoft Edge y Firefox son los únicos programas (que probé hasta ahora) que funcionan bien. No tienen una selección de punto final (lo sabría) y usarán el punto final correcto después de cerrarlo y lanzarlo nuevamente. Sin embargo, se debe tener en cuenta que Firefox y Microsoft Edge mostrarán varias instancias en el "Volumen de la aplicación y las preferencias del dispositivo" al ajustar el punto final.
Renuncia
Ya probé dos programas de terceros: ''Audio Router'', que no funcionó en absoluto y ''CheVolume'', que no resuelve el problema y se bloquea constantemente al hacerlo.
Esta pregunta se basa en una pregunta que hice en Superusuario ( here ), donde no obtuve una respuesta con la que pude trabajar debido a mi falta de conocimiento con respecto a la programación real (estoy familiarizado con Batch y PowerShell ). Soy consciente de que ni Stack Overflow ni Superusuario son servicios de escritura de guiones, sin embargo, el problema no se resuelve con la Actualización de octubre 10 de Windows 10, y veo que esto es un problema que no solo me afecta a mí, y con eso estaría. útil para varias personas después de mí. Siéntase libre de escribir un comentario o proponer una edición si ve esto de manera diferente.
Tampoco estoy seguro de si las etiquetas ''audio-streaming'' y ''endpoint'' deben usarse en este contexto, por favor, proponga una edición si no debería o puede pensar en algo mejor.
Editar - 05/11/18
Al usar el software de terceros ''EarTrumpet'' pude superar el problema con los juegos de ''Call of Duty'' (sin audio después de reiniciar), sin embargo, ''VLC Media Player'' no se reiniciaría después de que asigné un punto final no predeterminado con ''EarTrumpet'' hasta que cerré ''EarTrumpet'' de nuevo y el problema con ''Rainbow Six Siege de Tom Clancy'' sigue siendo el mismo.
Editar - 18/01/19
Se agregó un enlace a un informe de error que creé en el ''Centro de comentarios'' hace 2 meses.
Edición - 20/01/19
Después de realizar algunas pruebas nuevamente, se debe tener en cuenta que tener ''EarTrumpet'' ejecutándose en segundo plano mantendrá un punto final no predeterminado para ''VLC Media Player'' durante los reinicios, sin embargo, ''VLC Media Player'' solo se reiniciará (de manera confiable) cuando no -el punto final predeterminado se estableció en ''Volumen de la aplicación y preferencias del dispositivo''.
No tengo ninguna solución con respecto a un lenguaje de programación para manejar tales eventos.
Pero puedo recomendar la aplicación EarTrumpet para manejar este cambio más rápidamente https://www.theverge.com/2018/6/13/17457778/eartrumpet-windows-10-audio-app
Actualizaré la respuesta si encuentro una manera fácil de escribir / programar un cambio de salida en cada aplicación.