Estoy ejecutando audio a través de HDMI a mi receptor, que tiene una configuración 7.1 completa conectada. Sin embargo, la mayoría de las cosas que escucho tienen muchos menos canales: algunos son mono, la mayoría son estéreo, un poco es 5.1. Cuando el receptor se alimenta con el número correcto de canales, tiene varios efectos DSP que funcionan bastante bien (por ejemplo, al dividir un canal central, al enviar la base al subwoofer, la detección automática de sonido envolvente de matriz Dolby, etc.). Esto deja de funcionar si le envía una señal 7.1 completa con un montón de canales silenciosos.
El número de canales de salida en PulseAudio se configura, por tarjeta / receptor, por el perfil asignado a la tarjeta. Puede cambiar el perfil asignado con pacmd
, pactl
y varios programas de interfaz gráfica de usuario.
¿Cómo puedo configurarlo para cambiar automáticamente el perfil en función del uso del canal en las secuencias de entrada? Por ejemplo, si las transmisiones de entrada solo se usan en la parte frontal izquierda y frontal derecha, cambie al perfil estéreo. Si también están usando back-left y back-right, cambie a quadrophonic, etc.
fuente
mediainfo
orffmpeg
oavconv
) y luego usepacmd
para seleccionar el perfil apropiado antes de iniciar su reproductor. Desde un punto de vista lógico, esperaría que funcione siempre que esté reproduciendo un audio a la vez.Respuestas:
Esto es solo un concepto y no una solución completa:
Es posible que pueda hacer su propio manejo de eventos
patcl subscribe
si puede asignar configuraciones a clientes pulsaudio (por ejemplo, si el reproductor de películas se conecta, cambia a la configuración 7.1, de lo contrario usa la configuración estéreo). Obtendrá un flujo constante de eventos de lospatcl subscribe
que puede manejar observando las conexiones del cliente. Luego puede llamar a pactl / pacmd para cambiar el perfil.Ejemplo de salida de pactl subscribe:
Tenga en cuenta que todavía tiene el problema de manejar casos en los que tiene varios clientes con un número diferente de canales.
Además, el enfoque anterior es bastante limitado. La configuración por aplicación no es suficiente para detectar el número real de canales utilizados de la aplicación (por ejemplo, vlc podría reproducir un video 5.1 o 7.1). No he encontrado una manera de obtener el número de canales realmente utilizados de un cliente de pulseaudio a través de pactl, pero podría haber perdido algunas opciones aquí. Alternativamente, también puede conectarse a la aplicación del reproductor de video y obtener los bits faltantes allí.
fuente
pactl list | grep format.channels
usted debería poder averiguar el máximo. Número de canales utilizados (y más información también). Usar esa información en un script activado por eventos suscritos podría conducir a una solución.