2017-03-15 2 views
0

j'ai utilisé swscale + x264 pour coder une séquence d'images RGB à un flux de H264. Lorsque les valeurs RVB dans l'image d'entrée (en rouge) sont tous (255, 0, 0), le YUV fourni par swscale + x264 est (81, 90, 240). En utilisant swscale, cette valeur YUV peut être retransformée en valeur RVB d'origine. Cependant, il y a changement de couleur quand j'ai utilisé PotPlayer pour jouer le flux.changement de couleur de flux x264

J'ai capturé la première image et enregistré dans un fichier bmp. La valeur RVB dans le fichier bmp est (255, 24, 0), où le canal vert n'est pas zéro.

Comment résoudre ce problème de changement de couleur?

-je résoudre ce problème en changeant l'espace colorimétrique UIT-601 à l'UIT-709 en utilisant sws_setColorspaceDetails.

Répondre

1

Cela peut être dû à plusieurs raisons. Si swsscale convertit RGB en autre chose que YUV444, alors vous perdez une certaine précision chroma dans le processus de sous-échantillonnage. Et puisque H264 est une compression avec perte, vous perdriez aussi quelques informations dans le processus de compression. Il est difficile de dire lequel cause la différence jusqu'à ce que vous analysez la sortie de chaque étape, mais il semble que la perte est due à un codage avec perte que la conversion de couleur.