Val et Yves Jeanne Etienne et Alois Photos Liens Tech FAQ
[ Tech. ] [ Linux ] [ Musique ] [ Films ] [ Multimédia ] [ Images ] [ Jeux ] [ Web ]
maj : 28/10/2003

Films :

Notions d'encodage de film

L'audio et la vidéo d'un film sont encodés séparément.

Le conteneur est le format qui permet d'enregistrer un fichier unique qui contient en plus les informations de synchronisation.
- Les fichiers .avi contiennent en général des DIVX,
- les .mov ou .qt des Quicktime,
- les .mpg ou .mpeg des MPEG,
- les .rm pour Realmedia
- et bientôt .mkv pour les mastroka.

La vidéo peut être enregistrée sous différents formats (des codecs)
- Historiquement, le premier est mpeg1 toujours utilisé pour les VCD ou les appareils photos numériques.
- Le mpeg2 est apparu plus tard pour une meilleur qualité des images de plus grande taille. C'est le format des DVD.
- Le mpeg4 à été créé pour diminuer la taille des fichiers encodés : les divx. De nombreuses variantes et évolution du mpeg4 existent Xvid qui est un format libre et sans doute le plus performant, rv9 de realvideo et les différentes variantes de Microsoft.

Le son est également encodé sous différents formats / codecs.
Il est généralement encodé en ac3 pour les DVD, mp2 pour les VCD, mp3 pour les divx, ou encore ogg le format libre.

En attendant gstreamer qui sera probablement totalement intégré dans la prochaine version stable de debian ...

Le logiciel incontournable : mplayer
Ici avec le thème : OS-X brushed http://ryan.adeptit.com.au/

  • Visualiser
    mplayer

    Mplayer lit un peu près tous les types de formats vidéo existant, les fichiers abîmés, les flux (streaming) sur le réseau, les fichiers audio, les DVD, VCD, les cartes TV, ...
    Il se contrôle au clavier : on peut avance image pas image avec les flèches du clavier. Son interface graphique (gmplayer ci-dessus) permet le contrôle à la souris. On peut également utiliser une télécommande infrarouge classique.
    Pour terminer, il est capable d'encoder avec mencoder, tous ce qu'il est capable de visualiser il peut le réencoder sous un autre format !

    Personnellement je préfère le compiler qu'utiliser un package tout fait, ça me permet de contrôler que je dispose bien des bonnes librairies :

    ./configure --enable-gui ---language=fr
    make
    make install
    
    Pour windows utilisez BsPlayer. Il installera les codecs Divx et est nettement plus performant que Windows Media Player.

    Exemple de film divx : c'est une qualité VHS à apprécier en plein écran en s'éloignant à une distance classique comme pour une télévision.

    extrait-dora.avi
    -----------
    Video: mpeg4, 384x288, 25.00 fps, 800 kb/s
    Audio: mp3, 44100 Hz, mono, 48 kb/s
    11M     extrait-dora.avi
    -----------
    

  • DVD / VCD ...

    Mplayer ne détecte pas automatiquement les DVD et VCD, et j'ai la flemme de cliquer trois fois avant de lire un DVD, j'ai fait alors un script :
    Radios

    Le script perl utilise Xdialog :
    - "Directement Film" permet de visualiser le film sans attendre les menus et pub ...
    - "-> TV" permet d'utiliser la sortie télé de la carte vidéo, j'envoie alors le signal sur un émetteur hertzien pour une télé dans notre chambre. Ma carte vidéo est a base de processeur nvidia, j'utilise nvtv pour gérer la sortie TV.

    #!/usr/bin/perl
    #
    
    $IconFile="/usr/local/share/scripts/dvdtv.xpm";
    
    $REP="/cdrom";
    
    opendir(DIR, "$REP") || die "$REP: $!";
    my @enregistrements = readdir(DIR);
    closedir(DIR);
    
    my $Film="";
    my $i=1;
    my $index=0;
    foreach $film (@enregistrements) {
    
    if ($film=~/\.avi$/i || $film=~/\.mp[e]?g$/i || $film=~/\.mov$/i) {
            $Film=$Film."$i \"Film : $film\" \\\n";
            $lFilm{$i}=$film;
            $i++; $Film=$Film."$i \"TV : $film\" \\\n";
            $lFilm{$i}=$film;
            }
    
    if( -d "/cdrom/vcd") {
            $Film="  5 \"VCD\" \\
                     6 \"VCD -> TV\" ";
            $index=1;
            }
    
    if( -d "/cdrom/video_ts") {
            $Film="  1 \"Directement Film DVD\" \\
                     2 \"Directement Film DVD -> TV\" \\ 
                     3 \"DVD avec menus\" \\
                     4 \"DVD avec menus -> TV\"";
            $index=1;
            }
    
    }
    
    if (!$Film) {
    $Film="  1 \"Directement Film DVD\" \\
             2 \"Directement Film DVD -> TV\" \\
             3 \"DVD avec menus\" \\
             4 \"DVD avec menus -> TV\" \\
             5 \"VCD\" \\
             6 \"VCD -> TV\"";$index=1;}
    
    $exec="Xdialog --stdout --no-tags --icon=$IconFile --default-item 1 --title \"Film\" \\
            --menu \"Sélectionnez le type de visualisation\" 0 0 6 \\
            $Film";
    
    $result=`$exec `;
    
    if ($? == 0) { 
    chomp $result;
    $tv=!($result%2);
    
    
    if ($tv) {
    print "\nTV";
    &TV();
    }
    
      if ($index == 0 ) {
            system("gmplayer \"$REP/$lFilm{$result}\"") if (!$tv);
            system("mplayer -stop_xscreensaver -fs -zoom -vo xv -screenw 800 -screenh 600 
    		-aop list=volume,volnorm:volume=70 
    		-alang fr -osdlevel 1 -quiet -cache 32000 -fixed-vo \"$REP/$lFilm{$result}\"") if ($tv);
            }
    
     if ($index == 1 ) {
            #system("gmplayer -dvd 1 -fs -alang fr -osdlevel 1 -fixed-vo") if ($result==1);
            system("gmplayer dvd://1 -fs -alang fr -osdlevel 1 -fixed-vo") if ($result==1);
            system("mplayer -stop_xscreensaver -fs -zoom -vo xv -screenw 800 -screenh 600 
    		-aop list=volume,volnorm:volume=70 
    		-dvd 1 -alang fr -osdlevel 1 -quiet -cache 32000 -fixed-vo") if ($result==2);
    
            system("esdctl off;
         (ogle -u cli 1> /dev/null; echo \"XXXX\" ) |
            Xdialog --title \"Patience...\"  --icon=$IconFile --no-buttons --infobox \"Patience...\" 0 58 0  ;
         esdctl on;
            ")  if ($result==3 || $result==4);
    
            system("gmplayer vcd:// -osdlevel 1") if ($result==5);
            system("mplayer -stop_xscreensaver -fs -zoom -vo xv -screenw 800 -screenh 600 
    		-aop list=volume,volnorm:volume=70 
    		-vcd 1 -osdlevel 1") if ($result==6);
            }
    
    if ($tv) {
    print "\nfinTV";
    &finTV();
    }
    print "\n";
    
    }
    
    
    sub TV()
    {
    system("nvtv -t -N -S NTSC --set Contrast:-20 --set Saturation:100 -r 800,600 -s Large");
    }
    
    sub finTV()
    {
    system("nvtv -N -m");
    }
    
    

Valid HTML 4.01!