3.11. Entrée TV

Cette section concerne l'activation de la lecture/enregistrement à partir d'un tuner TV compatible V4L. Voir la page de man pour une description des options TV et des contrôles clavier.

3.11.1. Compilation

  1. D'abord, vous devez recompiler. ./configure autodétectera les entêtes v4l du noyau et l'existence des entrées /dev/video*. Si elles existent, le support TV sera activé (voir le résultat de ./configure).

  2. Assurez-vous que votre tuner fonctionne avec d'autres logiciels TV pour Linux. Par exemple avec XawTV.

3.11.2. Astuces d'utilisation

La liste complète des options est disponible sur la page de man. Voici juste quelques astuces :

  • Utilisez l'option channels. Exemple :

    -tv channels=26-MTV1,23-TV2

    Explication : En utilisant cette option, seuls les canaux 26 et 23 seront utilisables, et il y a un joli texte OSD lors des changements de canaux affichant le nom du nouveau. Les espaces dans le nom du canal doivent être remplacés par le caractère "_".

  • Choisissez des dimensions d'images sensées. Les dimensions de l'image de destination devraient être divisible par 16.

  • Si vous capturez la vidéo avec une résolution verticale supérieure à la moitié de la pleine résolution (c-a-d. 288 pour PAL ou 240 pour NTSC), alors les trames que vous obtenez seront en réalité des paires de champs entrelacées. En fonction de ce que vous voulez faire avec la vidéo, vous pourriez la laisser sous cette forme, malheureusement désentrelacé, ou séparer les paires en champs individuels.

    Autrement vous aurez un film qui a des distorsion durant les scènes à mouvements rapides et le contrôleur de bitrate ne sera probablement même pas capable de garder le bitrate demandé car les artefacts de désentrelacement produisent beaucoup de détails et donc consomment plus de bande passante. Vous pouvez désactiver l'entrelacement avec -vf pp=DEINT_TYPE. Généralement pp=lb peut faire du bon travail, mais c'est une histoire de préférence personnelle. Voyez les autres algorithmes de désentrelacement dans le manuel et essayez-les.

  • Coupez les espaces morts. Quand vous capturez la vidéo, les bords sont généralement noirs ou contiennent du "bruit". De nouveau cela consomme de la bande passante inutilement. Plus précisément ce ne sont pas les zones noires elles-mêmes mais les transitions nettes entre le noir et la vidéo plus claire qui jouent, mais ce n'est pas très important pour le moment. Avant que vous commenciez la capture, ajustez les arguments de l'option crop pour que toutes les saletés des bords soient coupées. De nouveau, n'oubliez pas de garder des dimensions sensées.

  • Regardez la charge CPU. Elle ne devrait pas dépasser la limite des 90% la plupart du temps. Si vous avez un gros tampon, MEncoder peut survivre à une surcharge pendant quelques secondes mais pas plus. Il vaut mieux désactiver les économiseurs d'écran 3D OpenGL et les trucs similaires.

  • Ne jouez pas avec l'horloge système. MEncoder l'utilise pour la synchro A/V. Si vous réglez l'horloge système (surtout en arrière dans le temps), MEncoder va se sentir perdu et va perdre des trames. C'est un problème important lorsque vous êtes en réseau et que vous utilisez certains logiciels de synchronisation comme NTP. Vous devrez désactiver NTP pendant le processus de capture si vous voulez capturer correctement.

  • Ne changez pas le outfmt à moins que vous sachiez ce que vous faites ou votre si votre carte/pilote ne supporte pas la valeur par défaut (palette YV12). Dans les versions précédentes de MPlayer/ MEncoder il était nécessaire de spécifier le format de sortie. Ce problème devrait être résolu dans les versions actuelles et outfmt n'est plus requis, et la valeur par défaut convient dans la plupart des cas. Par exemple, si vous capturez en DivX en utilisant libavcodec et que vous spécifiez outfmt=RGB24 de façon à augmenter la qualité de l'image capturée, l'image capturée sera reconvertie plus tard en YV12; donc la seule chose que vous obtiendrez est un gaspillage massif de puissance CPU.

  • Pour spécifier la palette I420 (outfmt=i420), vous devez ajouter une option -vc rawi420 à cause d'un conflit de fourcc avec un codec vidéo Intel Indeo.

  • Il y a plusieurs façons de capturer l'audio. Vous pouvez attraper le son soit avec votre carte son via un câble externe entre la carte vidéo et l'entrée ligne, soit en utilisant le DAC intégré à la puce bt878. Dans ce dernier cas, vous devrez charger le pilote btaudio. Lisez le fichier linux/Documentation/sound/btaudio (dans l'arborescence du noyau, pas celle de MPlayer) pour les instructions d'utilisations de ce pilote.

  • Si MEncoder ne peut pas ouvrir le périphérique audio, assurez-vous qu'il soit réellement disponible. Il peut y avoir des ennuis avec certains serveurs de son comme aRts (KDE) ou ESD (GNOME). Si vous avez une carte son full duplex (presque toutes les cartes décentes le supportent aujourd'hui), et que vous utilisez KDE, essayez d'activer l'option "full duplex" dans le menu des préférences du serveur de son.

3.11.3. Exemples

Sortie muette, vers AAlib :)

mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://

Entrée depuis V4L standard :

mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 \
  -vo xv tv://

Un exemple plus élaboré. Ici MEncoder capture l'image PAL entière, coupe les marges, et désentrelace l'image en utilisant un algorithme de mélange linéaire. L'audio est compressée à un débit constant de 64kbps, en utilisant le codec LAME. Cette combinaison est adaptée pour capturer des films.

mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
  -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
  -vf crop=720:544:24:16,pp=lb \
  -o output.avi tv://

Cela dimensionne également l'image en 384x288 et compresse la vidéo avec un débit de 350kbps en mode haute qualité. L'option vqmax perd le quantizer et permet au compresseur vidéo d'atteindre un débit plus bas au détriment de la qualité. Cela peut être utilisé pour capturer des longues séries TV, quand la qualité n'est pas très importante.

mencoder -tv driver=v4l:width=768:height=576 \
  -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
  -oac mp3lame -lameopts cbr:br=48 -sws 1 \
  -o output.avi\
  -vf crop=720:540:24:18,pp=lb,scale=384:288 tv://

Il est également possible de spécifier des dimensions d'images plus petites dans l'option -tv et d'omettre le zoom logiciel mais cette approche utilise le maximum d'informations disponibles et, est un peu plus résistant au bruit. Les chipsets bt8x8 peuvent faire une moyenne de pixels uniquement dans la direction horizontale à cause d'une limitation matérielle.