2017-09-19 3 views
6

ContexteConvertir un fichier RGB32 brutes au format JPEG ou PNG en utilisant FFmpeg

J'ai utilisé un programme C++ écrire octets bruts dans un fichier (image.raw) dans RGB32 Format:

R G B A R G B A R G B A ...

et je veux être en mesure de le voir d'une manière ou d'une autre. J'ai les dimensions de l'image.

Mes outils sont limités aux commandes de ligne de commande (par exemple ffmpeg). J'ai visité le ffmpegwebsite pour les instructions, mais il traite plus de la conversion de vidéos en images.


Questions

Est-il possible de transformer ce fichier dans un type de fichier visible (par exemple .jpeg, .png) en utilisant ffmpeg. Si oui, comment le ferais-je?

Si ce n'est pas possible, y a-t-il un moyen de pouvoir utiliser une autre commande?

Il qui est encore pas viable, est-il possible que je peux manipuler les RGB32 octets à l'intérieur d'un programme C++ pour le rendre plus approprié sans l'utilisation des bibliothèques externes? Je ne veux pas non plus m'encoder .jpeg moi-même comme this.

Répondre

2

Utilisez le rawvideo demuxer:

ffmpeg -f rawvideo -pixel_format rgba -video_size 320x240 -i input.raw output.png 

Comme il n'y a pas d'en-tête spécifiant les paramètres vidéo pris en charge, vous devez les spécifier, comme indiqué ci-dessus, afin d'être en mesure de décoder correctement les données.

Voir ffmpeg -pix_fmts pour une liste des formats de pixels d'entrée pris en charge qui peuvent vous aider à choisir le -pixel_format approprié.

+1

Réponse a fonctionné pour moi, même si je dois ajouter que cela a fonctionné après avoir ajouté '-i' avant' input.raw'. – PhotometricStereo

+0

@PhotometricStereo Oui, c'était une faute de frappe. Merci pour l'édition. – LordNeckbeard