Auteur Sujet: Encodage vidéo  (Lu 5479 fois)

0 Membres et 1 Invité sur ce sujet

Je me suis rendu compte que faire une vidéo ce n'est pas si simple qu'on pense. C'est d'autant plus dur si on veut avoir une vidéo de bonne qualité.

Donc voilà comment j'ai fait pour http://adinpsz.org/data/adinpsz_-_Extatique.mp4, peut-être que ca sera utile à quelqu'un. je voulais une qualité haute quitte à ce que ca fasse 350 mo.

Les formats communs :

  • Video : si j'ai bien compris, pour la qualité on a le choix entre deux formats.

    • Xvid: bon support chez les gens
    • MPEG 4 AVC: aussi appelé H.264, donne une qualité meilleure au même bitrate


  • Audio :

    • MP3 : vous connaissez
    • AAC : meilleur qualité que MP3 au même bitrate


Un fichier vidéo est souvent un conteneur qui contient un flux audio et un flux video. Mais les règles de composition sont complexes (http://en.wikipedia.org/wiki/Comparison_of_container_formats).

Important: un conteneur MPEG 4 standard ne devrait contenir que du AAC.
C'est pourquoi notre vidéo a des soucis avec certains lecteurs : elle contient du MP3 au lieu d'AAC. Donc: sortez toujours la musique à muxer en AAC.
Cependant si vous voulez envoyer la video sur des sites de streaming qui réencodent (youtube/vimeo/dailymotion) je conseille de sortir une autre version avec du WAV histoire d'avoir une qualité audio un peu moins dégueulasse.

Les softs :

  • kkapture : un soft de Ryg qui permet de rendre une démo offline avec un timestep constant. Du coup c'est très précis temporellement et ca permet des grosses résolutions.
  • Fraps : un soft assez connu qui permet permet d'afficher les FPS, de faire des captures video et des screenshots. Ca marche des fois là ou kkapture marche pas, mais c'est moins précis temporellement. Du coup, faut éviter sauf si vraiment kkapture marche pas.
  • Virtualdub et virtualdubmod : ca à l'air bien comme ca, mais en fait je n'en vois pas trop l'intérêt.

  • Avisynth : un langage de script qui permet de manipuler des videos.
    Ca ressemble à ça:


    function processInput(clip c)
    {
        return c.KillAudio.AssumeFPS(60).ChangeFPS(30,1,false).AssumeFPS(30).Crop(0,96,0,-96).Lanczos4Resize(1280, 720)   
    }

    clip1 = processInput(AVISource("az02 2009-11-18 18-12-31-39.avi"))
    clip2 = processInput(AVISource("az02 2009-11-18 18-16-00-37.avi"))
    clip3 = processInput(AVISource("az02 2009-11-18 18-18-58-28.avi"))

    clip1 + clip2 + clip3

    ConvertToYV12()


    NB:
    - Toutes les variables représentent des vidéos,
    - pas de déclarations,
    - une opération s'applique implicitement sur le résultat précédent si rien n'est précisé

    Ca fait vraiment gagner énormément de temps par rapport à utiliser virtualdub ou équivalent, plus besoin de répéter les mêmes opérations à chaque fois qu'on teste un truc. De plus, les modules du langages sont de bonne qualité (exemple: Lanczos4Resize, pas dispo dans virtualdub).

  • x264 : l'encodeur H.264 le plus respecté du marché (il est libre d'ailleurs  ;)). Le codeur du projet a un blog où il bashe les autre codecs. Le format d'image intra-frame est meilleur que JPEG 2000. Bref, ca gère.

    Pas besoin de le télécharger car il est inclut dans...

  • MeGUI : un front-end graphique pour x264, qui de plus fait pas mal de choses utiles (mux/demux). Un truc très bien aussi c'est qu'il automatise les encodages en N passes. Or pour le H.264 c'est bien d'avoir deux passes.

  • Nero AAC Codec : le codec AAC désigné comme le meilleur par un benchmark d'Hydrogenaudio.


D'où le pipeline #ponce-approved :
kkapture => avisynth => MeGUI H264 2 pass => MeGUI mux avec AAC sorti par Nero AAC Codec


A lire absolument avant d'encoder en H.264 : http://arkanis.de/weblog/2010-08-05-creating-a-valid-and-working-mp4-video

C'est super intéressant !


Moi je conseille à ceux qui ont des cartes NVIDIA modernes d'aller zieuter du coté de MediaCoder:

Le truc en lui-même est chiant et instable comme tout ( trop tweakable peut être?? ) mais en réglant correctement l'encodeur CUDA intégré, ca encode en H264 1 pass (mais fichier petit et qui semble de bonne qualité quand même) du ripp DVD de 1h50 en 20mn !!!

Je pense même qu'il y a surement moyen de créer un autre GUI qui permettrait d'encoder directement avec la meilleurs qualité et compatibilité possible en respectant les specs de chaque conteneurs de manière bien plus simple et stable que ne propose le GUI actuel...

http://www.mediacoderhq.com/index.htm

Même si ca va vite c'est dommage de faire du 1-pass.

Ponce: certes mais je ne crois pas que la qualité soit moins bonne ni la taille vraiment plus grosse que du 2-pass...

Moi j'en sais rien, sur le forum doom9 c'est ce qu'ils disent alors je les crois  :P

Faut pas non plus me faire confiance à moi, faut checker ^^;;;;

Sinon, quand on a pas envie de se prendre la tête, y'a Handbrake. ;)

Ça a l'air cool mais y a pas CUDA ??

J'avoue, la capture de Incubation avec Handbrake est bien.

[mec qui insiste mode]En fait dans Handbrake y a toujours moyen de faire un module CUDA non ?? [/off] ^^;;;

bon je l'ai check... ca semble dechirer... si les mecs intègrent l'encodeur CUDA ca va pulsé ^^