Après la -vismv
commande, j'ai vu un certain nombre de valeurs différentes. Je ne trouve aucune explication sur ce que le nombre fait et en le changeant - je ne vois aucune différence!
De plus, je travaille avec la -debug vis_mb_type
commande et je peux visualiser les types de bloc. Le rouge étant nouveau, mais que représentent le vert et incolore? J'ai aussi vu du violet dans certains fichiers quand sur un I-frame!
Exemple de commande sur un fichier MP4:
ffmpeg -debug vis_mb_type -vismv 1 -i inputfile.mp4 -vcodec mjpeg -q:v 0 output.avi
Edit: Faire un peu plus de recherches là-dessus .... Je pense que les blocs verts sont prédits mais non déplacés, puis que les blocs monochromes non colorés sont inchangés par rapport à la trame I. Je n'arrive toujours pas à comprendre le rouge / violet!
Réponses:
vismv
optionsIl n'y a pas de nombres à passer
-vismv
comme arguments. Seuls ceux-ci sont pris en charge:pf
- MV prédites en avant des images Pbf
- MV prédites en avant des trames Bbb
- MV prédites en arrière des images BJe suppose que si vous utilisez des entiers, ceux-ci sont mappés à 1, 2 et 3, respectivement.
vis_mb_type
J'ai parcouru le code et trouvé la pièce correspondante dans
mpegvideo.c
, à partir de la ligne 2029. Elle convertit lesCOLOR(theta, r)
valeurs en valeurs U et V à partir d'un espace colorimétrique YUV à l'aide de la fonction suivante:Voici les valeurs de couleur par type de macrobloc, y compris leurs valeurs UV et la couleur RVB correspondante à Y = 128 .
COLOR(120, 48), UV(104, 169.57), RGB(184, 107, 86)
État:
IS_PCM (== MB_TYPE_INTRA_PCM)
COLOR(30, 48), UV(169.57, 152), RGB(160, 97, 200)
État:
IS_INTRA && IS_ACPRED) || IS_INTRA16x16
COLOR(90, 48), UV(128, 176), RGB(193, 94, 128)
État:
IS_INTRA4x4
COLOR(150, 48), UV(86.43, 152), RGB(160, 125, 55)
État:
IS_DIRECT
COLOR(170, 48), UV(80.73, 136.34), RGB(139, 138, 46)
État:
IS_GMC && IS_SKIP
COLOR(190, 48), UV(80.73, 119.66), RGB(116, 149, 46)
État:
IS_GMC
COLOR(240, 48), UV(104, 86.43), RGB(71, 165, 86)
État:
!USES_LIST(mb_type, 1))
COLOR(0, 48), UV(176, 128), RGB(128, 111, 211)
État:
!USES_LIST(mb_type, 0))
COLOR(300,48), UV(152, 86.43), RGB(71, 148, 169)
Condition:
USES_LIST(mb_type, 0) && USES_LIST(mb_type, 1))
- il s'agitassert
donc d' un processus qui peut ou non abandonner l'exécution du programme lorsque l'assertion échoue.Je n'ai pas testé cela, mais cela me semble correct. Des informations sur les commutateurs de débogage et les couleurs de macroblocs sont également expliquées sur le wiki FFmpeg .
la source