2.3.2 Périphériques de sortie audio

2.3.2.1 Synchronisation audio/vidéo

L'interface audio de MPlayer se nomme libao2. Elle possède actuellement ces drivers :

oss
pilote OSS (ioctl) (supporte le transfert AC3 matériel)
sdl
pilote SDL (supporte ESD, ARTS etc)
nas
pilote NAS (Network Audio System)
alsa5
pilote ALSA 0.5 natif
alsa9
pilote ALSA 0.9 natif (supporte le transfert AC3 matériel)
sun
pilote audio SUN (/dev/audio) pour les utilisateurs BSD et Solaris8
arts
pilote ARTS natif (principalement pour les utilisateurs KDE)
esd
pilote ESD natif (principalement pour les utilisateurs GNOME)

Il faut bien le reconnaître, les pilotes des cartes son ont des problèmes d'incompatibilité. MPlayer utilise une fonction des pilotes écrits correctement pour maintenir la synchro audio/vidéo. Malheureusement, certains auteurs de pilote n'ont que faire de cette fonction: elle n'est pas requise pour lire des MP3s, ou pour les effets sonores.

Les autres lecteurs multimédia comme aviplay ou xine fonctionnent probablement autrement avec ces pilotes parce qu'ils utilisent de "simples" méthodes pour leur synchro interne. Une note: le temps affiché avec leurs méthodes ne sont pas AUSSI précis que celui de MPlayer.

Avec un pilote correctement écrit Mplayer ne provoquera pas de désynchro A/V relatives à l'audio, à moins que votre fichier soit très endommagé. Quelques options pour contourner ces problèmes sont décris dans la page de man).

Si vous avez un mauvais pilote audio, essayez l'option -autosync, il devrait régler vos problèmes. Voir la page de man pour les informations détaillées.

Quelques notes:

Sur Solaris, utilisez le pilote audio SUN avec l'option -ao sun, sinon ni la vidéo ni le son ne fonctionneront.

2.3.2.2 Problèmes de cartes son, recommandations

Chipset VIA intégré (via82cxxx) 48kHz uniquement
Pilote: depuis le projet gkernel
Aureal Vortex 2
    OSS:pas de pilote
OSS/Pro:OK
ALSA:pas de pilote
Max kHz:48
Pilote:aureal.sourceforge.net
Pilote2: depuis Pontscho's page (taille du buffer augmentée à 32k)
GUS PnP
OSS:pas de pilote
OSS/Pro:OK
ALSA:OK
Max kHz:48
SB Live!
OSS:Analogique OK, SP/DIF non fonctionnelle
ALSA:Les deux OK
Max kHz:192
SB AWE 64
OSS:max 44kHz
ALSA:48kHz son mauvais
Max kHz:48
Gravis UltraSound ACE
OSS:pas OK
ALSA:OK
Max kHz:44
Gravis UltraSound MAX
OSS:OK
ALSA:OK (?)
Max kHz:48
ESS 688
OSS:OK
ALSA:OK (?)
Max kHz:48
Cartes C-Media (lesquelles?)
OSS:pas OK (hissing) (?)
ALSA:OK (?)
Max kHz:?
Cartes Yamaha (*ymf*)
OSS:pas OK (?) (peut-être -ao sdl)
ALSA:OK uniquement avec ALSA 0.5 avec émulation OSS ET -ao sdl (!) (?)
Max kHz:?
Cartes avec chips envy24 (comme la Terratec EWS88MT)
OSS:?
OSS/Pro:OK
ALSA:?
Max kHz:?
PC Speaker ou DAC
OSS:OK (Utilisez le pilote SDL: -ao sdl)
ALSA:pas de pilote
Max kHz:Ce pilote émule 44.1, peut-être plus.
Pilote:ftp://ftp.infradead.org/pub/pcsp

Sous Linux, utilisez le noyau 2.4 si possible, le 2.2 n'a pas été testé.

Si le son émet des cliquements en lisant depuis le CD-ROM, activez l'IRQ unmasking ! par exemple hdparm -u1 /dev/cdrom (man hdparm). C'est généralement bénéfique et décrit plus en détail dans la section CD-ROM.

Les retour sur ce document sont les bienvenus. Merci de nous faire savoir comment MPlayer gère votre carte son.

2.3.2.3 Filtres audio

