[ Présentation | Installation des bibliothèques de base ( madlibdvdcss , libdvdread , libdvdnav , libdvbpsi , live555 ) |  Les lecteurs multi formats ( présentation , vlcxine MPlayer  ) | Streaming vidéo ( présentation , diffuser vers un poste, streaming sur le réseau ,  vidéo à la demande ) ]

Dernière modification 6 août 2024

Les lecteurs vidéo sous Linux


(ce document est disponible au format pdf dans la rubrique téléchargement)

Présentation

Sur cette page sont présentés les lecteurs vidéo les plus courant sous linux, ils vous permettront de lire à peu près tous les types de formats vidéo (conteneur et codec) y compris les DVD.

On suppose que vous êtes passé par les pages outils de base pour la vidéo et conteneur vidéo.

[Retour haut de la page ]

Installation des bibliothèques de base

Installation de mad

MAD est un décodeur audio haute qualité MPEG. L'URL officiel est www.underbit.com/products/mad/ vous y trouverez la dernière archive que vous décompressez en tapant :

tar xvfz libmad-0.15.1b.tar.gz

Cela donne le répertoire mad-0.15.1b dans lequel on tape successivement 

./configure
make

si vous rencontrez l'erreur suivante

cc1: erreur: option "-fforce-mem" de la ligne de commande non reconnue

Editez le fichier configure et supprimez fforce-mem

optimize="$optimize -fforce-mem"

relancez configure et make puis en tant que root

make install
ldconfig

[Retour haut de la page ]


Installation de libdvdread

Cette bibliothèque offre des outils pour lire les DVD. L'URL est http://download.videolan.org/pub/videolan où on récupérera l'archive qu'on décompresse en tapant

tar xvfj libdvdread-6.1.3.tar.bz2

Cela donne le répertoire libdvdread-6.1.3 dans lequel on tape

./configure
make


Puis en tant que root

make install

[Retour haut de la page ]


Installation de libdvdnav

Cette bibliothèque de fonctions fournit des outils pour pouvoir "naviguer" dans un DVD, c'est à dire pouvoir utiliser les menus interactifs proposés dans la plupart des DVD. L'URL est http://download.videolan.org/pub/videolan/ on y récupère l'archive qu'on décompresse en tapant

tar xvfj libdvdnav-6.1.1.tar.bz2

Cela donne le répertoire libdvdnav-6.1.1 dans lequel on tape

./configure
make


Puis en tant que root

make install

Installation de libdvdcss

Libdvdcss est une bibliothèque offrant des outils pour lire du flux MPEG2 d'un disque dur ou d'un DVD. Il permet aussi de lire les DVD cryptés. L'URL est   http://www.videolan.org/developers/libdvdcss.html on y récupère l'archive qu'on décompresse en tant

tar xvfj libdvdcss-1.4.3.tar.bz2


Cela donne le répertoire libdvdcss-1.4.3 dans lequel on tape

./configure
make


Puis en tant que root

make install

[Retour haut de la page ]


Installation de libdvbpsi

libdvbpsi dont le site est http://www.videolan.org/developers/libdvbpsi.html permet la diffusion de flux MPEG2, on y récupère l'archive qu'on décompresse en tapant

tar xvfj libdvbpsi-1.3.3.tar.bz2

Cela donne le répertoire libdvbpsi-1.3.3 dans lequel on tape

./configure
make

puis en tant que root

make install

cette bibliothèque est nécessaire à vlc pour faire du streaming vidéo.

[Retour haut de la page ]



Installation de live555

live555 dont le site http://www.live555.com/liveMedia/public/ permet de faire du streaming et de la réception vidéo, il est nécessaire à vlc. On décompresse l'archive en tapant

tar xvfz live555-latest.tar.gz 

Cela donne le répertoire live dans lequel on édite le fichier config.linux pour rajouter l'option -fPIC

COMPILE_OPTS =          $(INCLUDES) -I/usr/local/include -I. -O2 -fPIC -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64

on tape ensuite

./genMakefiles linux

on tape ensuite

make


on tape ensuite en tant que root

make install
ln -s /usr/local/linux/multimedia/live/liveMedia/include/ /usr/include/liveMedia
ln -s /usr/local/linux/multimedia/live/groupsock/include /usr/include/groupsock
ln -s /usr/local/linux/multimedia/live/UsageEnvironment/include/ /usr/include/UsageEnvironment
ln -s /usr/local/linux/multimedia/live/BasicUsageEnvironment/include/ /usr/include/BasicUsageEnvironment

