web-dev-qa-db-fra.com

Comment encoder et lire une vidéo avec le codec AV1 sous Bionic Beaver?

Apparemment, Chrome 69 beta inclut la prise en charge du codec Alliance for Open Media AV1 . La fonctionnalité semble inutile sans la possibilité d'encoder de la vidéo avec le nouveau codec.

  1. Comment encoder une vidéo avec ce nouveau codec sur Ubuntu 18.04?
  2. Quel est l'état de la prise en charge de la lecture dans les autres lecteurs multimédias, tels que mpv?

Remarque: Par @ andrew.46 , l'état actuel de la prise en charge de AV1 dans Ubuntu est pratiquement inexistant. Laisser cette question ouverte afin qu'elle puisse être mise à jour à mesure que le support s'améliore.

3
xiota

Pour le moment, une installation standard standard de Bionic Beaver 18.04 offrira un petit support pour l’encodage ou la lecture de fichiers AOMedia Video 1 (AV1). Afin de tester cette affirmation, j'ai créé un fichier test AV1 ici:

wget http://www.andrews-corner.org/samples/askubuntu_test_aom.mp4

La prise en charge des fichiers AV1 dans Bionic Beaver à ce moment (5 août 2018) a été testée avec cet exemple de fichier dans les packages et versions suivants:

  1. mediainfo : téléchargé depuis le référentiel Bionic Beaver offre une prise en charge immédiate des fichiers AV1.
  2. vlc : téléchargé à partir du référentiel Bionic Beaver, ne prend pas en charge les fichiers AV1. Ce support pourrait être compilé à partir de vlc version 3.0 et ultérieure. Voir la capture d'écran ci-dessous ...
  3. SMPlayer : la version de Bionic Beaver n'offre aucun support pour AV1.
  4. mpv : la version de Bionic Beaver n’offre aucun support AV1.
  5. FFmpeg : Deux points ici:
    1. La version Bionic Beaver avec codecs supplémentaires ne prend pas en charge AV1.
    2. Un support complet peut être obtenu en suivant le Guide de compilation FFmpeg Trac et est possible depuis la version 4.0. Les fichiers peuvent être créés puis lus avec FFplay.
  6. Chrome : Encore 2 points ici:
    1. Chrome n'est pas disponible dans les référentiels Bionic Beaver.
    2. La version -dev de Chrome n'a rencontré aucun problème lors de la lecture du fichier exemple. J'ai testé Version 70.0.3510.0 (Official Build) dev (64-bit). Disponible en tant que téléchargement direct de Google, voir la capture d'écran ci-dessous!
  7. Firefox : Bionic Beaver Firefox ne peut pas lire les fichiers AV1, mais la prise en charge d'AV1 devrait s'accompagner de Firefox 6 à la parution .. .
  8. MKVToolNix : Deux points:
    1. La version du référentiel Bionic ne traite pas correctement AV1. Il s'agit de la version 19, tandis que la version 22 ajoute le support requis.
    2. Le développeur a des instructions pour installer le dernier MKVToolNix sous Bionic Beaver mais je pense que la plupart des fonctionnalités de l’AV1, même dans cette version, sont toujours en attendant que le codec arrive à maturité. Cet avertissement s'applique aux versions 23 et 24 de MKVToolNix.

Voilà donc l’état actuel des choses, un peu morne, mais les choses s’amélioreront à mesure que l’AV1 mûrira ...

Et le gagnant est:

enter image description here

Chrome!! Pour tout faire en toute simplicité :)

Meilleur finaliste:

enter image description here

Vlc !! Pour que tout soit terminé, il ne reste plus qu'à attendre que les emballeurs se mettent au courant :).

Références:

  • Slackware Build for libaom : Comment les gens de Slackware construisent et empaquetent libaom. Quelques techniques là-bas qui pourraient facilement traduire à la manière Ubuntu ...
3
andrew.46

À compter du 27 octobre 2018, les moyens les plus simples d'obtenir une assistance en lecture pour AV1 sont les suivants:

  • Aller à la page about:config de Firefox et définir media.av1.enabled à true. Firefox 63.0 et les versions plus récentes prennent en charge AV1, mais il est actuellement désactivé par défaut.

  • Installation du composant logiciel enfichable pour la version bêta de la série VLC 3.0.x (actuellement 3.0.4-157-ga26ab1e) à partir de le composant logiciel enfichable . Dans la Boutique, allez Toutes les versions -> dernières/bêta -> installer -> Afficher dans Desktop Store ou via la ligne de commande:

    Sudo snap install vlc --beta

  • Installation d'une version à jour de mpv. Leur page d'installation est lié à ce PPA . Je ne recommande pas vraiment cette méthode car mpv a actuellement n bogue , ce qui entrave le décodage de AV1.


Le codage est un tout autre problème et est actuellement un PITA. Pour l'instant, il n'y a aucun moyen d'obtenir tout ce que vous souhaitez; FFmpeg peut être compilé avec le support AV1 en suivant leur guide de compilation Ubunt mais les fonctionnalités requises pour l’encodage multithread (à savoir -tile-columns et -tile-rows, ainsi que -row-mt qui est préférable) ne sont actuellement pas prises en charge. Cela signifie que FFmpeg ne peut utiliser qu'un seul thread pour le codage AV1, ce qui ralentit les choses plusieurs fois par rapport à la normale. Cela a déjà conduit à n malentendu sur la lenteur de l'encodage AV1 et je ne recommande pas vraiment cette méthode.

Le codage à l'aide de l'outil aomenc est le choix le plus réaliste en termes de vitesse de codage, mais vous perdez tous les avantages de FFmpeg. aomenc n'accepte que les vidéos brutes au format .y4m, qui occupe énormément d'espace, et ne peut évidemment pas encoder l'audio. La vitesse est également un problème: avec le réglage de vitesse le plus rapide et un débit binaire de 1000k, l’encodage d’une vidéo en 1080p 24 vps en 10 secondes prend 13 minutes. C'est 0,32 images encodées par seconde. La capacité du codeur à utiliser le processeur est également un problème. Avec le réglage de vitesse le plus rapide, l'utilisation moyenne du processeur d'un Ryzen 1700X à 8 cœurs est d'environ 21%. Cela monte à 41% lorsque vous utilisez le deuxième paramètre le plus lent. Donc, l'encodeur n'est certainement pas prêt pour une utilisation généralisée.

Si vous voulez toujours l'essayer, vous devez le compiler à partir des sources. Vous pouvez adapter la section libaom du guide de compilation de FFmpeg ou, si vous avez décidé de compiler FFmpeg, utilisez l’aomenc déjà compilé qui devrait rester dans le répertoire de construction de FFmpeg.

Pour commencer, convertissez votre vidéo source en y4m avec FFmpeg. Pour convertir 10 secondes d'une vidéo:

`ffmpeg -i input.mp4 -t 10 -pix_fmt yuv420p video.y4m

Pour encoder, utilisez une commande qui ressemble à ceci:

aomenc --fps=24/1 -u 0 --codec=av1 --target-bitrate=1000 --lag-in-frames=25 --auto-alt-ref=1 -t 24 --cpu-used=8 --tile-columns=2 --tile-rows=2 --row-mt=1 -o output.webm video.y4m

Je recommanderais d'attendre que FFmpeg obtienne un meilleur support cependant. Cela fera de l’encodage une perspective beaucoup plus réaliste.

2
veikk0