Mis à jour le 8 avril 2022.
Le 19 mars 2022, je vous expliquais comment convertir une vidéo en Av1 Opus avec FFmpeg et SvtAv1 avec Linux, aujourd’hui, je vais vous expliquer comment convertir une vidéo en 1080p AC-3, DTS ou Dolby Digital en 720p Av1 Opus 5.1 avec FFmpeg et SvtAv1.
Pourquoi convertir une vidéo 1080p en 720p :
Pour gagner de la place sur votre disque dur. Que cela change-t-il visuellement ?
Visuellement, si vous regardez votre vidéo sur votre PC ou une télé avec un écran de 22 pouces ou moins, vous ne verrez pas la différence.
Donc, vous allez rajouter une option à la ligne de commande de conversion de la piste vidéo :
ffmpeg -i video.1080p.5.1.H265.mkv -map 0:v:0 -pix_fmt yuv420p10le -vf scale=1280:-1 -f yuv4mpegpipe -strict -1 - | SvtAv1EncApp -i stdin --preset 6 --keyint 240 --input-depth 10 --crf 30 --rc 0 --passes 1 --film-grain 0 -b Outfile.ivf
Remplacez video.1080p.5.1.H265.mkv
par le nom de votre fichier.
Qui y a-t-il de changé ?
J’ai ajouté -vf scale=1280:-1
à la ligne de commande.
Souvent si on fait une recherche sur internet on tombe sur l’option -vf scale=-1:720
, ceci est une erreur (la plupart du temps). Pourquoi ?
Car la hauteur de la vidéo résultante de la conversion sera de 720 pixels et c’est ce qu’on demande à FFmpeg avec l’option -vf scale=-1:720
, ce n’est pas gênant si la vidéo est en 16/9e, mais si le ratio de la vidéo d’origine n’est pas en 16/9e par exemple en 2,35:1, ou la hauteur de la source est inférieur à 1080 pixels, la largeur de la vidéo résultante ne sera pas de 1280 pixels, car FFmpeg aura respecté le ratio de la vidéo pour la conversion, elle aura une largeur supérieure et une vidéo en 720p considère que la largeur et la hauteur doit être de 1280x720 pixels au maximum, donc elle ne sera pas en 720p. Comme les vidéos en 1080p ont en très grande majorité une hauteur de 1080 pixels ou inférieure, il est donc recommandable d’utiliser l’option -vf scale=1280:-1
.
Et si la résolution de la vidéo d’origine en 1080p a une largeur inférieure à 1920 pixels comme les vieux films ou les émissions de télé avant le passage au 16/9e par exemple une vidéo avec un ratio de 1,33:1 ? Là vous devrez utiliser l’option -vf scale=-1:720
, car la hauteur de la vidéo d’origine en 1080p sera de 1080 pixels donc la vidéo résultante sera forcément en 720p.
Pour terminer la conversion de la vidéo, vous allez réutiliser une des deux commandes suivantes déjà utilisées dans l’article cité plus haut :
ffmpeg -i Outfile.ivf -i videdo.1080p.5.1.H265.mkv -map 0:v -map 1:a:0 -map 1:s? -c:v copy -c:a libopus -af channelmap=channel_layout=5.1 -b:a 250k -vbr on -c:s -max_interleave_delta 0 FinalProduct.mkv
Remplacez videdo.1080p.H265.mkv
par le nom de votre fichier vidéo d’origine.
Remplacez FinalProduct.mkv
par le nom que vous voulez donner à votre fichier final.-map 1:s?
et -c:s
dans les deux dernières commandes vous permettrons de copier les sous-titres de la vidéo source s’il y en a de disponible.
-max_interleave_delta 0
permet d'éviter l'erreur Starting new cluster due to timestamp
.
Voilà, c’est fini. Vous pouvez supprimer le fichier Outfile.ivf
.