[Retour haut de la page ]

Les lecteurs multiformats

Présentation

Je vous présente ici les lecteurs les plus courants à savoir VLC, MPlayer et dans une moindre mesure xine. Ces différents players sont capables de lire à peu près tous les codecs audio et vidéo et conteneurs imaginables dont les ogm et les matroska.

[Retour haut de la page ]

VLC

Installation

VLC est un player vidéo particulièrement puissant, le site officiel est http://www.videolan.org je n'ai pas réussi à installer la dernière version stable 3.0.20 qui génère un tas d'erreurs, j'ai donc récupéré la version en développement avec git

git clone https://code.videolan.org/videolan/vlc.git

cela donne le répertoire vlc. Elle ne fonctionne qu'avec qt6, on installera éventuellement les packages qt6qml-devel, lua-devel, lib64cddb-devel, qt6-devel, qt6quick-devel, qt6quickcontrols2-devel, fribidi, fribidi-devel, lib64sndfile-devel, lib64gcrypt-devel, wayland-protocols-devel, lib64SDL_image-devel. On revient dans vlc on y tape

./bootstrap
./configure --enable-gles2 --enable-fdkaac --enable-qt --disable-opencv


j'ai du désactiver opencv car j'avais vraiment beaucoup d'erreurs, puis on tape

make

maintenant pour l'erreur suivante

/bin/ld: /usr/local/lib/libliveMedia.a(TLSState.o): in function `TLSState::read(unsigned char*, unsigned int)':
TLSState.cpp:(.text+0x49): undefined reference to `SSL_read'
/bin/ld: TLSState.cpp:(.text+0x5f): undefined reference to `SSL_get_error'

on modifie le fichier modules/access/Makefile.am en rajoutant à la fin de cette ligne liblive555_plugin_la_LIBADD = $(LIBS_live555) $(SOCKET_LIBS) -lssl -lcrypto

on retape make

si vous tombez sur l'erreur suivante

/bin/ld: /usr/local/lib64/libebml.a(EbmlBinary.cpp.o): relocation R_X86_64_32 against symbol `_ZTVN7libebml10EbmlBinaryE' can not be used when making a shared object; recompile with -fPIC

j'ai du reprendre la compilation de libebml tel que présentée ici, j'ai édité le fichier build/CMakeFiles/ebml.dir et modifiez la ligne suivante dans le fichiers flags.make

CXX_FLAGS = -fPIC -std=gnu++14

on fera la même chose à libmatroska dans le fichier build/CMakeFiles/matroska.dir/flags.make

on revient à vlc, on retape make puis en tant que root

make install

on rajoute dans le fichier /etc/ld.so.conf la ligne suivante

/usr/local/lib/vlc

puis on tape

ldconfig

[Retour haut de la page ]

Utilisation

Il suffit de taper vlc, l'interface est particulièrement riche (nettement plus que xine ou mplayer qui sont basiques à côté).


[Retour haut de la page ]

Xine

Installation

Dans ce paragraphe je détaille l'installation de la version tarball disponible sur le site officiel. Avant d'aller plus loin on pourra installer les packages suivants

lib64cdio-devel
lib64vcd-devel
lib64xt-devel
lib64xvmc-devel
lib64graphicsmagick-devel

j'ai dû créer préalablement ces deux liens

ln -s /usr/include/GraphicsMagick/wand/ /usr/include
ln -s /usr/include/GraphicsMagick/magick/ /usr/include

On  récupérera xine à l'URL xine.sourceforge.net. On décompresse la première archive en tapant

tar xvf xine-lib-1.2.11.tar.xz

Cela donne le répertoire xine-lib-1.2.11 dans lequel on tape

./configure

Voici le résultat

