Auteur Sujet: Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus  (Lu 28742 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #24 le: 17 novembre 2019 à 17:35:55 »
Le fichier crée par ffmpeg est lisible avec divers logiciels de lecture vidéo et le navigateur Chromium, mas pas Firefox.

Twitter refuse de l'importer, donc je pense bien que cela doit être une erreur dans ma ligne de commande ffmpeg


underground78

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 7 436
  • Orsay (91)
    • FreePON : suivi géographique du déploiement fibre EPON chez Free
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #25 le: 17 novembre 2019 à 17:42:13 »
Essaie avec "-profile:v high -level:v 4.1" pour voir.

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #26 le: 17 novembre 2019 à 17:46:59 »
Alors c'est radical: ffmpeg refuse de faire la vidéo avec ces paramètres.

J'ai l'erreur suivante :
[libx264 @ 0x56220f3eaa00] Error setting profile high.
[libx264 @ 0x56220f3eaa00] Possible profiles: baseline main high high10 high422 high444
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!


La ligne de commande et le retour complet : (c'est le ffmpeg des dépôts Ubuntu 19.10)
$ ffmpeg -f image2 -framerate 30 -i image%d.png -c:v libx264 -profile:v high -level:v 4.1 -crf 20 destination.mp4
ffmpeg version 4.1.4-1build2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.2.1-4ubuntu1)
  configuration: --prefix=/usr --extra-version=1build2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  WARNING: library configuration mismatch
  avcodec     configuration: --prefix=/usr --extra-version=1build2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-liblensfun --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, image2, from 'image%d.png':
  Duration: 00:03:12.30, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24(pc), 1024x768, 30 fps, 30 tbr, 30 tbn, 30 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Press [q] to stop, [?] for help
x264 [error]: high profile doesn't support 4:4:4
[libx264 @ 0x56220f3eaa00] Error setting profile high.
[libx264 @ 0x56220f3eaa00] Possible profiles: baseline main high high10 high422 high444
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

J'ai mis dans ce fichier compressé 201911_dell_poweredge_r330_maj.tar.xz les source de la vidéo : les 5769 images.png et le fichier audio source au format .mp3 (musique Creative Commons).

underground78

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 7 436
  • Orsay (91)
    • FreePON : suivi géographique du déploiement fibre EPON chez Free
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #27 le: 17 novembre 2019 à 17:52:00 »
Pour le coup la vraie erreur est "x264 [error]: high profile doesn't support 4:4:4". Du même coup ça nous donne l'explication de pourquoi certains outils/sites peinent à traiter la vidéo produite sans ces options.

Ajoute l'option "-pix_fmt yuv420p".

Un peu de lecture pour la culture : https://fr.wikipedia.org/wiki/Sous-%C3%A9chantillonnage_de_la_chrominance.

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #28 le: 17 novembre 2019 à 18:12:39 »
Merci, cela fonctionne parfaitement et le fichier est vraiment de toute petite taille.

Pourquoi forcer le profil 4.1 ?

Le profil 4.2 n'est pas plus intéressant ? (cela semble plutôt bien supporté aujourd'hui, sur les iPhone, à partir de l'iPhone 5s)

J'ai comparé, mon fichier fait la même taille que ce soit en profil 4.0 , profil 4.1 ou profil 4.2.

Du coup coté VP9, cela doit être la même cause de pb ?

underground78

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 7 436
  • Orsay (91)
    • FreePON : suivi géographique du déploiement fibre EPON chez Free
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #29 le: 17 novembre 2019 à 18:58:24 »
Pourquoi forcer le profil 4.1 ?
A l'époque c'était le plus compatible avec le décodage matériel mais aujourd'hui c'est potentiellement moins un problème.

Le profil 4.2 n'est pas plus intéressant ? (cela semble plutôt bien supporté aujourd'hui, sur les iPhone, à partir de l'iPhone 5s)
L'intérêt du level 4.2 c'est qu'il permet le full HD à 60 fps ce que ne permet pas le level 4.1.

J'ai comparé, mon fichier fait la même taille que ce soit en profil 4.0 , profil 4.1 ou profil 4.2.
C'est que tu n'as pas atteint les limites du profil 4.0 avec cette source et les paramètres utilisés.

Du coup coté VP9, cela doit être la même cause de pb ?
Je connais moins bien le VP9 mais c'est très probable.

Pour le x264, une autre option intéressant est "-preset:v" pour changer les paramètres d'encodage en fonction du ratio vitesse/qualité ou vitesse/taille du fichier recherché.

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #30 le: 17 novembre 2019 à 19:20:40 »
Merci, les différents niveaux sont expliqués sur https://en.wikipedia.org/wiki/Advanced_Video_Coding
Pas besoin level 4.2 si on ne dépasse pas résolutions 1,280×720 à 60 images par seconde ou 1,920×1,080 à 30 images par seconde.

Je connais moins bien le VP9 mais c'est très probable.
Je pensais il y a quelques années que le VP9 serait supporté par tous les appareils après quelques années, le temps que la nouveauté se diffuse.

Aujourd'hui je comprends qu'il n'y aura probablement jamais de support de VP9 sur iOS ou safari. Aujourd'hui un utilisateur sur 5 n'a pas de support du VP9 et il n'y a plus trop de progressions, sauf pour Edge quand il va passer sur la base Chromium.

AV1 sera sans doute la solution de convergence, mais dans 5 ans... aucun support matériel aujourd'hui.
Bref en attendant, H264 semble un bon compromis vu qu'il est supporté par presque l'intégralité du parc, malgré le fait qu'il soit propriétaire.

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #31 le: 20 novembre 2019 à 22:06:43 »
Pour le x264, une autre option intéressant est "-preset:v" pour changer les paramètres d'encodage en fonction du ratio vitesse/qualité ou vitesse/taille du fichier recherché.

Impressionnant.

Pour une même qualité :
- ultrafast : 5766 Ko
- superfast : 3118 Ko
- veryfast : 2396 Ko
- faster : 2247 Ko
- fast : 2210 Ko
- medium – default preset :2173 Ko
- slow : 2069 Ko
- slower : 1223 Ko
- veryslow : 1004 Ko
- placebo : 1040 Ko

underground78

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 7 436
  • Orsay (91)
    • FreePON : suivi géographique du déploiement fibre EPON chez Free
Encoder des vidéos HD720 à 1 Mb/s grâce au codec VP9 / Opus
« Réponse #32 le: 20 novembre 2019 à 22:17:45 »
Pour une même qualité :
Avec un bémol tout de même sur ce qu'on appelle "qualité" : à "crf" égal, il peut y avoir des variations de qualité perçue selon les paramètres utilisés.

C'est très difficile pour un encodeur d'avoir une notion de qualité qui colle à la perception humaine (voir tout ce qui tourne autour des métriques comme PSNR, SSIM, etc).