Doc /

Convertir une vidéo pour l'utiliser en html5

Il s'agit de convertir n'importe quel type de vidéo pour qu'elle soit lisible en html5,, c'est à dire avec n'importe quel navigateur web récent (en 2019);

Deux paramètres

Il y a deux paramètres à prendre en compte: d'une part le format de la vidéo et ensuite sa taille. Contrairement à ce qu'on veut vous faire croire, on ne peut pas mettre en ligne une vrai vidéo haute définition de qualité, le volume du fichier étant bien trop gros.

Très approximativement, une heure de tournage donne 10 Go (giga octets) de fichier. Croyez moi, vous ne voulez pas mettre ça en ligne...

Il faut dont réduire la taille du fichier sans le dégrader exagérément, le mp4 fait ça assez bien.

Ensuite il faut que votre vidéo soit lisible partout, par tout le monde. Aujourd'hui (Février 2019), la seule solution c'est une variante du mp4 obtenue par les moyens indiqués ici. N'importe quel mp4 ne convient pas! En particulier il faut que l'index du fichier, en gros la liste de ses images, soit écrite au début de la vidéo, pour que le navigateur puisse la diffuser dès le début de la lecture qui peut être longue - je parle non pas du temps de vision, mais du temps de téléchargement.

Premiers essais

J'ai déjà une doc en anglais : Using HTML5, sans doute en partie périmée. Ci-dessous mes derniers scripts. Ils sont écrits pour Linux, je ne sais pas les faire pour Windows. Si vous le faites sous windows, je peux publier vos travaux ici si vous voulez (ou mettre un lien).

movtohd-mp4-16x9-ffmpeg

D'abord, et ceci n'a rien à voir avec le web, j'ai pris l'habitude de faire une copie très haute définition de mes vidéos. Quand je fais un montage, cette version est obtenue avec kdenlive, mon logiciel de montage, mais quand il s'agit de petites vidéos sorties tout droit d'un appareil photo ou d'un téléphone, je les mouline avec ça:

#!/bin/bash
rep="mp4-hd" ;
mkdir  $rep ;
for a ; do
	b=`echo "$a" | cut -d'.' -f1` ;
	ffmpeg -i $a -af loudnorm -ar 44100 -b:v 12000k -movflags faststart  $rep/$b.mp4 ;
done
exit

Le titre du script est celui du chapitre (.sh pour Linux). Il s'exécute par:

 movtohd-mp4-16x9-ffmpeg *.MOV

MOV ou MTS ou mp4 ou tout ce que vous voudrez (3gp...), c'est juste le nom de la vidéo originale, ffmpeg lit tout.

Évidemment il faut qu'il soit installé sur votre PC, Linux, Mac ou Windows, peu importe ffmpeg existe.

Le script crée un répertoire où mettre le résultat (mkdir mp4-hd) puis, pour chaque vidéo, normalise le volume du son, place l'index au début (faststart) et crée le nouveau mp4 avec un débit de 12000b/s (bits par seconde) ce qui est suffisant pour la plupart des usages domestiques.

C'est tout et c'est déjà pas mal.

movtopiwi-mp4-16x9-ffmpeg

C'est plus ou moins le même script que ci-dessus. Mais au début j'y ai ajouté les instructions d'usage et il est destiné à ma galerie photo (Piwigo), y compris la création de vignettes.

Cette galerie n'accepte pas les noms de fichiers trop compliqués, d'où la nécessité d'utiliser detox, un utilitaire qui va supprimer les espaces ou les parenthèses, par exemple... (ce n'est pas fait par le script).

#!/bin/bash
# echo usage: movtopiwi.sh *.mp4
# Faire d'abord detox -s utf_8 *
rep=$(basename `pwd`) ;
mkdir $rep ;
mkdir $rep/pwg_representative ;
for a ; do
echo "traitement de " $a;
	b=`echo "$a" | cut -d'.' -f1` ;
	ffmpeg -i $a -af loudnorm -ar 44100 -b:v 1000k -movflags faststart  $rep/$b.mp4 ;
	ffmpeg -i $a -r 1 -t 00:00:01 -ss 0:0:05 -s 1920x1080 -f image2 $b.jpg ;
	convert -resize 128x128 $b.jpg $rep/pwg_representative/$b.jpg ;
	rm $b.jpg ;
done
exit

Le script va donc créer les répertoires nécessaires, puis vous informer de ce qu'il fait. Il traite ensuite comme ci-dessus les vidéos, mais avec un débit de seulement 1000 b/s (12 fois moins!). Vous verrez que le résultat n'est pas si mauvais.

Ensuite il extrait une image de la vidéo et la redimensionne à la taille des vignettes pour Piwigo.

Mise en ligne

Même réduites avec mon script, les vidéos restent des fichiers assez volumineux, je les transfère donc directement. Le plus simple pour vous est sans doute le "ftp" (par exemple avec filezilla), sous Linux openSUSE Leap, j'utilise tout bêtement Dolphin, mon explorateur en mode "fish", c'est une connexion sécurisée qui me permet d'explorer mon site en ligne comme s'il était local.

Variantes

J'ai d'assez nombreuses variantes de ce script, par exemple pour tourner de 90° les vidéos faites dans le mauvais sens par erreur :-)