Tag

MP4

Browsing

Quatre ans après le passage du codec XviD au codec x264, voici que la “scene” change de nouveau les règles du jeu : les fichiers SD et HD seront maintenant en .MKV (Matroska) et non plus en .MP4 pour les séries TV.

Depuis le 10 avril 2016, les nouvelles règles sont entrées en vigueur : si le codec x264 est bien gardé, le conteneur va lui changer – finis les fichiers portant l’extension MP4, ce seront maintenant des fichiers MKV (Matroska) que l’on pourra trouver sur la toile.

Séries TV: la scène délaisse le conteneur MP4 et passe au MKV photo
Daenerys est passée au MKV

Les raisons du changement de conteneur

Concrètement, la scène justifie ce changement de conteneur avec les évolutions des standards et de la qualité des encodages. Dans l’introduction des règles, on peut lire que “depuis la dernière révision du document qui date de 2012, TV-X264-SD a évolué et est devenu une section majeure à laquelle beaucoup de gens contribuent et dont beaucoup dépendent. Cette nouvelle révision vise à mettre à jour les standards pour 2016 et après.”

Ces règles sont à l’intention des groupes de la scène uniquement (qui s’échangent les fichiers entre eux via des topsites) mais la plupart des fichiers finiront entre les mains du grand public, partagés sur des sites publics. Cela signifie donc que ces changements vont impacter des centaines de millions de personnes à travers le monde, indirectement, par simple effet domino.

Les règles sont très exhaustives et abordent tous les aspects techniques de l’encodage des fichiers : normes audio, vidéo, formats, sous-titres… jusqu’au nom des tags des fichiers mais ce qui importe avec la mouture 2016 est la partie concernant le conteneur.

webm-logoAujourd’hui, si veut publier une vidéo sur Internet qui soit lisible sur quasiment toutes les plateformes nativement, il peut être très intéressant d’utiliser le format WebM (proposé pour HTML5).

WebM est un format multimédia ouvert basé sur un conteneur dérivé de Matroska, qui regroupe des flux vidéos encodés en VP8 et des flux audios encodés en Vorbis1. Ce format fait partie des formats vidéos proposés pour la balise video de HTML5.

Après avoir encodé nos vidéos H.264 (MP4) avec qt-faststart pour la lecture progressive, nous allons désormais proposer deux formats de vidéo lorsque nous intégrerons nos propres vidéos : le MP4 (format propriétaire) et le WebM (format libéré) pour un accès universel sur toutes les plateformes.

Encoder une seule vidéo MP4 en WebM

Il suffit d’utiliser avconv comme ceci :

avconv -i example.mp4 example.webm

ce qui nous donne comme résultat :

avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Apr  2 2013 17:02:36 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'example.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2013-09-24 10:52:45
  Duration: 00:43:27.39, start: 0.000000, bitrate: 294 kb/s
    Stream #0.0(eng): Video: h264 (Main), yuv420p, 320x240, 217 kb/s, 14.97 fps, 14.97 tbr, 2500 tbn, 5k tbc
    Metadata:
      creation_time   : 2013-09-24 11:23:01
    Stream #0.1(eng): Audio: aac, 32000 Hz, stereo, s16, 73 kb/s
    Metadata:
      creation_time   : 2013-09-24 11:23:01
[buffer @ 0x183ec80] w:320 h:240 pixfmt:yuv420p
[libvpx @ 0x183a4c0] v1.0.0
Output #0, webm, to 'example.webm':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2013-09-24 10:52:45
    encoder         : Lavf53.21.1
    Stream #0.0(eng): Video: libvpx, yuv420p, 320x240, q=-1--1, 200 kb/s, 1k tbn, 14.97 tbc
    Metadata:
      creation_time   : 2013-09-24 11:23:01
    Stream #0.1(eng): Audio: libvorbis, 32000 Hz, stereo, s16
    Metadata:
      creation_time   : 2013-09-24 11:23:01
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libvpx)
  Stream #0:1 -> #0:1 (aac -> libvorbis)