xine-lib summary:
----------------
 * input plugins:
   - file          - stdin_fifo
  * Network:
   - rtsp          - rtp
   - net           - pnm
   - http          - ftp
   - https         - ftpes
   - gopher
   - tls
   - mms
   - IPv6
   (disabled plugins: sftp scp nfs smb)
  * Optical discs:
   - cdda
   - vcdo
   - vcd
   - dvd (external libs)
  * Devices:
   - dvb
   - v4l2
   (disabled plugins: v4l)
  * Misc:
   - vdr
   - avio (libavformat)
   - test
   (disabled plugins: gnome-vfs)

 * demultiplexer plugins:
   - 4xm            - aac
   - ac3            - aiff
   - asf
   - avformat (with libavformat)
   - avi            - cdda
   - ea wve         - film
   - FLAC
   - FLAC (with libFLAC)
   - fli            - flv
   - idcin          - iff
   - image
   - interplay mve  - ivf
   - matroska
   - mng
   - mod
   - mpeg           - mpeg_audio
   - mpeg_block     - mpeg_elem
   - mpeg_pes       - mpeg_ts
   - Nosefart (NSF)
   - nsf            - nsv
   - ogg
   - psx str        - pva
   - qt/mpeg-4      - raw dv
   - real/realaudio - roq
   - smjpeg         - snd/au
   - vmd            - voc
   - vox            - vqa
   - wav
   - wc3 mve        - ws aud
   - yuv4mpeg2
   (disabled plugins: WavPack)

 * video decoder plugins:
   - MPEG 1,2 (libmpeg2)
   - Amiga Bitplane
   - Raw RGB
   - Raw YUV
   - dxr3_video
   - gdk-pixbuf
   - image
   - libjpeg
   - libpng
   - theora
   - vdpau
   - libvpx (VP8/VP9)
   - libaom (AV1)
   - ffmpeg
   (disabled plugins: w32dll mmal OpenHEVC dav1d)

 * audio decoder plugins:
   - linear PCM
   - dvaudio
   - GSM 06.10
   - faad
   - Nosefart (NSF)
   - FLAC (with libFLAC)
   - speex
   - vorbis
   - MAD (MPG 1/2/3) (*INTERNAL* library)
   - DTS (*INTERNAL* library)
   - A52/ra-dnet (external library, float math)
   - Musepack (*INTERNAL* library)
   - ffmpeg
   (disabled plugins: w32dll WavPack)

 * subtitle decoder plugins:
   - spu             - spucc
   - spucmml         - sputext
   - spudvb
   - PGS (BluRay)    - TextST (BluRay)
   - dxr3_spu

 * post effect plugins:
  * planar video effects:
   - invert          - expand
   - eq              - eq2
   - boxblur         - denoise3d
   - unsharp         - tvtime
   - postproc
   - vdr
  * SFX:
   - goom            - oscope
   - fftscope        - mosaico
   - tdaudioanalyzer
  * Audio:
   - upmix           - upmix_mono
   - volnorm         - scretch

 * video driver plugins:
   - OpenGL 2.0 (with bicubic scaling)
       - X11 (GLX) backend
       - X11 (EGL) backend
       - Wayland (EGL) backend
   - XShm (X11 shared memory)
   - Xv (XVideo *shared*)
   - XxMC (XVideo extended motion compensation)
   - OpenGL (with GLU support)
   - vaapi (Video Acceleration (VA) API for Linux)
   - vdpau (X11 Video Decode and Presentation API for Unix)
   - XvMC (XVideo motion compensation)
   - xcb-shm (X shared memory using XCB)
   - xcb-xv (XVideo using XCB)
   - aa (Ascii ART)
   - fb (Linux framebuffer device)
   - sdl (Simple DirectMedia Layer)
   - dxr3 (Hollywood+ and Creative dxr3, mpeg video only)
   (disabled plugins: sunfb caca directfb directx stk macos mmal vidix)

 * audio driver plugins:
   - alsa (ALSA - Advanced Linux Sound Architecture)
   - Jack
   - oss (Open Sound System)
   - pulseaudio (PulseAudio sound server)
   (disabled plugins: CoreAudio directx esd fusionsound irixal sun sndio)
---

On tape ensuite

make

j'ai dû également dans le fichier src/video_dec/Makefile effacer dans la variable CFLAGS les occurrences de -Werror-implicit-function-declaration

puis en tant que root

make install

Dans le fichier /etc/ld.so.conf on rajoute les lignes

/usr/local/lib/xine/plugins/2.8
/usr/local/lib/xine/plugins/2.8/post

On tape alors, toujours en tant que root

ldconfig

Maintenant on décompresse la deuxième archive en tapant