Les anciens plugins audio ont été remplacés par une nouvelle couche de filtres audio. Les filtres audio sont utilisés pour changer les propriétés des données audio avant que le son n'atteigne la carte son. L'activation et la désactivation sont normalement automatisés mais peuvent être outrepassés. Les filtres sont activés quand les propriétés des données audio différent de celles requises par la carte son et désactivés si nécessaire. L'option -af filtre1,filtre2,... est utilisée pour outrepasser l'activation automatique des filtres ou pour insérer des filtres qui ne le sont pas automatiquement. Les filtres seront éxecutés dans l'ordre où ils apparaissent dans la liste séparée par des virgules.

Exemple:
  mplayer -af resample,pan film.avi

ferait passer le son au travers du filtre de resampling suivi du filtre panoramique. Remarquez que la liste ne doit contenir aucun espace, sinon cela échouera.

Les filtres ont souvent des option changeant leur comportement. Ces options sont expliquées en détail dans les sections ci-dessous. Un filtre sera éxecuté en utilisant ses paramètres par défaut si ses options sont omises. Voici un exemple de comment utiliser les filtres en conjonction avec des options spécifiques à un filtre:

  mplayer -af resample=11025,pan=1:0.5:0.5 -channels 1 -srate 11025 media.avi

définirait la fréquence de sortie du filtre resample filter à 11025Hz et downmixerait l'audio dans 1 cannal en utilisant le filtre pan.

La plupart des filtres répondent à l'option -v, qui leur fait afficher des messages d'état.

Le fonctionnement général de la couche filtre est controllé en utilisant l'option -af-adv. Cette option a deux sous-options:

force
est un entier entre 0 et 3 qui contrôle comment les filtres sont insérés et quelles optimisations de vitesse/exactitude ils utilisent:
0
Utilise l'insertion automatique des filtres et optimise selon la vitesse du CPU.
1
Utilise l'insertion automatique des filtres et optimise pour la plus haute vitesse. Si cette option est activée le traitement des données audio sera fait en utilisant des opérations à virgule fixe. Attention: Certaines fonctions des filtres audio échoueront en silence, et la qualité du son risque d'en souffrir.
2
Utilise l'insertion automatique des filtres et optimise pour la qualité. Si cette option est activée le traitement des données audio sera fait en utilisant des opérations à virgule flottante et donc très intensif en usage CPU, mais donne une bien meilleure qualité sonore qu'avec le traitement à virgule fixe.
3
N'utilise pas l'insertion automatique des filtres et n'optimise pas. Attention: il est possible que MPlayer plante en utilisant ce paramètre.
list
est un alias de l'option -af.
2.3.2.3.1 Up/Down-sampling

MPlayer supporte pleinement l'up/down-sampling du son. Ce filtre peut être utilisé si vous avez une carte son à fréquence fixe ou si vous avez une vieille carte son qui n'est capable que de 44.1kHz. Ce filtre est automatiquement activé si cela est nécessaire, mais il peut être explicitement activé en ligne de commande. Il a trois options:

srate
est un entier utilisé pour définir la fréquence d'échantillonage de sortie en Hz. L'intervale valide pour ce paramètre va de 8kHz à 192kHz. Si les fréquences d'entrée et de sortie sont les mêmes ou si les paramètres sont ommis, le filtre est automatiquement retiré. Un fréquence d'échantillonage haute augmente normallement la qualité audio, surtout utilisé en conjonction avec d'autres filtres.
sloppy
est un paramètre binaire optionnel qui permet à la fréquence de sortie de différer légèrement de la fréquence donnée par srate. Cette option est utilisé au démarrage si la lecture est extremement lente.
fast
est un paramètre binaire optionnel qui active l'interpolation linéaire comme méthode de resampling. L'interpolation linéaire est extrémement rapide, mais souffre d'une piètre qualité sonore surtout si elle est utilisée pour l'up-sampling.

Example:
  mplayer -af resample=44100:0:1

fixerait la fréquence de sortie du filtre resample à 44100Hz en utilisant une echelle de fréquence exacte et l'interpolation linéaire.

2.3.2.3.2 Changer le nombre de canaux

Le filtre channels peut être utilisé pour ajouter ou retirer des canaux, il peut aussi être utilisé pour le routage ou la copie de canaux. Il est automatiquement activé quand la sortie du filtre audio diffère de la couche d'entrée ou quand il est demandé par un autre filtre. Se filtre se retire si il n'est pas requis. Le nombre d'option est dynamique:

