Resynchroniser le son décalé dans une vidéo sous Linux avec Ffmpeg.

C'est pas très drôle de regarder une vidéo avec le son décalé, on va voir comment arranger ça !

Tout d'abord, si vous ne souhaitez pas modifier le fichier d'origine, certains lecteurs permettent de régler un décalage entre l'image et le son, c'est par exemple le cas de VLC (Outils -> Synchronisation des pistes -> onglet Synchronisation -> Audio / Video), mais on doit refaire la manipulation à chaque visionnage !

On va se servir de Ffmpeg, qui est une bibliothèque open-source pour l'audio et la vidéo. Servez vous de la technique ci-dessus avec VLC afin d'obtenir le décalage exact et le donner ensuite à Ffmpeg. Il ne reste plus qu'a exécuter cette petite commande :

ffmpeg -itsoffset -4.2 -sameq -i fichier.avi -i fichier.avi -ab 128k -ar 48000 -ac 2 fichier_synchronise.avi

L'option -itsoffset va avancer de 4.2 secondes le son par rapport à la vidéo. Attention, le signe de la valeur donnée par VLC précédemment est à inverser (si VLC vous donne 5s, mettez -5).

On prends donc en entrée notre fichier vidéo (-i fichier.avi) avec la même qualité d'image en sortie (-sameq). Notre deuxième entrée est le même fichier vidéo mais pour l'audio cette fois (second -i fichier.avi) avec des paramètres supplémentaires pour garder la même qualité, je n'ai pas trouvé d'option équivalente à -sameq pour l'audio donc on lui passe à la main (si quelqu'un a une meilleure solution, qu'il se fasse plaisir dans un commentaire). Vous trouverez de quoi remplir ces paramètres en lançant une première fois cette commande avec les valeurs bidon, vous obtiendrez un truc dans le genre :

Input #1, avi, from 'fichier.avi':
  Duration: 01:34:35.97, start: 0.000000, bitrate: 1653 kb/s
    Stream #1.0: Video: mpeg4, yuv420p, 512x400 [PAR 1:1 DAR 32:25], 29.97 tbr, 29.97 tbn, 29.98 tbc
    Stream #1.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s
et il ne vous reste plus qu'a remplacer par les valeurs de la ligne contenant "Audio :".

Alors, c'est pas mieux quand la voix du monsieur parle en même temps que sa bouche ?

Tags: , , , , ,

Dimanche 2 mai 2010 Linux, Petites astuces

6 commentaires pour Resynchroniser le son décalé dans une vidéo sous Linux avec Ffmpeg.

Éloi Rivard
Lundi 3 mai 2010

Petite coquille cependant, il semble que dans ta ligne de commande tu passes deux fois l'option « -i ».

Guillaume Delente
Lundi 3 mai 2010

L'explication se trouve dans la suite de l'article : effectivement il y a deux input, un pour le flux vidéo, l'autre pour le flux audio !

Fab
Mercredi 12 mai 2010

merci guitou Ca m'a bien servi cet article

Cad
Dimanche 7 août 2011

Merci pour la ligne de commande...

L'équivalent de -sameq pour l'audio est "-acodec copy".

Alf92
Lundi 6 février 2012

@ Cad :

non.
-sameq : utilise les mêmes paramètres de qualité pour une recompression dans le même codec ou un autre codec.
-acodec (ou vcodec) copy : direct srteam copy (pas de recompression).

Lodu971
Samedi 5 janvier 2013

Super, ça a marché pour moi : décalage de 12s (rien que ça p ) corrigé !!!
Merci pour ce truc Linux simple et rapide.

Loïc.

Laisser un commentaire

Recherche

"));