vendredi 19 mars 2010

encoder ses films avec le meilleur rapport taille des fichiers/qualité

Bon, on y est, voilà une des questions que la plupart des gens se posent.

Alors allons-y ! (article un peu long alors j'ai fait une petite conclusion à la fin concernant l'exportation des montages vidéos... Mais la lecture seule de la conclusion ne donne que les outils utilisés, pas les trucs pour les apprivoiser et les comprendre...)

Déjà, que signifie encoder ? Et bien il s'agit de transposer un flux audio ou vidéo en un format numérique déterminé et lisible par les matériels compatibles.

La vidéo brute prend beaucoup de place car chaque seconde contient énormément d'informations constituant images et sons.
Commençons par ce qui parait le plus simple, à savoir la résolution de la vidéo et son débit d'images.

  • La résolution.
    Votre œil expert aura sans doute repéré que la GoPro offre plusieurs modes d'enregistrement :
    1080p
    = correspond à un rectangle de 1920 pixels (un pixel correpondant à 1 point lumineux sur votre écran) de Longueur et 1080 pixels de largeur. Il s'agit d'un format de rapport 16:9e, exactement comme sur les écrans du même nom, c'est à dire dans un format "paysage".
    960p = 1280x960 pixels (4:3) : de par son format presque carré (c'est celui des télévisions classique d'il y a 10 ans), c'est le mode qui offre la plus grande couverture verticale.
    720p = 1280x720 pixels (16:9) : c'est le petit frère du mode 1080p.
    WVGA = 848x480 pixels (16:9) : personnellement je ne vois pas trop d'intérêt à ce format si ce n'est la taille réduite des vidéos, mais la perte de résolution est bien cruelle. Ça ne servait pas à grand chose de prendre la version HD de la GoPro si c'est pour utiliser ce format. Mais c'est un avis tout personnel.

    Pour ne pas trop s'étendre, le format le plus couramment utilisé est le 720p. C'est un peu le standard actuel, et qui offre déjà une très belle qualité d'image.
    Bref un très bon compromis, pour lequel un écran "HD ready" suffira (résolution de 720p) mais qui bien entendu passera également sur un écran "Full HD" de 1080p (d'ailleurs ceux qui ont des Full HD s'en contentent bien pour la Télévision en Haute Définition qui pour le moment ne diffuse qu'en 720p).

    Si votre écran n'est "que" (manière de parler) HD Ready (largeur de 720 pixels pour ceux qui suivent), vous n'avez pas d'intérêt particulier à filmer en mode 1080p, à part de parier sur l'utilisation avec votre prochain écran.
    Si vous avez un Full HD et que la taille des fichiers ne vous fait pas peur, optez pour le 1080p. Ceci dit, gardez à l'esprit qu'il vaut mieux un film en 720p bien encodé qu'un 1080p trop compressé.

    Vous restez libre d'encoder vos vidéos dans des résolutions inférieures (et donc de perdre en qualité) si pour vous seule la taille du fichier compte.
     
  • Le framerate
    Une vidéo est en fait un défilement d'images fixes. Plus le nombre d'image diffusées dans un laps de temps donné est grand, et plus l'impression de fluidité sera grande.
    La GoPro propose du 30fps (frame per second, soit le nombre d'images enregistrées par seconde) pour les 3 principaux modes (1080p,960p et 720p), et un mode 60fps en résolution 720p qui sera lui très intéressant pour ceux voulant créer de beaux ralentis au montage.
    Pour l'encodage vous pourrez sélectionner le framerate qui vous sied le mieux. Les 3 valeurs classiques sont : 24fps (format utilisé au cinéma), 25 fps (format Pal utilisé sur les télés en Europe) et 29,97fps -plus communément appelé 30fps et utilisé aux USA et Japon-.

    Personnellement je trouve que le "30fps" natif de la GoPro est un bon compromis pour l'export de vos vidéos en terme de compatibilité. Si vous lisez votre vidéo uniquement sur un téléviseur PAL, choisissez 25. On parle ici de fluidité et non pas de taille de fichier (voir la note sur le débit de données plus bas)

    Note : J'ai volontairement occulté les modes de vidéo interlacés. Si cela vous intéresse réellement vous pouvez toujours faire une recherche google, mais j'estime que c'est une notion dont on se passera très bien dans le cas qui nous occupe.


    Passons maintenant à la COMPRESSION.
    Compresser la vidéo consiste à transformer le format numérique de sorte à ce que le fichier soit moins grand. Il existe plusieurs sortes de compression :
  • La compression sans perte
    Avantages : Conservation de la qualité de la vidéo, taille de fichier un peu réduite par rapport au fichier brut.
    Inconvénient : Le fichier reste malgré tout très lourd.
    Pour faire simple, ne retenez qu'un nom : huffyuv (bon, enfin OK vous n'êtes pas obligés de le retenir) le top du codec de cette catégorie, si elle vous intéresse.
  • La compression avec perte.
    Elle va permettre de diminuer beaucoup plus franchement la taille du fichier.La contrepartie étant que plus on va chercher à diminuer cette taille et plus la qualité sera mauvaise.
    C'est là que ça devient intéressant, car dans la jungle de codecs de compression, il y a beaucoup de différences et d'inégalités.






    • La compression Spatiale (Intra Image)

      Vous connaissez sans doute l'extension de fichier JPG. Il s'agit d'un format d'image compressé et qui par conséquent dégrade l'image à chaque enregistrement.
      Pour garder l'analogie, les codecs entrant dans la catégorie de la compression spatiale effectuent ce genre de compression sur chaque image de la vidéo (la compression est intrinsèque à chaque image).

      La compression obtenue commence à être intéressante, mais pas optimale.
      Ce sont des codecs principalement axés sur le flux de production, c'est à dire le montage.

      En effet, les films ainsi encodés ne nécessitent pas des configuration d'ordinateurs très puissantes, et les effets appliqués sont généralement lus en temps réel même sur des images en haute résolution, bref c'est très pratique dans l'application de la technique reprise dans l'astuce en fin d'article Modifier ses fichiers pour faciliter le montage vidéo
      Le codec Pixlet d'Apple, pour exemple, fait partie de cette catégorie.

    • La compression Temporelle (Inter Images)
      On touche au but !!
      La compression temporelle est une sorte de compression dynamique et intelligente.
      Imaginons une scène de western. Une rue déserte et calme, un cow-boy qui marche.
      La compression temporelle va détecter que certaines parties de l'image sont fixes et d'autres non. Sur la séquence, on va donc avoir la première image qui sera complète, et dès la deuxième image il n'y aura plus que les informations relatives aux éléments ayant changé, le reste étant repris sur la première image.

      La deuxième image de la séquence n'aura donc que des informations sur le cow-boy qui a changé de position + un ordre pour récupérer les informations de la première image.
      Et évidemment, ça permet d'économiser beaucoup de place. Y'a vraiment des mecs ingénieux.
      La contrepartie, c'est que tout ce filoutage nécessite des calculs et que les vidéos ainsi encodées sont assez gourmandes en ressources système.

      Il peut être très (TRES) difficile de réaliser un montage avec ce genre de codecs, et vous devrez donc les réserver à l'export final de votre vidéo.

      Notons que la compression temporelle applique également une compression spatiale à chaque image afin de réduire encore un peu la taille des fichiers.

      Nous y voilà donc, on touche à notre Saint-Graal de la compression !

      Ce sont des codecs de livraison,
      optimisés pour des résultats de haute qualité.
      Détaillons les principaux codecs de ce type.
      • Le MPEG-2 est le papy du groupe. Il garantit une excellente compatibilité avec de multiples supports, et une très bonne qualité pour la diffusion, mais le ratio de compression/qualité d'image ne joue pas en sa faveur dès qu'il s'agit de comparer avec les petits nouveaux.

      • Le format WMV (series 9) est un format propriétaire de windows. Il a bonne presse, excepté concernant la compatibilité (et oui, c'est un format PROPRIETAIRE). Bref un codec performant, mais avec des restrictions d'utilisation, malgré le fait que microsoft essaie de le démocratiser pour l'imposer.

      • La norme de codage vidéo H.264 est celle réputée être la plus aboutie techniquement. Le codec x.264 en est issu et en représente la forme libre. Les taux de compression sont excellents pour une qualité d'image optimale. Ceci est entre autres lié au fait que le H.264 permet d'encoder avec des débits de données très faibles tout en garantissant la fluidité de la vidéo. Ce codec est généralement repris dans un conteneur appelé MP4.
        Oui, je sais, ça vous parle et pour cause, c'est le format utilisé par la GoPro pour écrire les fichiers sur la carte SD.
        Maintenant vous savez pourquoi les montages vidéos sont difficiles avec les fichiers natifs de la GoPro !
        Reste que ce codec demeure le plus approprié pour le stockage des exportations de vos montages vidéos.
        Pour un visionnage de qualité et la lecture sur vos disques durs, le standard de la norme H.264 appelé High Profile (HiP) sera très probablement celui que vous retiendrez, il correspond à la qualité Blu-Ray ou HD-DVD. Mais rien ne vous empêche de choisir un standard inférieur pour baisser la taille des fichiers, au détriment de la qualité.

    Il existe évidemment plein d'autres codecs. Citons par exemple le Sorenson, largement utilisé par Adobe dans son format Flash, mais qui est inférieur désormais techniquement à la norme H.264.

    Parenthèse pour les curieux :



    -Mozilla/Firefox promeut le Ogg Theora pour sa balise 'video' en HTML5. C'est quoi ?
    H.264 est un format protégé par des brevets logiciels et soumis à licence. Bref, pour l'utiliser, il faut raquer. Microsoft (internet explorer) et Google (Chrome), par exemple, ont mis la main à la poche à millions pour l'utiliser et le désignent comme leur format pour la norme HTML5. Apple (Safari), impliqué dans le développement, aussi.

    Theora est "libre". Il est protégé par des brevets, mais ceux-ci sont déposés de manière à ce que chacun puisse l'utiliser gratuitement et librement. Mozilla refuse d'implémenter un format payant, et Opera, eux ont fait savoir que de toute façons la licence était trop chère.
    Le problème du format Ogg Theora, c'est que la qualité est bien moins bonne que celle du H264.
    Reste un cas de conscience : le prix du H264 est amené à changer d'année en année. Sans concurrence, il sera difficile de faire marche arrière, et le prix de la licence risque de flamber (c'est ce qu'il s'est passé avec le MP3, par exemple).
    D'un côté, le H264 est plébiscité par les utilisateurs, et en choisissant un format moins bon Mozilla risque simplement de se couper de ces derniers et se condamner. De l'autre, si le H264 devient la seule référence HTML5 il y a des risques d'abus de position dominante. Reste Google qui a un rôle à jouer. Bien que possédant la licence H264, ils sont en passe de racheter une société de production de codecs vidéos prometteurs. Propriétaires également de Youtube, Google a un certain poids pour l'avenir du Web et pourrait donc bien équilibrer la balance en choisissant de faire la promotion de ses recettes internes.

  • Le débit de données
    Puisque j'ai abordé avec la norme de codage H.264 la notion de débit de données, sachez pour compléter cet article que c'est celui-ci qui va principalement déterminer la taille de votre fichier.
    Ainsi, un fichier MPEG-2 avec un débit de données de 10 Mbits/s aura la même taille quel que soit le frame rate choisi (24, 25, 29.97). Attention à ne pas confondre donc le frame rate qui détermine la fluidité (ou les saccades !) de votre vidéo, et le débit de données qui détermine sa taille.
    A débit de données constant et égal, une vidéo en 29,97 fps sera plus fluide avec des images de qualité légèrement inférieure à une vidéo de 24 fps.
    J'espère que c'est clair, sinon envoyez des commentaires.

    Le débit de données, c'est toute la force de la norme H.264 qui autorise de belles images à un débit de données faible.
    Pour une qualité d'image semblable, un fichier encodé en Pixlet devra avoir un débit de données de 40 Mb/s, un fichier MPEG-2 de 12 à 20 Mb/s et un H.264 "seulement" de 8 Mb/s

    Puisque ce débit de données conditionne la taille de fichier, voici quelques valeurs-exemples :
    Pour un fichier encodé en H.264, le débit de données pour :







    • une vidéo sur Youtube en 720p =2,11 à 2,25 Mb/s
    • une vidéo sur Youtube en 1080p = 3,5 à 4,2 Mb/s
    • Une vidéo de qualité équivalente DVD = 5.22 Mb/s
    • Une vidéo quasiment sans perte = 7 à 8 Mb/s

  • HO !!! Et le son ???

    oulah, ne vous énervez pas, je suis fatigué après ce long article.
    C'est vrai que dans un format numérique conteneur (MP4, AVI, WMV...) il y a un flux vidéo ET un flux audio.

    On va le faire court, vous pouvez utiliser le MP3, connu de tous. Le Ogg Vorbis, un peu plus confidentiel.

    Ou bien, pour un mariage parfait avec le H.264 vous pouvez utiliser le format audio AAC.

    Voilà-voilà.
    Conclusion :
    Le format que je privilégie personnellement pour l'exportation de mes montages reste le MP4 avec un codec video x.264 et un codec audio AAC. On vous laisse lire également l'article sur l'encodage en x.264 (ben oui, ça se mérite)
    Avis aux feignasses qui sont directement arrivées à la conclusion : pour les détails, lisez tout ! ;)

