J'utilise l'audio via HDMI sur mon récepteur, qui est doté d'une configuration 7.1 complète. Cependant, la plupart des morceaux que j'écoute ont beaucoup moins de canaux - certains sont mono, la plupart en stéréo, un peu en 5.1. Lorsque le récepteur reçoit le nombre correct de canaux, il génère divers effets DSP qui fonctionnent assez bien (par exemple, pour séparer un canal central, pour envoyer une base au subwoofer, pour détecter automatiquement l’environnement Dolby matrix, etc.). Cela cesse de fonctionner si vous lui envoyez un signal 7.1 complet avec un tas de canaux silencieux.
Le nombre de canaux de sortie dans PulseAudio est configuré, par carte / récepteur, par le profil attribué à la carte. Vous pouvez modifier le profil attribué avec pacmd
, pactl
et divers programmes de l' interface graphique.
Comment puis-je le configurer pour modifier automatiquement le profil en fonction de l'utilisation du canal dans le ou les flux d'entrée? Par exemple, si les flux d'entrée n'utilisent que l'avant gauche et l'avant droite, passez au profil stéréo. S'ils utilisent également l'arrière-gauche et l'arrière-droite, passez au quadrophonique, etc.
la source
mediainfo
ouffmpeg
ouavconv
) et utilisez ensuitepacmd
pour sélectionner le profil approprié avant de lancer votre lecteur. D'un point de vue logique, je m'attendrais à ce que cela fonctionne tant que vous ne jouez qu'un fichier audio à la fois.Réponses:
Ceci est juste un concept et pas de solution complète:
Vous pourrez peut-être gérer vous-même les événements
patcl subscribe
si vous pouvez affecter des configurations à des clients pulsaudio (par exemple, si le lecteur de film se connecte, vous passez en configuration 7.1, sinon vous utilisez la configuration stéréo). Vous obtiendrez un flux constant d'événementspatcl subscribe
que vous pourrez gérer en observant les connexions des clients. Ensuite, vous pouvez simplement appeler pactl / pacmd pour modifier le profil.Exemple de sortie de pactl subscribe:
Veuillez noter que vous avez toujours le problème de gérer les cas dans lesquels vous avez plusieurs clients avec un nombre différent de canaux.
En outre, l'approche ci-dessus est plutôt limitée. Les paramètres par application ne suffisent pas pour détecter le nombre réel de canaux utilisés de l'application (par exemple, vlc peut lire une vidéo 5.1 ou 7.1). Je n'ai pas trouvé le moyen d'obtenir le nombre réellement utilisé les canaux d'un client pulseaudio par rapport à pactl, mais j'ai peut-être manqué certaines options ici. Alternativement, vous pouvez également être connecté à l'application de lecteur vidéo elle-même et y obtenir les bits manquants.
la source
pactl list | grep format.channels
vous devriez être capable de trouver le max. Nombre de canaux utilisés (et plus d’informations également). L'utilisation de ces informations dans un script déclenché par des événements abonnés pourrait mener à une solution.