Archives par mot-clé : linux

Normaliser le son sous linux

J’écoute régulièrement de la musique avec différents lecteurs audio présentés dans cette page, mais ils présentent tous l’inconvénient de ne pas normaliser le son. La normalisation du son consiste à abaisser le volume de certaines musiques et d’augmenter le volume pour d’autres de manière à ce qu’à l’oreille le volume du son soit identique. Cela dépend donc beaucoup du niveau sonore d’enregistrement du fichier audio d’origine, alors certes il existe des commandes qui permettent une fois intégrées dans un script bash de normaliser par lot des mp3. On peut citer par exemple mp3gain. Mais je préfèrerais autant ne pas toucher à mes fichiers audio pour ne pas risquer de les dégrader et que ça se fasse au niveau de la sortie audio pilotée par pulseaudio.

J’ai vainement essayé de configurer pulseaudio pour normaliser en temps réel. Pour cela, sur ma Mageia 7.1 j’ai installé le package ladspa-plugins-swh et rajouté les lignes suivantes dans le fichier /etc/pulse/default.pa

load-module module-ladspa-sink  sink_name=ladspa_sink  master=combined plugin=dyson_compress_1403  label=dysonCompress  control=0,1,0.5,0.99

# Create normalized sink that outputs to the compressed sink
load-module module-ladspa-sink  sink_name=ladspa_normalized  master=ladspa_sink  plugin=fast_lookahead_limiter_1913  label=fastLookaheadLimiter  control=10,0,0.8

# Comment out the line below to disable setting the normalized output by default:
set-default-sink ladspa_normalized

Mais rien n’y fait, il n’arrive pas à charger le module et je bute sur cette erreur

pulseaudio[5186]: Failed to load module "module-ladspa-sink" (argument: ""): initialization failed.

Sur internet on trouve bien comme astuce qu’il faut que la variable LADSPA_PATH pointe vers les bibliothèques LADSPA qui se trouve dans la pratique sous /usr/lib64/ladpsa. Mais ce n’est pas suffisant, je soupçonne que ça ne fonctionne pas car pulseaudio est lancée en mode system et que c’est pulse le propriétaire du processus.

Du coup j’ai changé mon fusil d’épaule et j’ai installé PulseEffects. C’est un logiciel qui s’interface entre les lecteurs vidéo et le serveur de son pulseaudio et qui permet d’appliquer des traitements et des effets en temps réel au son qui est envoyé vers la sortie audio de pulseaudio. Il permet notamment de normaliser le son.

Dans le screenshot ci-dessous, j’ai appliqué les effets Maximiser et Auto Gain qui me permettent d’avoir un volume à peu près constant entre les différents titres audio. La configuration est très simple, on lance son lecteur multimédia puis PulseEffects et par défaut le son du lecteur multimédia est filtré par les effets de PulsefEffects avant d’être renvoyé vers la sortie audio de pulseaudio. Plus besoin d’avoir à jouer manuellement sans cesse sur le niveau du volume.

kdenlive 19.12.0 et accélération matérielle

Depuis quelque temps kdenlive me déçoit de plus en plus, je le trouve de plus en plus lent et j’ai perdu les 3/4 des effets qui pouvaient exister par le passé (dont ceux apportés par frei0r). Il devient impossible de monter sans activer les clips intermédiaires, fonction qui permet de dégrader la vidéo lors du montage, mais qui préserve la qualité au rendu de la vidéo finale. Et encore ça reste très lent et laborieux dès qu’on rajoute des effets et transitions un tant soit peu compliqués. Et dire qu’avec les versions 0.9.X c’était parfaitement fluide de monter en HD et on disposait d’un stock considérable d’effets (même si dans la pratique j’en utilisais à peine 10%). Il semblerait que mes problèmes avec kdenlive remontent au passage du moniteur SDL à OpenGL et à la migration de Qt4 (kdenlive <=0.9x) vers Qt5 (kdenlive >=15.x). J’ai constaté un ralentissement général, voire des régressions fonctionnelles et la réapparition de plantage qui avait totalement disparu avec les dernières versions sous Qt4. Il se trouve qu’il existe l’extension movit qui permet de faire bosser un peu plus la GPU et quand je l’activais tout revenait dans l’ordre, je retrouvais la fluidité perdue, sauf que ça plantait toutes les 5min 🙁 .

Il faut croire que tout le monde ne souffre pas du même problème, j’ai pensé à un problème de compatibilité matérielle mais j’ai quand même un i7 avec 16Go de RAM, j’ai également soupçonné ma carte NVIDIA GTX 760 d’être la source de mes ennuis. J’ai même songé à changer de carte. Finalement j’ai exploré la voie de l’accélération matérielle, ça permet de décharger le CPU et la mémoire et de solliciter davantage le GPU et la mémoire de la carte graphique, notamment pour tous les calculs d’encodage et de décodage vidéo. Concrètement, comme à mon habitude en vieux dinosaure que je suis, j’ai récupéré les sources et tout recompilé. J’ai donc activé toutes les fonctions d’accélérations matérielles des différentes bibliothèques sur lesquelles se repose kdenlive. Pour une GPU NVIDIA il s’agit d’activer les bibliothèques et API suivantes :

  • VDPAU (Video Decode and Presentation API for Unix) bibliothèque développée par NVIDIA,
  • NVENC et NVDEC pour l’encodage et le décodage vidéo notamment des codecs H264 et HEVC, ils sont compris dans le package NVIDIA VIDEO CODEC SDK (ex CUVID) et utilisent CUDA (Compute Unified Device Architecture) qui pour simplifier est une boîte à outil de développement pour les GPU également développée par NVIDIA.
  • OpenCL (OpenComputing Language) qui permet de faire des programmes qui vont utiliser à la fois des CPU multi cœurs et la GPU.
  • OpenCV qui sert pour le traitement d’images en temps réel notamment pour faire du tracking d’éléments dans une vidéo.
Continuer la lecture de kdenlive 19.12.0 et accélération matérielle