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
Code language: CSS (css)
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%
Code language: PHP (php)
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
Code language: PHP (php)
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
Code language: JavaScript (javascript)
Et voilà! Simple et efficace.