Apache et la gestion des fichiers webm

Je viens de mettre en ligne quelques screencasts. Mettre une vidéo sur le web est maintenant devenu à la portée du premier quidam: il suffit de choisir un format de fichier vidéo ouvert de type webm ou theora (ogv) et de les lier à une page HTML en utilisant la balise video.

Pour faire la vidéo au format Webm, il existe plein de moyens qui vont de la capture vidéo par ffmpeg au montage complet de rushs vidéos avec un outil dédié. Pour ma part, je préfere le moyen le plus adapté à la situation et, bien souvent, c'est par la ligne de commande: mon bureau étant sous i3, il est d'une apparence spartiate et il n'y a pas besoin de faire du montage pour supprimer toutes les fioritures. J'ai d'ailleurs rédigé une petite documentation sur le sujet.

Le logiciel que j'utilise pour "propulser" ce blog (et le reste aussi) est Ikiwiki. Il gère nativement la balise vidéo: il suffit de le rajouter à la main comme indiqué dans la documentation officielle.

J'avais néanmoins un souci: mes vidéos étaient indisponibles alors que le fichier était bien en ligne. Je me suis vite rendu-compte d'un élément important: lorsque vous stockez un fichier vidéo qui sera accessible par HTTP, vous devez faire en sorte que votre serveur renvoie le bon type MIME. Sinon, le navigateur web sera incapable d'afficher la vidéo (c'est plutôt une bonne pratique !).

Je fus surpris de voir qu'avec une vidéo OGV, ça fonctionnait très bien. En fouillant un peu, je me suis rendu compte que mon problème venait de la déclaration des types MIME dans Apache. Sous Debian, cette définition est située non pas dans la configuration d'Apache mais tout simplement dans le fichier /etc/mime.types. Ça peut sembler logique: on a besoin de gérer les types MIME dans de nombreux cas différents de l'utilisation d'un serveur HTTP...

L'explication du pourquoi tient simplement dans le fait que le fichier /etc/mime.types de Debian Squeeze est assez ancien et qu'il y manque la ligne:

 video/webm                                      webm

La correction fut triviale !