This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.
Les applications pour lire des vidéos sont assez récentes et se développent très rapidement. Soyez patient. Tout ne va pas fonctionner aussi bien que cela pu être le cas avec le son.
Avant que vous ne commenciez, vous devrez connaître le modèle de carte vidéo dont vous disposez ainsi que le circuit intégré qu'elle utilise. Alors qu'XFree86 supporte une large variété de cartes vidéo, seul un petit nombre d'entre elles donne de bonnes performances en lecture de vidéos. Pour obtenir la liste des extensions supportées par le serveur X utilisant votre carte employez la commande xdpyinfo(1) durant le fonctionnement d'X11.
C'est une bonne idée d'avoir un court fichier MPEG qui pourra être utilisé comme fichier test pour évaluer divers lecteurs et leurs options. Comme certains programmes de lecture de DVD chercheront un support DVD sur /dev/dvd par défaut, ou ont ce périphérique fixé définitivement dans leur code, vous pourrez trouver utile de créer des liens symboliques vers les périphériques corrects:
# ln -sf /dev/acd0c /dev/dvd # ln -sf /dev/racd0c /dev/rdvd
Sous FreeBSD 5.X, qui utilise devfs(5) il y a un ensemble de liens recommandés légèrement différent:
# ln -sf /dev/acd0c /dev/dvd # ln -sf /dev/acd0c /dev/rdvd
De plus, le décodage de DVD, qui nécessite de faire appel à des fonctions spéciales du lecteur de DVD, demande d'avoir la permission d'écrire sur les périphériques DVD.
Certains des logiciels portés dépendent des options du noyau suivantes pour pouvoir être compilés correctement. Avant d'essayer de les compiler, ajouter les options suivantes dans le noyau, recompilez-le et redémarrez:
option CPU_ENABLE_SSE option USER_LDT
Pour augmenter la mémoire partagée pour l'interface X11, il est recommandé que les valeurs de certaines variables sysctl(8) soient augmentées:
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
Il y a plusieurs manières possibles pour afficher de la vidéo sous X11. Ce qui fonctionnera vraiment est énormément dépendant du matériel. Chaque méthode décrite ci-dessous donnera différents résultats en fonction du matériel. De plus, le rendu de la vidéo sous X11 est un sujet recevant beaucoup d'attention dernièrement, et avec chaque nouvelle version d'XFree86 il pourra y avoir des améliorations significatives.
Une liste des interfaces vidéo communes:
X11: sortie X11 classique utilisant de la mémoire partagée.
XVideo: une extension de l'interface X11 qui supporte la vidéo sur n'importe quelle partie de l'écran contrôlé par X11.
SDL: ``Simple Directmedia Layer'' - couche simple d'accès directe au média.
DGA: ``Direct Graphics Access'' - accès direct au graphique.
SVGAlib: couche graphique bas niveau pour la console.
XFree86 4.X dispose d'une extension appelée XVideo (également connue sous les termes Xvideo, Xv, ou xv) qui permet d'afficher directement de la vidéo à travers une accélération spécifique. Cette extension fournit une très bonne qualité de rendu même sur les machines bas de gamme (par exemple mon portable utilisant un PIII 400Mhz). Malheureusement la liste des cartes pour lesquelles cette caractéristique est supportée directement est actuellement:
3DFX Voodoo 3
Intel i810 et i815
Certains circuits S3 (comme le Savage/IX et le Savage/MX)
Si votre carte n'est pas une des précédentes ne soyez pas déjà déçu. XFree86 4.X ajoute de nouveaux supports xv avec chaque version [1]. Pour vérifier si l'extension fonctionne utilisez xvinfo:
% xvinfo
XVideo est supporté pour votre carte si le résultat de la commande ressemble à:
X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 "XV_COLORKEY" (range 0 to 16777215) client settable attribute client gettable attribute (current value is 2110) "XV_BRIGHTNESS" (range -128 to 127) client settable attribute client gettable attribute (current value is 0) "XV_CONTRAST" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_SATURATION" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_HUE" (range -180 to 180) client settable attribute client gettable attribute (current value is 0) maximum XvImage size: 1024 x 1024 Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x30323449 (I420) guid: 49343230-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x36315652 (RV16) guid: 52563135-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x3e0, 0x7c00 id: 0x35315652 (RV15) guid: 52563136-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x7e0, 0xf800 id: 0x31313259 (Y211) guid: 59323131-0000-0010-8000-00aa00389b71 bits per pixel: 6 number of planes: 3 type: YUV (packed) id: 0x0 guid: 00000000-0000-0000-0000-000000000000 bits per pixel: 0 number of planes: 0 type: RGB (packed) depth: 1 red, green, blue masks: 0x0, 0x0, 0x0
Notez également que les formats listés (YUV2, YUV12, etc...) ne sont pas présents dans chaque implémentation d'XVideo et leur absence pourra gêner certains programmes.
Si le résultat ressemble à:
X-Video Extension version 2.2 screen #0 no adaptors present
Alors XVideo n'est probablement pas supporté pour votre carte.
Si XVideo n'est pas supporté pour votre carte, cela signifie seulement qu'il sera plus difficile pour votre système d'affichage de répondre aux demandes du rendu vidéo en termes de puissance de calcul. En fonction de votre carte vidéo et de votre processeur, vous pourriez encore obtenir de bons résultats. Vous devriez probablement vous documenter sur les méthodes pour améliorer les performances en lisant la Section 16.4.3.
La couche simple d'accès directe au média, SDL, a été prévue pour être une couche de portage entre Microsoft Windows, BeOS, et Unix, permettant à des applications ``cross-platform'' qui font un usage efficace du son et du graphique d'être développées. La couche SDL fournit une abstraction de bas niveau vers le matériel qui peut parfois être plus efficace que l'interface X11.
La bibliothèque SDL peut être trouvée dans devel/sdl12
L'accès direct au graphique est une extension d'XFree86 qui permet à un programme de bypasser le serveur X et d'accéder directement au matériel. Comme il repose sur une copie bas niveau de la mémoire, les programmes l'utilisant doivent être exécutés avec les privilèges de l'utilisateur root.
L'extension DGA et ses performances peuvent être testées avec dga(1). Quand dga est exécuté, il changera les couleurs de l'affichage à chaque appui sur une touche. Pour quitter, utilisez la touche q.
Cette section traite des logiciels disponibles dans le catalogue des logiciels portés de FreeBSD qui peuvent être utilisés pour lire de la vidéo. Les applications vidéos sont un domaine de développement très actif, et les capacités de diverses applications seront sujettes à des divergences avec la description donnée ici.
Premièrement, il est important de savoir que la plupart des applications vidéos qui fonctionnent sous FreeBSD ont été développées comme des applications pour Linux. Pour cette raison, elles sont relativement expérimentales et possèdent un certain nombre de ``Linuxismes'' qui pourraient empêcher un fonctionnement complet sous FreeBSD.
Par ``expérimentales'', je veux dire que vous devez vous attendre à ce que les ré-encodeurs, les lecteurs, et décodeurs de DVD aient des bogues importants ou des problèmes de coopération avec d'autres programmes. Voici une courte liste du type de choses dont je veux parler:
Une application ne peut pas lire un fichier produit par une autre application.
Une application ne peut pas lire un fichier quelle a produit.
La même application sur deux machines différentes, recompilée sur chaque machine pour la machine elle-même, jouera le fichier différemment.
Un filtre apparemment insignifiant comme un changement d'échelle de l'image donne de très mauvais résultats en raison d'une routine de changement d'échelle boguée.
Une application qui plante constamment.
La documentation n'est pas installée avec le logiciel porté et peut être trouvée sur Internet ou dans le répertoire CHEMIN_DU_LOGICIEL_PORTE/work/ .
Par ``Linuxismes'', j'entends les problèmes résultants de la façon dont certaines bibliothèques standards sont implémentées dans les distributions Linux, ou certaines caractéristiques du noyau Linux qui ont été employées par les auteurs des applications, parce que c'est le système sous lequel ils développent principalement. Ces problèmes peuvent ne pas être remarqués ou contournés par les responsables du portage du logiciel ce qui peut mener vers quelques ennuis comme ceux-ci:
L'utilisation de /proc/cpuinfo pour détecter les caractéristiques du processeur.
Une mauvaise utilisation des ``threads'' qui provoque le blocage de programme au lieu de se terminer complètement.
Des logiciels habituellement utilisés en conjonction avec l'application ne sont pas encore dans le catalogue des logiciels portés.
Jusqu'ici, les développeurs de ces applications ont été coopératifs avec les responsables des logiciels portés pour minimiser les modifications nécessaires au portage.
MPlayer est une application pour lire des vidéos récemment et rapidement développée. Les objectifs de l'équipe de MPlayer sont la rapidité et la flexibilité sur Linux et autre Unix. Le projet fut démarré quand le fondateur de l'équipe en eu assez des mauvaises performances en lecture des autres lecteurs disponibles. Certains diront que l'interface a été sacrifiée pour une conception rationalisée, mais une fois que vous avez les options en ligne de commande et les combinaisons de touches en main, cela fonctionne très bien.
MPlayer réside dans graphics/mplayer. MPlayer effectue un certain nombre de contrôle du matériel durant le processus de compilation, il en résulte un binaire qui ne sera pas portable d'un système à l'autre. Ainsi il est important d'utiliser le logiciel porté et de ne pas utiliser un logiciel pré-compilé. En plus, un certain nombre d'options peuvent être spécifiées à make qui d'ailleurs les affiche au départ de la compilation.
# cd /usr/ports/graphics/mplayer # make You can enable additional compilation optimizations by defining WITH_OPTIMIZED_CFLAGS You can enable GTK GUI by defining WITH_GUI. You can enable DVD support by defining WITH_DVD. You can enable SVGALIB support by defining WITH_SVGALIB. You can enable VORBIS sound support by defining WITH_VORBIS. You can enable XAnim DLL support by defining WITH_XANIM.
Si vous avez x11-toolkits/gtk12 installé, alors vous pourrez activer l'interface graphique également. Sinon, cela n'en vaut pas la peine. Si vous avez l'intention de lire des DVDs (éventuellement encodés par CSS) avec MPlayer vous devez activer le support DVD ici [2]. Certaines options intéressantes sont:
# make WITH_DVD=yes WITH_SVGALIB=yes
Au moment de l'écriture de ces lignes, le logiciel porté de MPlayer compilera sa documentation HTML et un exécutable mplayer. On peut également faire compiler un encodeur, mencoder, qui est un outil pour ré-encoder la vidéo. Une modification du fichier Makefile pourra l'activer. Il se peut que cela soit activé par défaut dans les versions suivantes du logiciel porté.
La documentation HTML de MPlayer est très complète. Si le lecteur trouve l'information sur le matériel vidéo et les interfaces manquante dans ce chapitre, la documentation de MPlayer est une alternative très complète. Vous devriez certainement prendre le temps de lire la documentation de MPlayer, si vous êtes à la recherche d'informations sur le support vidéo sous Unix.
Chaque utilisateur de MPlayer doit créer un sous-répertoire .mplayer dans son répertoire d'utilisateur. Pour créer ce sous-répertoire nécessaire, vous pouvez faire ce qui suit:
% cd /usr/ports/graphics/mplayer % make install-user
Les options de commande de mplayer sont données dans la page de manuel. Pour plus de détails il y a la documentation HTML. Dans cette section, nous donnerons quelques uns des cas les plus courants.
Pour lire à partir d'un fichier, comme testfile.avi en utilisant une des diverses interfaces vidéo utilisez l'option -vo:
% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi
Cela vaut la peine d'essayer toutes ces options, comme leur performance relative dépend de nombreux facteurs et variera de façon significative avec le matériel.
Pour lire à partir d'un DVD, remplacez testfile.avi par -dvd <N> DEVICE où <N> est le numéro du titre à jouer et DEVICE est le fichier spécial de périphérique correspondant au lecteur de DVD. Par exemple, pour jouer le titre 3 depuis /dev/dvd:
# mplayer -vo dga -dvd 2 /dev/dvd
Pour arrêter, avancer, etc..., consultez les combinaisons de touches, qui sont données en exécutant mplayer -h ou lisez la page de manuel.
D'autres options importantes pour la lecture sont: -fs -zoom qui active le mode plein écran et -framedrop qui aide au niveau des performances.
Pour que la ligne de commande à taper ne devienne pas trop longue, l'utilisateur peut créer un fichier .mplayer/config et y fixer les options par défaut:
vo=xv fs=yes zoom=yes
Enfin, mplayer peut être utilisé pour extraire une piste du DVD dans un fichier .vob. Pour récupérer la piste vidéo numéro 2 d'un DVD:
# mplayer -dumpstream -dumpfile out.vob -dvd 2 /dev/dvd
Le fichier de sortie, out.vob, sera du MPEG et peut être manipulé par les autres logiciels décrits dans cette section.
Si vous optez pour installer mencoder quand vous lancez la compilation, soyez averti qu'il est encore très expérimental.
Pour utiliser mencoder c'est une bonne idée de vous familiariser avec les options données par la documentation HTML. Il existe une page de manuel, mais elle n'est pas très utile sans la documentation en HTML. Il y a d'innombrables façons d'améliorer la qualité, diminuer le débit binaire, et modifier les formats, et certaines de ces options peuvent faire la différence entre de bonnes et mauvaises performances. Voici quelques exemples pour y arriver. Tout d'abord une simple copie:
% mencoder input.avi -oac copy -ovc copy -o output.avi
Il est facile de trouver des exemples où la sortie n'est pas lisible même par mplayer. Aussi, si vous voulez juste extraire un fichier, restez sur l'option -dumpfile de mplayer.
Pour convertir input.avi au format MPEG4 avec un codage audio MPEG3 ( audio/lame est nécessaire):
% mencoder input.avi -oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi
Ceci a produit un fichier lisible par mplayer et xine.
input.avi peut être remplacé par -dvd 1 /dev/dvd et exécuté en tant que root pour ré-encoder directement un titre DVD. Puisque vous êtes susceptible de ne pas être satisfait du résultat la première fois, il est recommandé d'extraire le titre vers un fichier et de travailler sur le fichier.
Le lecteur xine est un projet de grande envergure visant non seulement à être une solution vidéo tout-en-un, mais également de produire une bibliothèque de base réutilisable et un exécutable modulaire qui peut être étendu grâce à des greffons. Il est fourni sous forme pré-compilée et de logiciel porté, graphics/xine.
La bonne nouvelle est que ce qui précède est proche de la réalité. Le lecteur xine est encore un peu brut, mais c'est clairement un bon début. Dans la pratique, xine demande soit un processeur rapide avec une carte vidéo rapide, soit l'extension XVideo. L'interface graphique est utilisable, mais peu pratique.
Au moment de l'écriture de ces lignes, il n'y a pas de module d'entrée fourni avec xine qui lira les DVDs codés en CSS. Il existe des versions tiers qui ont des modules à cet effet intégrés, mais aucune de ces dernières ne se trouve dans le catalogue des logiciels portés de FreeBSD.
Comparé à MPlayer, xine fait plus pour l'utilisateur, mais au même moment, rend inaccessible à l'utilisateur certains contrôles bien précis. Le lecteur xine se comporte plus mal sur les interfaces non XVideo et a très peu d'alternatives à cette dernière. La FAQ de xine recommande fortement l'utilisation d'une carte qui la supporte.
Le lecteur xine peut être lancé tout simplement avec la ligne:
% xine
Les menus peuvent être utilisés pour ouvrir un fichier, ou on peut directement lire un fichier sans l'interface graphique avec la commande:
% xine -g -p mymovie.avi
Le logiciel transcode n'est pas un lecteur, mais une suite d'outils pour ré-encoder les fichiers .avi et .mpg. Avec transcode, on a la capacité de fusionner des fichiers vidéos, réparer les fichiers endommagés, en utilisant les outils en ligne de commande avec des interfaces de flots stdin/stdout.
Comme pour MPlayer, transcode est un logiciel très expérimental qui doit être compilé à partir du logiciel porté graphics/transcode. Il utilise un grand nombre d'options avec la commande make. Je recommande:
# make WITH_LIBMPEG2=yes
Si vous projetez d'installer graphics/avifile, alors ajoutez l'option WITH_AVIFILE à votre ligne de commande make, comme montré ici:
# make WITH_AVIFILE=yes WITH_LIBMPEG2=yes
Voici deux exemples d'utilisation de transcode pour la conversion vidéo qui produira une version redimensionnée. La première encode la sortie en un fichier openDIVX, alors que la seconde encode vers un format MPEG plus portable.
% transcode -i input.vob -x vob -V -Z 320x240 \ -y opendivx -N 0x55 -o output.avi
% transcode -i input.vob -x vob -V -Z 320x240 \ -y mpeg -N 0x55 -o output.tmp % tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1
Il existe une page de manuel pour transcode, mais pour les divers utilitaires tc* (comme tcmplex) qui sont également installés, il n'existe qu'une courte information obtenue à l'aide de l'option -h.
En comparaison, transcode s'exécute bien plus lentement que mencoder, mais il a plus de chance de produire un fichier plus largement lisible. Je peux lire des MPEGs produits par transcode sur de vieilles versions du Windows Media Player et du Quicktime d'Apple, par exemple.
Je n'ai aucun doute sur le fait que dans un an, beaucoup de ce qui est dans ce chapitre sera dépassé. La vidéo sera probablement moins problématique à faire fonctionner et le catalogue des logiciels portés contiendra une application qui transformera un système FreeBSD en un lecteur de DVD, un système personnel d'enregistrement vidéo, et un studio audio/vidéo virtuel. Jusqu'à ce que ce jour arrive, ceux qui veulent tirer partie des possibilités audio/vidéo de FreeBSD devront se débrouiller avec des connaissances extraites de plusieurs FAQs et guides et utiliser différentes applications.
Cette section existe pour fournir au lecteur quelques liens pour en apprendre plus dans le cas où les informations contenues dans ce chapitre furent trop justes.
La documentation de MPlayer est techniquement très instructive. Ces documents devraient probablement être consultés par quiconque désirant obtenir un niveau élevé d'expertise sur la vidéo et Unix. La liste de diffusion de MPlayer est hostile à toute personne qui n'a pas pris la peine de lire la documentation, aussi si vous projetez de leur envoyer des rapports de bogue, lisez la documentation!
Le HOWTO de xine contient un chapitre sur l'amélioration des performances qui est général à tous les lecteurs de vidéo.
Et enfin, il y a quelques autres applications prometteuses que le lecteur devrait essayer:
Avifile qui est également un logiciel porté graphics/avifile.
Ogle qui est également un logiciel porté graphics/ogle.
[1] |
Des cartes graphiques populaires avec généralement de très bonnes performances sous XFree86, en provenance de nVidia, qui n'a pas encore rendu public les spécifications de leur support XVideo à l'équipe d'XFree86. Il se peut qu'il se passe un certain temps avant qu'XFree86 ne supporte complètement XVideo pour ces cartes. |
[2] |
La lecture de DVD non autorisée est une infraction sérieuse dans certains pays. Vérifiez les lois locales avant d'activer cette option. |
Précédent | Sommaire | Suivant |
Fichiers MP3 | Niveau supérieur | Serial Communications ** Traduction en Cours ** |
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de
FreeBSD, lisez la documentation avant de
contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.