Press ctrl-c to stop encoding
frame=39032 fps= 39 q=0.0 Lsize=   86385kB time=2607.34 bitrate= 271.4kbits/s    
video:63500kB audio:21841kB global headers:4kB muxing overhead 1.217530%

Cela prend un peu de temps suivant la taille du fichier mais c’est assez simple.

Encoder toutes les vidéos d’un dossier en Webm

Allez, plus efficace : voyons maintenant comment nous pouvons traiter tout un lot de fichiers. Nous allons encoder tous les fichiers MP4 d’un dossier pour faire des fichiers WebM.

Tout d’abord, on exporte la liste des fichiers à traiter dans un fichier nommé list :

ls -1 *.mp4 | sed -e 's:\.[^./]*$::' > list

La commande sed nous permet ici de récupérer la liste des fichiers tout en omettant l’extension des fichiers.

Ensuite, on lance une boucle qui convertit chaque fichier au format WebM :

for i in `cat list`; do avconv -i "$i".mp4 "$i".webm ; done

Et voilà! Simple et efficace.

Dernièrement, j’ai eu l’occasion de jouer avec l’intégration d’un lecteur vidéo en HTML5 pour jouer des vidéos encodées en H.264 (format .MP4) pour un client. Il se trouve qu’aucune vidéo ne se lançait directement : le lecteur chargeait le fichier entièrement (plus de 60 Mo) avant de daigner jouer la vidéo.

h264-logoLa solution est toute simple : de la même manière que l’on peut créer un fichier JPG progressif (qui se charge de haut en bas, sans attendre le chargement total du fichier), il est possible de commencer à lire une vidéo sans que cette dernière soit totalement chargée, grâce à qt-faststart.

qt-faststart

qt-faststart est un outil inclus avec FFmpeg qui ré-arrange un fichier H.264 de manière à ce que le “moov atom” soit devant les données, ce qui facilite la lecture sans attendre le chargement complet.

Si votre fichier MP4 est déjà créé, lancez la commande ainsi :

qt-faststart source_file.mp4 destination_file.mp4

Si vous souhaitez créez un fichier avec l’option faststart nativement, lancez l’encodage FFmpeg avec l’option :

-movflags +faststart 

Et voilà! Les vidéos streament proprement.

Il y a quelques semaines, la “scene” s’est réunie pour discuter des standards des releases et a décidé d’abandonner le format XviD (.avi) au profit du format x264 (.mp4) pour les releases en SD (Simple Definition). Analyse de la situation.

Pourquoi ce changement ?

La raison invoquée dans le document intitulé The SD x264 TV Releasing Standards 2012 est que “le x264 est devenu le codec vidéo le plus avancé de ces dernières années, capable de fournir une meilleure qualité et une meilleure compression que le XviD à de plus grandes résolutions SD. Il permet aussi un meilleur contrôle et une grande transparence des réglages d’encodage”.

Les nouvelles règles sont donc édictées et les groupes qui ne s’y conformeront pas prennent le risque de voir leurs releases “nuked”.

Ce document est signé par les groupes ASAP, BAJSKORV, C4TV, D2V, DiVERGE, FTP, KYR, LMAO, LOL, MOMENTUM, SYS, TLA et YesTV. Autant dire qu’à partir de maintenant, ce sera x264 pour tout le monde.

Qu’est-ce que cela change pour nous ?

Alors c’est simple, tout dépend de votre lecteur. Si vous lisez vos séries sur un iPod/iPhone/iPad, le MP4 ne posera aucun problème. Si votre platine DivX lit le MP4, aucun problème. Si vous avez une Freebox HD… vous l’avez dans le bab, il faudra convertir le fichier MP4 au format MKV (et je vous en parlerai très prochainement).

En gros, la scene a choisi un nouveau format bien moins répandu/lisible/universel que l’ancien. La raison évoquée (qualité d’image) me semble un peu éculée, étant donné que l’on reste en SD. Toujours est-il que toutes les releases sont maintenant en x264, ce qui signe l’arrêt de la diffusion des séries en XviD à moyen et long terme.