Convertir une vidéo en Av1 Opus avec FFmpeg et SvtAv1 avec Linux

Av1

Mis à jour le 8 juin 2022.

L’Av1 est un codec pour la vidéo et l’Opus est un codec pour l’audio.

Contrairement aux codecs H264 et H265 qui sont propriétaire et soumis à redevances, les codecs Av1 et Opus sont sous licences ouvertes. Les codecs Av1 et Opus ont l’avantage d’avoir des taux de compression les plus élevés du marché, par exemple, le codec Av1 a un taux de compression de 30 à 40 % supérieur au codec H265 et de 50 % supérieur au codec H264.

Le format Av1 bien que récent (2018) est déjà utilisé par Netflix, YouTube, Vimeo, Twitch, le service de cloud gaming Google Stadia et la PlayStation 4 Pro et il y en a sûrement que j’oublie. De même, de plus en plus de télévisions supportent ce format.

Cependant, ce format n’est pas prie en charge par toutes les caméras ou par les logiciels de montage. Aussi, faire du montage d’une vidéo en Av1 demande beaucoup de ressources et tout le monde n’a pas les moyens de se payer un ordinateur disposant de telles ressources. On doit donc créer notre vidéo en H264 ou H265 et utiliser FFmpeg pour convertir nos vidéos finis en AV1 Opus.

Installation

Pour convertir vos vidéos en Av1 et Opus, vous avez besoin d’installer deux logiciels (FFmpeg et MediaInfo) et le convertisseur SvtAv1, si besoin, vous pouvez installer MKVToolNix.

Avec votre gestionnaire de paquets préféré, installez ffmpeg, mediainfo et svt-av1 et si besoin, mkvtoolnix-gui.

Ces logiciels et le convertisseur existent pour MacOSX et pour Windows, mais je ne me suis pas penché dessus.

Utilisation

La conversion va être sans perte visible pour la piste vidéo et sans perte audible pour la piste audio.

MediaInfo n’est pas primordiale, car si l’encodeur audio Opus détecte une piste audio stéréo alors que la commande indique que l’audio est en 5.1, il n’encodera rien et vous mettra un message d’erreur et inversement si la piste audio est en 5.1 et que la commande indique que l’audio est en stéréo donc je trouve que c’est plus simple de vérifier le nombre de canaux avant pour envoyer la bonne commande.

Donc, vous avez une vidéo à convertir, je vais prendre comme exemple une vidéo de 1 h 53 min en 1280×528 en HEVC (donc en H265) et en AC-3 5.1 pour l’audio.

Si besoin, vous pouvez utiliser MKVToolNix si vous voulez supprimer une piste audio ou des sous-titres ou les renommer.

mkvtoolnix_gui
MKVToolNix Gui

Vous allez ouvrir le fichier avec MediaInfo avec un clic droit et « Ouvrir avec » et sélectionner « MediaInfo ». La fenêtre suivante s’ouvre :

mediainfo
MediaInfo

En bas, vous voyez « Audio », dans la ligne en dessous, repérez « channels », devant, il y a un 6 donc la vidéo est en 6 canaux (5.1). Si la vidéo était en stéréo, il y aurai marqué « 2 channels ». Maintenant que vous savez combien il y a de canaux, vous saurez quelle ligne de commande utiliser.

Maintenant, on va convertir la piste vidéo :
Ouvrez un terminal sur le dossier ou est la vidéo et tapez la commande suivante dans un terminal :

ffmpeg -i videdo.720p.5.1.H265.mkv -map 0:v:0 -pix_fmt yuv420p10le -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 videdo.720p.5.1.H265.mkv par le nom de votre fichier vidéo.
Appuyez sur « Entrée » et allez faire une grande balade, faire les courses ou faire beaucoup de trucs pour vous occuper, car c’est très long à convertir.

Une fois que la conversion de la piste vidéo a été convertie, vous allez joindre le fichier converti (Outfile.ivf) à la vidéo pour obtenir un fichier avec la piste vidéo et la piste audio, c’est à ce moment-là que vous allez pouvoir convertir la piste audio dans le codec Opus.

Si vous avez une piste audio à 6 canaux, reprenez votre terminal et tapez la commande suivante :

ffmpeg -i Outfile.ivf -i videdo.720p.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.720p.5.1.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.
Si vous souhaitez une piste audio à 6 canaux alors que vous avez une piste audio à 8 canaux (7.1) dans le fichier original, vous pouvez garder la ligne de commande ci-dessus. Je ne sais pas s’il est possible de conserver les 8 canaux avec le codec Opus.

Si vous avez une piste audio à 2 canaux, reprenez votre terminal et tapez la commande suivante :

ffmpeg -i Outfile.ivf -i videdo.720p.H265.mkv -map 0:v -map 1:a:0 -map 1:s? -c:v copy -c:a libopus -b:a 128k -vbr on -c:s -max_interleave_delta 0 FinalProduct.mkv

Remplacez videdo.720p.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.

Avec mon fichier de départ qui faisait 1 Gio, mon fichier converti ne fait plus que 769 Mio, il y a donc un gain de 33,16 % en taille par rapport au H265.

Sur mon ordinateur, la conversion vidéo et audio de mon fichier vidéo a mis 5 heures 55 minutes.
Pour info, j’ai comme processeur un AMD Ryzen 3 1200 Quad-Core.

Pour l’instant, le gain en taille le plus élevé que j’ai eu est 43 % par rapport à un fichier en H265.


J’ai fait d’autres conversions avec des fichiers plus petits et voilà ce que ça donne :
Une vidéo de 1h55 de résolution de 720x512px (qualité DVD), H265 Opus stéréo de 531,9 Mio en Av1 Opus stéréo de 430,7 Mio ce qui donne 19,03 % de gain de taille et d’une durée de conversion de 3h56.
Une vidéo de 1h56 de résolution de 512x280px, H265 Opus stéréo de 346,9 Mio en Av1 Opus stéréo de 365,9 Mio ce qui donne 5,48 % de déficit de taille et d’une durée de conversion de 2h38.

Cliquez pour évaluer cet article !
[Total: 0 Moyenne: 0]
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.

0 Commentaires
Commentaires en ligne
Afficher tous les commentaires
Aller au contenu principal