tar xvf xine-ui-0.99.12.tar.xz

Cela donne le répertoire xine-ui-0.99.12 dans lequel on tape successivement

./configure
make

Puis en tant que root

make install

[Retour haut de la page ]

Utilisation

On lance xine en tapant simplement

xine

Voilà le résultat avec le skin CelomaChrome

Xine a le look d'un lecteur de DVD de salon



Vous trouverez d'autres skins ici http://rpm.pbone.net/index.php3/stat/4/idpl/12097414/dir/fedora_1/com/xine-skins-1.8-1.fr.noarch.rpm.html il sera peut être nécessaire de l'installer en omettant les dépendances (urpmi --allow-nodeps).
Les skins vont se retrouver sous /usr/share/xine/skins il faudra les copier sous /usr/local/share/xine/skins il suffit de les décompresser sous /usr/local/share/xine/skins.

xine est capable de lire les fichiers vidéo utilisant les codes compatibles MPEG1 (VCD) ou MPEG2 (SVCD) et même MPEG4 (xvid ou DivX). Il lit les DVD dès lors que vous avez installé libdvdcss il n'est plus nécessaire d'installer un quelconque plugin (xine-dvdnav, d4d, d5d, ...) tout est inclus dans xine-lib.


[Retour haut de la page ]

MPlayer

Le site officiel est http://www.mplayerhq.hu/design7/news.html  On récupérera la dernière version stable MPlayer qu'on décompresse en tapant

tar xvf MPlayer-1.5.tar.xz

Cela donne le répertoire MPlayer-1.5. Auparavant on va décompresser les codecs windows qu'on récupérera dans la section download du site. On crée d'abord le répertoire d'accueil:

mkdir /usr/local/lib/win32

Dans lequel on copie les codecs

cp essential-20071007.tar.bz2  /usr/local/lib/win32/

Qu'on décompresse après s'être placé sous /usr/local/lib/win32/

tar xvfj essential-20071007.tar.bz2 

Dans le répertoire essential-20071007 ainsi obtenu on tape

mv * ..

Vous pouvez supprimer maintenant le répertoire /usr/local/lib/win32/essential-20071007.
Revenons dans le répertoire mplayer, on tape alors

./configure --language=fr --enable-gui

Je n'ai pas activé live555 car ça plante à la compilation. En fin de ./configure on a les principales options qui seront utilisées pour la compilation de MPlayer

Config files successfully generated by ./configure --language=fr --enable-gui !

  Install prefix: /usr/local
  Data directory: /usr/local/share/mplayer
  Config direct.: /usr/local/etc/mplayer

  Byte order: little-endian
  Optimizing for: native

  Languages:
    Messages/GUI: fr
    Manual pages: fr
    Documentation: fr

  Enabled optional drivers:
    Input: dvdnav ftp pvr tv-v4l2 tv librtmp cddb cdda dvdread vcd dvb networking
    Codecs: libdav1d libvpx x264 xvid ffmpeg(internal) real xanim libopus faad2 faac libmpeg2 liba52 mpg123 libtheora libgsm speex libvorbis twolame libmad liblzo OpenJPEG
    Audio output: alsa openal jack pulse oss v4l2 sdl mpegpes(dvb)
    Video output: v4l2 matrixview opengl sdl pnm jpeg mng mpegpes(dvb) fbdev aa ggi xvidix cvidix vdpau xv x11 xover yuv4mpeg md5sum tga

  Disabled optional drivers:
    Input: vstream radio tv-v4l1 tv-dshow live555 nemesi bluray smb
    Codecs: libaom crystalhd libdv libopencore_amrwb libopencore_amrnb qtx win32 ilbc musepack libdca toolame gif
    Audio output: sndio sun nas esd arts dxr2
    Video output: zr zr2 dxr3 dxr2 vesa gif89a svga caca winvidix 3dfx xmga dga xvmc directfb dfbmga bl xvr100 tdfx_vid wii s3fb tdfxfb mga

On peut taper make si vous rencontrez l'erreur

/bin/ld: ffmpeg/libavcodec/libdav1d.o: in function `libdav1d_receive_frame':
libdav1d.c:(.text+0x2d8): undefined reference to `dav1d_get_event_flags'

./configure --language=fr --enable-gui --disable-libdav1d-lavc

