FFmpeg / avidemux: correction de cadres B compressés

12

Je transcode certaines de mes anciennes vidéos mpeg4 (dans des conteneurs avi) en h.264 avec FFmpeg. Fondamentalement

ffmpeg -i input.avi -c:v libx264 [x264 settings] -c:a libfdk_aac [aac settings] output.mp4

Ce faisant, mpeg4émet l'avertissement suivant

La vidéo utilise un moyen non standard et inutile de stocker des images B («images B emballées»). Pensez à utiliser un outil comme VirtualDub ou avidemux pour le corriger.

Je sais que je peux toujours transcoder avec succès, mais d'après l'avertissement, il n'est pas clair pour moi si la qualité de la vidéo h.264 résultante sera affectée .

Donc,

  • Étant donné que je ne me soucie que de la qualité (et de la taille, je veux minimiser la taille de mes appareils mobiles, c'est pourquoi j'utilise également le veryslowpréréglage) de la sortie vidéo h.264, dois-je me soucier du B- emballé cadres?

  • Si je dois le faire, comment les corriger avec avidemux? (J'ai déjà essayé de parcourir le manuel.)

4ae1e1
la source

Réponses:

15

Les images B sont un type d'image utilisé dans la compression vidéo pour représenter les images d'une vidéo. Les images B peuvent utiliser les informations des images précédentes et futures pour représenter chaque image vidéo.

Les anciennes vidéos encodées en DivX utilisent généralement une méthode laide appelée train de bits compressé qui place plusieurs images vidéo dans un seul bloc AVI. Le flux binaire compressé n'est pas MPEG-4 standard, utilise plus d'espace, nécessite plus de puissance CPU pour encoder / décoder et (surtout) peut causer des problèmes s'il est copié dans un autre type de conteneur. C'est la principale raison de l'avertissement.

Puisque vous réencodez la vidéo au lieu de simplement la copier, tout devrait bien se passer. Si vous souhaitez conserver la vidéo d'origine, mais la copier dans un autre type de conteneur (disons MP4 ou MKV), il serait préférable de déballer les images B en premier en utilisant le filtre FFmpeg mpeg4_unpack_bframes.

Vous pouvez déballer les cadres B avec quelque chose de simple comme

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
xiii1408
la source