2010-12-10 4 views
1

Quand j'Encode cadre RGB24 avec H264 je suis arrivé « largeur d'entrée est râpe que de la foulée » ... En passant, si je donne l'image brute qui est Yuv420p, ffmpeg encode sucussfully il ...FFmpeg: Encode Rgb Cadres (AvFrames) à H264

ce que je voulais, je sais que:

i) Est-ce que nous devons donner format YUV pour l'encodage? Vous ne pouvez pas donner de trame rgb pour l'encodage h264? ii) Si on peut donner un cadre rgb, quel est l'astuce?

+0

Utilisez-vous ffmpeg à partir de la ligne de commande, ou utilisez-vous l'API C de la bibliothèque libav *? –

+0

utilise libav * library C API – NoviceAndNovice

Répondre

0

Je sais que c'est un peu en retard (pas de réponses depuis 2010), mais il semble que vous ayez besoin (ou nécessaire) d'ajuster l'emballage de vos données d'image.

De l'article MSDN (je sais que c'est MSDN, mais son explication des concepts impliqués est vraiment bon):

Lorsqu'une image vidéo est stockée dans la mémoire, la mémoire tampon peut contenir un rembourrage supplémentaire octets après chaque ligne de pixels. Le remplissage octets affecte la façon dont l'image est stockée dans la mémoire, mais n'affecte pas la façon dont l'image est affichée. La foulée est le nombre d'octets d'une rangée de pixels en mémoire vers la rangée suivante de pixels en mémoire. La foulée est aussi appelée tangage. Si octets de remplissage sont présents, la foulée est plus large que la largeur de l'image , comme indiqué dans l'illustration suivante.

Image stride illustration

Read more here

Regardez ce que vous avez spécifié à la fois la largeur de votre image et la foulée de l'image. Quelles que soient les données que vous fournissez pour la ligne, il y a plus de bits que ce qui vous est spécifié pour la foulée (et je devine la largeur aussi, s'ils sont d'accord).