Créer des sous-titres permanents pour ses vidéos avec ffmpeg sous Ubuntu

Nous allons voir ensemble sur ce tuto comment créer des sous-titres permanents pour ses vidéos avec ffmpeg sous Ubuntu; il ne s'agit donc pas de créer des fichiers de sous-titrage séparés pour les vidéos que l'utilisateur peut activer ou désactiver depuis son lecteur vidéo mais d'une véritable "gravure" des sous-titres sur la vidéo.

Le sous-titrage peut en effet être mis dans un fichier à part: un fichier - donc - de sous-titrage.. (l'évidence même! ) Il existe différents formats de fichiers de sous-titrage; le format le plus répandu et le plus simple à utiliser reste le format SRT.

Voici un peu le contenu d'un fichier .srt:

[numéro de la séquence]
hh:mm:ss,ms --> hh:mm:ss,ms
[Votre texte sur une ligne]
[ou sur deux]

Exemple:

1
00:00:20,000 --> 00:00:24,400
En réponse à l'augmentation de la criminalité dans certains quartiers

2
00:00:24,600 --> 00:00:27,800
Le gouvernement se félicite
pour les prochaines élections...

Vous pouvez créer vos fichiers de sous-titrage soit avec un éditeur de texte, soit plus simplement avec un éditeur de fichiers de sous-titres; le plus simple d'utilisation est Gnome SubTitles.

Maintenant que vous avez vos fichiers de sous-titres vous pouvez les utiliser directement avec vos vidéos mais vous aurez donc à préciser les deux fichiers à chaque fois avec votre lecteur de vidéo; chose qui n'est pas trop mal puisque vous pouvez définir plusieurs fichiers de sous-titres pour différentes langues et basculer entre ces langues dans votre lecteur vidéo. YouTube reconnaît aussi le format de fichier .srt et vous permet d'incorporer ces sous-titres.

Mais puisque ce tuto s'appelle "créer des sous-titres permanents pour ses vidéos" c'est ce qu'on s'attachera à faire!

Seul problème: les versions actuelles de ffmpeg disponibles dans les dépôts officiels d'Ubuntu ne supporte pas la "gravure" des sous-titres sur les vidéos! Il va falloir compiler ffmpeg à partir de sa source avec activation du mode de gravure des sous-titres sur les vidéos!

Ce tutorial a été testé avec une version x64 d'Ubuntu 13.10 mais reste valide pour les versions d'Ubuntu > 10.04. Si vous avez des problèmes n'hésitez pas à me les signaler!

Tout d'abord on va installer les dépendances:

sudo apt-get update
sudo apt-get -y install autoconf automake build-essential git libass-dev libgpac-dev \
  libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev \
  libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev
mkdir ~/ffmpeg_sources

Si vous ne l'avez pas remarqué on a créé un répertoire ffmpeg_sources dans votre dossier home qui servira à accueillir les fichiers à compiler. Vous pouvez bien-entendu le supprimer à la fin ou le garder pour vous en servir pour les mises-à-jour ultérieures.

Maintenant on va télécharger, compiler et installer: yasm, les encodeurs: x264, fdk-aac, libmp3lame, libopus et libvpx et puis finalement ffmpeg:

# yasm
cd ~/ffmpeg_sources
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xzvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make distclean
. ~/.profile

# x264
cd ~/ffmpeg_sources
git clone --depth 1 git://git.videolan.org/x264.git
cd x264
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean

# fdk-aac
cd ~/ffmpeg_sources
git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

# libmp3lame
sudo apt-get install libmp3lame-dev

# libopus
cd ~/ffmpeg_sources
wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
tar xzvf opus-1.1.tar.gz
cd opus-1.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

# libvpx
cd ~/ffmpeg_sources
git clone --depth 1 http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples
make
make install
make clean

# ffmpeg
cd ~/ffmpeg_sources
git clone --depth 1 git://source.ffmpeg.org/ffmpeg
cd ffmpeg
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
export PKG_CONFIG_PATH
./configure --prefix="$HOME/ffmpeg_build" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --bindir="$HOME/bin" --extra-libs="-ldl" --enable-gpl --enable-libass --enable-libfdk-aac \
  --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx \
  --enable-libx264 --enable-nonfree --enable-x11grab
make
make install
make distclean
hash -r
. ~/.profile

L'opération prendra un certain temps alors sirotez des carottes c'est bon pour la vue!

L'installation de ffmpeg et des encodeurs terminée vous pouvez passer à son utilisation. Si vous voulez mettre à jour votre installation (si vous avez conservé le dossier ffmpeg_sources dans votre home avec son contenu):

rm -rf ~/ffmpeg_build ~/bin/{ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm}
sudo apt-get update
sudo apt-get -y install autoconf automake build-essential git libass-dev libgpac-dev \
  libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev \
  libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev

# x264
cd ~/ffmpeg_sources/x264
make distclean
git pull
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean

# fdk-aac
cd ~/ffmpeg_sources/fdk-aac
make distclean
git pull
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

# libvpx
cd ~/ffmpeg_sources/libvpx
make clean
git pull
./configure --prefix="$HOME/ffmpeg_build" --disable-examples
make
make install
make clean

# ffmpeg
cd ~/ffmpeg_sources/ffmpeg
make distclean
git pull
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
export PKG_CONFIG_PATH
./configure --prefix="$HOME/ffmpeg_build" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --bindir="$HOME/bin" --extra-libs="-ldl" --enable-gpl --enable-libass --enable-libfdk-aac \
  --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx \
  --enable-libx264 --enable-nonfree --enable-x11grab
make
make install
make distclean
hash -r
. ~/.profile

Si vous voulez annuler les actions entreprises par ce tuto:

rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm}
sudo apt-get autoremove autoconf automake build-essential git libass-dev libgpac-dev \
  libmp3lame-dev libopus-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev \
  libvorbis-dev libvpx-dev libx11-dev libxext-dev libxfixes-dev texi2html zlib1g-dev
hash -r

Passons maintenant à comment graver vos sous-titres sur vos vidéos; rien de plus facile!

ffmpeg -i votre_video_entree.mp4 -vf subtitles=votre_fichier_de_sous_titre.srt votre_video_sortie.mp4

Voilà le tuto est terminé.. Vous ne vous y attendiez pas n'est-ce pas?! Rien de plus simple comme j'avais dit! Il y a bien-entendu d'autres paramétrages que vous pouvez régler (la police, la taille des caractères, la couleur, le fond, la position sur l'image..).. Il y en a en fait énormément dont certains qui me restent inconnus.. ffmpeg est un océan il faut dire et il n'y aura jamais assez de documentation pour couvrir les trucs qu'il est capable de faire!

Des questions?! Des remarques?! N'hésitez surtout pas!


Lire aussi: