J'ai une application qui génère un tas de jpgs que j'ai besoin de transformer en vidéo webm. J'essaye d'obtenir mes données rgb des jpegs dans l'échantillon de vpxenc. Je peux voir les formes de base des jpgs d'origine dans la vidéo de sortie, mais tout est vert teinté (même les pixels qui devraient être noirs sont à peu près à mi-chemin vert) et toutes les autres lignes de balayage ont des ordures.besoin de créer une vidéo webm à partir de trames RVB
Je suis en train de le nourrir VPX_IMG_FMT_YV12 données, ce qui je suppose est structuré comme si:
pour chaque trame données Y 8 bits moyennes 8 bits de chaque bloc de 2x2 V 8- moyennes de bits de chaque bloc 2x2 U
Voici une image source et une capture d'écran de la vidéo qui sort:
Il est ENTI Compter possible que je fais la conversion RVB-> YV12 de manière incorrecte, mais même si je ne code que les données 8 bits Y et mettre les blocs U et V à 0, la vidéo ressemble à peu près la même chose. Je suis fondamentalement en cours d'exécution mes données RVB par cette équation:
// (R, G, and B are 0-255)
float y = 0.299f*R + 0.587f*G + 0.114f*B;
float v = (R-y)*0.713f;
float u = (B-v)*0.565f;
.. puis pour produire les 2x2 valeurs filtrées pour U et V que j'écris dans vpxenc, je viens de faire (a + b + c + d)/4, où a, b, c, d sont les valeurs U ou V de chaque bloc de pixels 2x2.
Je me demande donc:
est-il un moyen plus facile (en code) pour prendre des données RVB et nourrir à vpx_codec_encode pour obtenir une belle vidéo WebM?
Ma conversion RGB-> YV12 est-elle incorrecte quelque part?
Toute aide serait grandement appréciée.
Pouvez-vous me dire si vous avez mis à jour le code? Iam debout devant le même problème ici ;-) merci –