Convertir une vidéo 1080p en 720p en Av1/Opus avec FFmpeg

Av1

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 1280×720 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.

gnu_logo.90
ignace72

S’abonner
Notification pour
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

4 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Cinos
2 années il y a

Personnellement j’utilise rav1e de cette façon pour mes archives de documentaires.

Une passe pour trouver le pic audio:
ffmpeg -hide_banner -ss 00 -i « Tourisme de masse – Faut-il arrêter de voyager -100296-000-.mp4 » -af earwax,volumedetect -vn -f null -y /dev/null

La conversion audio en Opus et en mono avec un débit très bas:
ffmpeg -nostats -hide_banner -ss 00 -i « Tourisme de masse – Faut-il arrêter de voyager -100296-000-A.mp4 » -vn -f wav -acodec pcm_s16le -af earwax,volume=12.2dB – | opusenc –bitrate 12 –framesize 40 –downmix-mono – audio.opus

La passe de coversion AV1 avec une qualité très faible qui convient pour mon cas (la vidéo est en 360p):
ffmpeg -nostats -hide_banner -ss 00 -i « Tourisme de masse – Faut-il arrêter de voyager -100296-000-A.mp4 » -vf scale,curves=linear_contrast,decimate=cycle=20 -pix_fmt yuv420p -f yuv4mpegpipe – | /usr/local/bin/rav1e –tiles 8 -y –quantizer 140 -s 10 – -o video.ivf

Assemblage des fichiers audio et vidéo:
ffmpeg -nostats -hide_banner -i video.ivf -i audio.opus -c:v copy -c:a copy -f webm « Tourisme de masse – Faut-il arrêter de voyager -100296-000-A.webm »

cinos
cinos
Répondre à  ignace72
2 années il y a

J’en conviens, pour ma part comme il s’agit de documentaires que je partage alentour (via une piratebox) je préfère un format léger.
Pour mes archives personnelles (dump de DVD par exemple) j’utilise plutôt VP9+Opus et dès que AV1 sera plus rapide à transcoder (qui sait si les nouvelles CG de Intel me le permetront ?) je passerais alors à ce format pour mes archives.

Il est vrai que mon commentaire aurait plus eu sa place sous l’autre billet. C’est juste que j’ai dû tomber sur l’actuel via une recherche web ou bien depuis mastodon et que je n’ai pas trop navigué sur le reste du site.

Ca fait du bien de voir qu’il y a d’autres personnes qui envisagent sérieusement des formats sans royalties.

Aller au contenu principal