Pourquoi l'encodage VP8 / 9 est-il si lent par rapport au H.264?

11

Récemment, je voulais essayer les codecs Webm VP8 et VP9, ​​mais lorsque j'ai couru ffmpegpour coder un fichier H.264 MP4 dans l'un des deux autres codecs, j'ai réalisé que l'encodage était (presque d'un ordre de grandeur) plus lent.

Une vidéo 1080p30 de H.264 à VP9 à 3 Mbits / s est encodée à environ 6-7 ips tandis que la même vidéo encode à environ 40 ips à H.264. J'ai utilisé le libvpx-vp9codec ffmpegpour le format VP9. J'obtiens les mêmes résultats pour VP8 et Theora aussi.

Quelqu'un peut-il m'expliquer pourquoi VP9 est tellement plus lent? J'ai essayé une machine différente qui m'a donné des résultats similaires en utilisant le frein à main.

comfreak
la source
askubuntu.com/questions/270625/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Réponses:

11

libvpx-vp9est un encodeur beaucoup plus lent que libx264mais les paramètres par défaut des threads dans ffmpeg (0 = auto) ne sont pas efficaces pour libvpx. Le régler manuellement donne un ralentisseur. par exemple

ffmpeg -i in.mp4 -c:v libvpx-vp9 -threads 4 out.mp4

Sur une machine à 4 cœurs, lorsque j'encode un flux H.264 1080-30p, j'obtiens une bosse de 3.8 fpsà 10 fps.

Gyan
la source
Il faut également mentionner qu'il existe différents préréglages de vitesse, c'est-à-dire -presetpour libx264et -speedpour libvpx-vp9. Tu vois ffmpeg -h full. Ceux-ci peuvent faire toute la différence, mais ils affectent également la qualité ou l'efficacité de la compression.
slhck
1
Je l'ai essayé sur des machines assez anciennes mais j'ai utilisé 4 threads car les deux machines sont quad-core. L' -speedoption n'a pas fait une énorme différence pour moi
comfreak
@comfreak Voir aussi: developers.google.com/media/vp9/the-basics
slhck
3

VP9 est un codec plus complexe offrant une meilleure compression. Le rapport compression / performances vidéo a tendance à être exponentiel. Vous devez vous attendre à ce que le remplacement VP9 (AV1) soit encore plus lent.

szatmary
la source
1
Donc, en d'autres termes, même si le codec produit "seulement" une amélioration de taille relativement petite, il peut être beaucoup plus lent? Les résultats que j'ai obtenus sont-ils représentatifs?
comfreak
1
VP9 peut être jusqu'à 50% plus efficace en termes de qualité, @comfreak. Je n'appellerais pas ça petit. Vous ne pouvez pas simplement comparer la taille du fichier résultant.
slhck
@slhck: Vous dites donc que 3MBit / s peut encoder plus d'informations originales que H.264 et donc un débit binaire inférieur à celui du matériel source en H.264 pourrait être une option pour accélérer les choses?
comfreak
1
@comfreak L'utilisation d'un débit binaire inférieur n'augmentera pas automatiquement la vitesse du processus d'encodage. Je dis simplement qu'il y a un compromis entre l'efficacité de la compression et la vitesse, et de nombreux fournisseurs de streaming, par exemple, préfèrent investir le temps CPU pour créer des flux de meilleure qualité à un débit binaire global plus faible, afin de conserver l'espace et la bande passante. L'utilisation de codecs plus efficaces (comme VP9 ou HEVC sur H.264) est également utile à cet égard.
slhck
Mais essentiellement, si la vitesse est le facteur le plus important pour vous, vous devriez vous en tenir aux anciens codecs (par exemple, H.264), aux préréglages moins efficaces en compression, et peut-être également examiner le codage assisté par GPU, par exemple avec NVENC.
slhck