Linux: convertir une video MPEG4 (mp4) au format Webm

Aujourd’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.

Envie d'ajouter des fonctionnalités exceptionnelles à votre site WordPress ou WooCommerce? Je suis là pour vous aider.

Explorons les possibilités ensemble »

Articles conseillés :

Opinions