11 commentaires:

alpestour a dit…

Bravo pour ce site très interessant. Je possède une goproHD et j'ai hate de voir les prochains articles.

GoPro Cameras Hacks & astuces a dit…

Salut alpestour, merci pour le commentaire encourageant, n'hésite pas à nous faire part de tes remarques ou astuces et à nous envoyer tes plus belles réalisations pour enrichir le site !

GoPro.hacks c'est surtout le site de ses lecteurs :)

à bientôt !

Sakasim a dit…

Dans ce post tu parles de frame rate à 25 fps, j'ai une GoPro depuis quelques jours et je ne vois que des 30 fps ou 60 fps (format US). Est-ce que ton explication se voulais "générale" ou y'a t'il bien moyen de passer en 25 fps ou 50 fps ?

Super site, directement ajouter à mes favoris.

GoPro Cameras Hacks & astuces a dit…

Salut Sakasim,
Effectivement la GoPro ne propose que 2 framerates pour l'enregistrement, qui correspondent au format NTSC (29.97 en fait) et au double NTSC (2*29.97, soit presque 60 fps).

Il est toutefois possible de passer en 25 fps (norme PAL) en post production sur ton ordinateur, par conversion du fichier.
Souvent on le détermine avant de faire le montage, dans les propriétés du projet du logiciel de montage.