nch
est un entier entre 1 et 6 qui est utilisé pour définir le nombre de canaux de sortie. Cette option est requise, la laisser vide provoquera une erreur à l'éxecution.
nr
est un entier entre 1 et 6 qui est utilisé pour définir le nombre de routes. Ce paramètre est optionnel. Si il est omis le routage par défaut est utilisé.
from1:to1:from2:to2:from3:to3...
sont des paires de nombres entre 0 et 5 qui définissent où chaque canal est routé.

Si seul nch est indiqué le routage par défaut est utilisé, il fonctionne comme cela: Si le nombre de canaux de sortie est plus grand que le nombre de canaux d'entrée des canaux vides sont insérés (exepté le mixage de mono vers stéréo, dans ce cas le canal mono est répété sur chacun des canaux de sortie). Si le nombre de canaux de sortie est plus petit que le nombre de canaux d'entrée les canaux en trop seront tronqués.

Exemple 1:
  mplayer -af channels=4:4:0:1:1:0:2:2:3:3 media.avi

changerait le nombre de canaux à 4 et définirait 4 routes qui interchangent le canal 0 et le canal 1 et laissent les canaux 2 et 3 intacts. Remarquez que si le media qui contient deux canaux était joué en arrière, les canaux 2 et 3 contiendraient du silence mais les 0 et 1 seraient tout de même inversés.

Exemple 2:
  mplayer -af channels=6:4:0:0:0:1:0:2:0:3 media.avi

changerait le nombre de canaux à 6 et définirait 4 routes copiant le canal 0 dans les canaux 0 à 3. Les canaux 4 et 5 contiendront du silence.

2.3.2.3.3 Convertisseur de format de sample

Ce filtre est un convertisseur de format de sample. Il est automatiquement activé si requis par la carte son ou un autre filtre.

bps
peut être 1, 2 ou 4 et définie le nombre d'octets par sample. Cette option est requise, la laisser vide provoquera une erreur à l'éxecution.
f
est une chaine texte décrivant le format de sample. Cette chaine est un mix concaténé de: alaw, mulaw ou imaadpcm, float ou int, unsigned ou signed, le ou be (little ou big endian). Cette option est requise, la laisser vide provoquera une erreur à l'éxecution.

Example:
  mplayer media.avi -af format=4:float

initialiserait le format de sortie en données à virgule de 4 octets par sample.

2.3.2.3.4 Delay

Ce filtre décale le son vers les haut-parleurs de façon a faire arriver le son dans les différents canaux au même moment dans la position d'écoute. Cela n'est utile que si vous avez plus de 2 haut-parleurs Ce filtre a une nombre variable de paramètres:

d1:d2:d3...
sont des nombres à virgule représentant les décalages en ms qui devraient être imposés aux différents canaux. Le décalage minimum est 0ms et le maximum est 1000ms.