undefined reference to `__pow_finite'

il faudra éditer le fichier config.mak et au niveau de la variable CFLAGS supprimer --ffast-math on retape make

puis en tant que root make install

A présent on peut récupérer les thèmes dont le thème par défaut s'appelle Blue. On le copiera sous /usr/local/share/mplayer/skins

cp Blue-1.13.tar.bz2 /usr/local/share/mplayer/skins

Dans ce répertoire on tape ensuite successivement

cd /usr/local/share/mplayer/skins
tar xvfj Blue-1.13.tar.bz2
ln -s Blue default

C'est fini on peut taper MPlayer en tapant

gmplayer

Et voilà le résultat

La vidéo apparaît dans une fenêtre séparée et non pas dans la petite fenêtre. Autre vu de MPlayer en utilisant un skin copiant lecteur bien connu...

MPlayer est capable de lire à peu près tous les formats (MPEG1, MPEG2, MPEG4, ...), y compris le format DV brut ! Pour lire les DVD dans le menu (clique bouton droit de la souris sur la fenêtre d'affichage) DVD->Ouvrir un disque, puis DVD->Langues audio->French. Il reconnait également les conteneurs ogm et les matroska.

Ca n'a pas grand chose à voir avec la vidéo, mais MPlayer permet de pouvoir écouter la radio !  Une liste des radios francophones peut se trouver ici https://doc.ubuntu-fr.org/liste_radio_france il suffit d'en choisir une et de taper le lien

mplayer http://direct.francebleu.fr/live/fbarmorique-midfi.mp3

[Retour haut de la page ]

Streaming vidéo

Présentation

Nous allons nous servir de vlc

Diffuser une vidéo vers un poste en particulier

Il suffit de taper la commande

vlc video.avi --sout '#std{access=udp,mux=ts,dst=192.168.26.50:1234}'

192.168.26.50 est l'adresse IP du poste client et 1234 le port de diffusion, sur le poste client pour recevoir le flux, il suffit de taper

vlc udp://@:1234

[Retour haut de la page ]

Faire du streaming sur un réseau

Le streaming permet la réception sur plusieurs postes clients d'un réseau

vlc video.avi --sout '#std{access=mmsh,dst=:1234}'

pour la réception de n'importe quel poste client, il suffit de taper

vlc mmsh://serveurdiffusion:1234

serveurdiffusion étant le nom du serveur de diffusion et 1234 le port de diffusion.

pour transcoder puis diffuser en UDP multicast à l'adresse 224.1.0.200 on tapera

vlc video.avi --sout '#transcode{vcode=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}
:standard{access=udp,mux=ts,dst=224.1.0.200,sap,name="monflux"}
'

pour diffuser simplement en UDP multicast à l'adresse 224.1.0.200 on tapera

vlc video.avi --sout '#duplicate{dst=standard{access=udp,mux=ts,dst=224.1.0.200,sap,name="monflux"}}'

pour lire le fichier il suffit de taper

vlc udp:@224.1.0.200

le flux multicast pouvant être stoppé par les routeurs on pourra rajouter à la commande de diffusion l'option --ttl X avec X qui correspond au nombre de routeur.

[Retour haut de la page ]

Vidéo à la demande (VoD)

Il faut lancer le serveur manager de video à la demande accessible sur le serveur de diffusion par telnet

vlc --extraintf telnet --telnet-password videolan  --rtsp-host 192.168.1.11:1234 

le mot de passe au serveur de diffusion sera videolan, son adresse 192.168.1.11 et le port de diffusion 1234, on va maintenant rajouter des vidéos. On se connecte sur le serveur par telnet, le port par défaut étant 4212

telnet 192.168.1.11 4212
Trying 192.168.1.11...
Connected to 192.168.1.11.
Escape character is '^]'.
Password:
Welcome, Master
>

pour rajouter une vidéo après le prompt on tape

> new canal1 vod enabled setup canal1 input "/maurice/video/perso/tahiti/danses/danses-marquisiennes-xvid.avi"

pour en rajouter une deuxième

> new canal2 vod enabled setup canal2 input "/maurice/video/perso/tahiti/dansesmangareva.avi"

Maintenant d'un poste client pour lire le canal1 on va taper

vlc rstp://192.168.1.11:1234/canal1

 

[Retour page d'accueil FUNIX]

[Retour haut de la page ]