GoPro Cameras Hacks & astuces a dit…

Je m'aperçois tout juste de l'obsolescence du dernier commentaire. Depuis le firmware de septembre 2010, il est possible de filmer en PAL

François a dit…

excellente présentation !

GoPro Cameras Hacks & astuces a dit…

Merci pour ce commentaire très valorisant !

Anonyme a dit…

Une astuce pour les Mac User qui veulent transformer leur rushes Gopro H264 50 frames en apple Prores 422 ralenti25 images, utiliser le droplet d'apple. voici le lien pour le tuto: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?i=60270806&id=145112402
Voici le lien de téléchargement du droplet/ www.ilovehue.net/downloads/5d_dxa_to_proreshq.zip
Bon montage.

reivilo38 a dit…

juste une petite astuce pour trouver le meilleur ratio débit de données / qualité d'image. Après pas mal d'essais, j'ai mis au point une petite formule de calcul très simple :

Lxlx4 ou L est la base de l'image, par exemple 1280 dans le cas du 720p

l est la hauteur d'image, 720 dans le même exemple

dans ce cas précis on obtient 1280x720x4=3686400 ce qui donne

3686 kb/s pour le débit, dans le cas d'un encodage en 2 passes high profile 5.1.

résultat garanti ! si l'on veut gagner de la place pour la vidéo finale , on peut faire varier le coef de 4 en diminuant vers 3 mais pas en dessous car la qualité en prend un coup.

thor12 a dit…

Bonjour et merci pour ce tuto clair.
J'ai une question malgré tout. Concernant le codec H264 quel élément me permet de l'identifier avec tous les noms donnés.

Samuel Caulier a dit…

Merci beaucoup pour ce super article qui m'a appris énormément.

J'ai cependant encore un petit problème, j'ai filmé en 1080 pour mes 1eres vidéos sans me rendre compte que mon PC ne suivrait jamais la cadence...(je sais maintenant grâce à toi que le 720p est largement suffisant)
Je comprime ces fameuses vidéos en H264 et en 30Fps, mais ma vidéo est légèrement accélérée.

Comment remédier à ce problème ?

Merci par avance.