Pour calculer le décalage requis pour chaque canal, faites comme ceci:

  1. Mesurez la distance entre les hauts parleurs et votre position d'écoute (en metres) ce qui vous donne les distances s1 à s5 (pour un système 5.1). Ce n'est pas la peine de le faire pour le caisson de basses (vous n'entendrez pas la différence de toute façon).
  2. Soustraiez les distances s1 à s5 à la distance maximum c-a-d.
    s[i] = max(s) - s[i]; i = 1...5
  3. Les décalages requis (en ms) sont calculés avec
    d[i] = 1000*s[i]/342; i = 1...5

Exemple:
  mplayer -af delay=10.5:10.5:0:0:7:0 media.avi

décalerait les canaux avant gauche et droite de 10.5ms, les deux canaux arrière et le caisson de 0ms et le canal central de 7ms.

2.3.2.3.5 Contrôle de volume logiciel

Ce filtre est un contrôleur de volume logiciel. Utilisez ce filtre avec précaution car il peut réduire le signal au niveau de bruit du son. Dans la plupart des cas il vaut mieux fixer le niveau du son PCM au max, laisser ce filtre de côté et contrôler le niveau de sortie de vos haut-parleurs avec le contrôleur de volume principal du mixeur. Si il y a un amplificateur externe connecté à l'ordinateur (ce qui est presque toujours le cas), le niveau de bruit peut être minimisé en ajustant le niveau maître et le bouton du volume jusqu'à ce que le bruit résiduel soit parti. Ce filtre a deux options:

v
est un nombre à virgule compris entre -200 et +60 qui représente le niveau du volume en dB. Le niveau par défaut est -10dB.
c
est un contrôle binaire qui active et désactuve le soft clipping. Le Soft-clipping peut rendre le son plus fluide si de très gros niveaux de volume de son sont utilisés. Activez cette option si l'intervale dynamique de vos haut-parleurs est très bas. Soyez conscient que cette fonction crée une distortion et ne devrait être utilisé qu'en dernier recours.

Example:
  mplayer -af volume=10.1:0 media.avi

amplifierait le son de 10.1dB et bloque le volume si il est trop haut.

Ce filtre a une seconde fonction: Il mesure le niveau maximum du son et l'affiche quand MPlayer se termine. Cette estimation de volume peut être utilisée pour définir le niveau de son dans MEncoder pour que l'intervale dynamique maximum soit utilisé.

2.3.2.3.6 Egaliseur

Ce filtre est un égaliseur graphique à 10 bandes, implementé en utilisant 10 filtres IIR de bande passante. Cela signifie qu'il fonctionne quel que soit le type d'audio joué. Les fréquences centrales pour les 10 bandes sont:

Bande No.Fréquence centrale
031.25 Hz
162.50 Hz
2125.0 Hz
3250.0 Hz
4500.0 Hz
51.000 kHz
62.000 kHz
74.000 kHz
88.000 kHz
916.00 kHz

Si la fréquence du son joué est plus basse que la fréquence centrale pour une bande de fréquence, alors cette bande sera désactivée. Un bogue connu de ce filtre est que les caractéristiques de la plus haute bande ne sont pas complètement symétriques si la fréquence du sample est proche de la fréquence centrale de la bande. Ce problème peut être contourné en up-samplant le son en utilisant le filtre resample avant qu'il n'atteigne ce filtre.

Ce filtre a 10 paramètres:

g1:g2:g3...g10
sont des nombres à virgule compris entre -12 et +12dB représentant le gain en dB pour chaque bande de fréquence.

Exemple:
  mplayer -af equalizer=11:11:10:5:0:-12:0:5:12:12 media.avi

amplifierait le son sur les fréquences les plus hautes et les plus basses tout en les annulant presque complètement autour de 1kHz.

2.3.2.3.7 Filtre panoramique

Ce filtre peut être utilisé pour mixer les canaux arbitrairement. Fondamentalement c'est une combinaison des filtres volume control et channels. Il y a deux utilisations principales pour ce filtre:

  1. Down-mixage de nombreux canaux dans seulement quelques-un, stéréo vers mono par exemple.
  2. Faire varier la "largeur" du haut parleur central dans un système de son surround.

Ce filtre est difficile à utiliser, et nécessitera quelques réglage avant d'obtenir le résultat souhaité. Le nombre d'options pour ce filtre dépends du nombre de canaux de sortie:

nch
est un entier compris entre 1 et 6 et est utilisé pour définir le nombre de canaux de sortie. Cette option est requise, la laisser vide provoquera une erreur à l'éxecution.
l00:l01:l02:..l10:l11:l12:...ln0:ln1:ln2:...
sont des nombres à virgule compris entre 0 et 1. l[i][j] détermine le nombre j de canaux d'entrée à mixer dans le nombre i de canaux de sortie.

Exemple:
  mplayer -af pan=1:0.5:0.5 -channels 1 media.avi

down-mixerait de stéréo vers mono.

Note: Les plugins audio ont été remplacés par les filtres audio et seront prochainements supprimés.

2.3.2.4 Plugins Audio (à ne plus utiliser)

Mplayer supporte les plugins audio. Les plugins audio peuvent être utilisés pour changer les propriétés des données audio avant que le son n'atteigne la carte son. Ils sont activés en utilisant l'option -aop qui accepte l'argument list=plugin1,plugin2,.... L'argument list est requis et détermine quels plugins devraient être utilisés et dans quel ordre ils devraient être exécutés. Exemple:

  mplayer media.avi -aop list=resample,format

passerait le son au travers du plugin resampling suivi du plugin format.

Ces plugins on également des options qui changent leur comportement. Ces options sont expliqués en détail dans les sections ci-dessous. Un plugin s'exécutera avec des paramètres par défaut si ses options sont omises. Voici un exemple de comment utiliser les plugins en combinaison avec des options spécifiques au plugin:

  mplayer media.avi -aop list=resample,format:fout=44100:format=0x8

fixerait la fréquence de sortie du plugin resample à 44100Hz et le format de sortie du plugin format à AFMT_U8.

Actuellement les plugins audio ne peuvent pas être utilisés dans MEncoder.

2.3.2.3.1 Up/Downsampling

Mplayer supporte pleinement l'up/downsampling du son. Ce plugin peut être utilisé si vous avez une carte son à fréquence fixe ou que vous vous battez avec une vieille carte son qui n'est capable que de sampler à 44.1kHz maxi. Que l'utilisation de ce plugin soit nécessaire ou pas, il est autodétecté. Ce plugin à une option: fout qui peut être utilisé pour fixer la fréquence de sortie désirée. Elle est par défaut de 48kHz, et est donnée en <Hz>.

Utilisation:
  mplayer media.avi -aop list=resample:fout=<fréquence requise en Hz, comme 44100>

Notez que la fréquence de sortie ne devrait pas être augmentée au dessus de sa valeur par défaut. Le dépassement provoquera la lecture des flux audio et vidéo en slow motion assortie d'une distortion audio.

2.3.2.3.2 Décodage son surround

MPlayer a un plugin audio qui peut décoder le son surround encodé en matrice. Dolby Surround est un exemple de format encodé en matrice. Beaucoup de fichiers avec deux canaux audio contiennent actuellement du son surround matricié. Pour utiliser cette fonction vous avez besoin d'une carte son supportant au moins 4 canaux.

Utilisation:
  mplayer media.avi -aop list=surround

2.3.2.3.3 Convertisseur de format de sample

Si votre carte son ne supporte pas le format de données int 16bit signé, ce plugin peut être utilisé pour le changer dans un format que votre carte son comprends. Il a une option, format, qui peut être initialisée avec les nombres trouvés dans libao2/afmt.h. Ce plugin est très rarement utilisé et est réservée aux utilisateurs avancés. Gardez à l'esprit que ce plugin ne change que le format de sample et pas sa fréquence ou le nombre de canaux.

Utilisation:
  mplayer media.avi -aop list=format:format=<format de sortie requis>

2.3.2.3.4 Décalage

Ce plugin décale le son est n'est là que comme exemple pour démontrer comment développer de nouveaux plugins. Il ne peut être utilisé pour rien d'utile d'un point de vue utilisateur et n'est mentionné ici que pour l'amour de l'exhaustivité. N'utilisez pas ce plugin à moins que vous soyez un développeur.

2.3.2.3.5 Contrôle de volume logiciel

Ce plugin est un remplacement logiciel pour le contrôleur de volume, et peut être utilisé sur des machines avec un périphérique mixeur endommagé. Il peut également être utilisé si on veut changer le volume de sortie de MPlayer sans changer le volume PCM du mixeur. Il a une option volume qui est utilisée en fixant une valeur entre 0 et 255, 101 étant la valeur par défaut qui équivaut à une amplification de 0dB. Utilisez ce plugin avec précaution car il peut réduire le signal jusqu'au bruit. Dans la plupart des cas il vaut mieux régler le volume PCM au maximum, laisser ce plugin, et contrôler le niveau de sortie sur vos haut-parleurs avec le bouton principal du mixeur. Si il y a un ampli externe connecté à votre ordinateur (c'est la plupart du temps le cas), le niveau de bruit peut être minimisé en ajustant le niveau principal et la molette du volume de l'ampli jusqu'a ce que le bruit résiduel soit parti.

Utilisation:
  mplayer media.avi -aop list=volume:volume=<0-255>

Ce plugin a également des capacités de compression ou "soft-clipping". La compression peut être utilisé si si la dynamique du son est très élevée ou si la dynamique de vos haut-parleurs est très basse. Soyez contient que cette fonction crée des distortions et ne devrait être envisagée qu'en dernier ressort.

Utilisation:
  mplayer media.avi -aop list=volume:softclip

2.3.2.3.6 Extrastereo

Ce plugin augmente (linéairement) la différence entre les canaux gauche et droit (comme le plugin extrastereo de XMMS) qui donne une sorte d'effet "live" à la lecture.

Utilisation:
  mplayer media.avi -aop list=extrastereo
  mplayer media.avi -aop list=extrastereo:mul=3.45

Le coefficient par défaut (mul) est un nombre à virgule initialisé à 2.5. Si vous l'initialisez à 0.0, vous aurez un son mono (moyenne des deux canaux). Si vous l'initialisez à 1.0, le son sera inchangé, si vous l'initialisez à -1.0, les canaux gauche et droit seront inversés.

2.3.2.3.7 Volume normalizer

Ce plugin maximise le volume sans distordre le son.

Utilisation:
  mplayer media.avi -aop list=volnorm