Bonjour la liste,
J'ai une petite question technique : Nous avons un système embarqué (arm i.MX6) avec écran et dalle tactile sur lequel nous affichons notre IHM en mode framebuffer (avec Xfbdev)
Je souhaiterais régulièrement générer une image ou un flux vidéo (je ne sais pas encore sous quel format...) issue de ce qui est affiché sur l'écran et l'envoyer régulièrement via l'interface Ethernet vers un autre device (PC ou autre).
J'ai commencé à faire "joujou" avec fbgrab qui effectue un screenshot de l'écran framebuffer et génère un fichier .png Il se trouve que la génération du fichier est assez longue (presque 10 secondes): $ time fbgrab /tmp/toto.png Converting image from 16 Now writing PNG file real 0m 9.34s user 0m 9.28s sys 0m 0.02s
Pourtant j'écris le fichier en /tmp (qui est du tmpfs donc en RAM). Il faut savoir que la résolution de l'écran est en 1024x768. fbgrab capture par défaut l'image en 16bits de résolution de couleur, et il se trouve que je n'ai pas besoin d'autant en profondeur de couleur (8 bits suffiraient) mais fbgrab (en tout cas ma version cross-compilée) ne semble pas supporter cette option : $ fbgrab -b 8 /tmp/toto.png Converting image from 8 8 bits per pixel are not supported! Command exited with non-zero status 1
Questions: - Quelqu'un saurait-il pourquoi l'option -b ne fonctionne pas ? Cette option n'est-elle valable que quand on "grab" depuis un fichier (comme l'indique le usage) et pas depuis le framebuffer en lui même : Usage: fbgrab [-hi] [-{C|c} vt] [-d dev] [-s n] [-f fromfile -w n -h n -b n] filename.png - Auriez-vous d'autres idées / suggestions pour générer une image ou un flux de capture d'écran du framebuffer et l'envoyer sous un format (standard si possible) vers un autre device ? - la conversion en PNG peut-elle prendre plus de temps que la capture en elle-même ?
Je pense que c'est vraiment le temps de conversion en PNG qui est long car le fait de copier l'intégralité du framebuffer est quasi instantané, et ensuite le fbgrab sur ce fichier prend également environ un dizaine de secondes : $ time cp /dev/fb0 framebuffer.dump real 0m 0.01s user 0m 0.00s sys 0m 0.01s $ time fbgrab -w 1024 -h 768 -b 16 -f framebuffer.dump fb.png Converting image from 16 Now writing PNG file real 0m 9.28s user 0m 9.23s sys 0m 0.04s
Je pourrais développer un petit programme en C qui lierait tout le /dev/fb0 1024x768 pixel et en faire ensuite ce que je veux mais je ne souhaiterais pas réinventer la roue :-)
En vous remerciant pour vos idées / suggestions,
À bientôt,
Vincent BRACH
Coucou Vincent et les pingouinots,
Le 21/05/2015 12:12, Vincent BRACH a écrit :
Je souhaiterais régulièrement générer une image ou un flux vidéo (je ne sais pas encore sous quel format...) issue de ce qui est affiché sur l'écran et l'envoyer régulièrement via l'interface Ethernet vers un autre device (PC ou autre).
Formats ouverts, standards...
[extrait] au niveau multimédia, nous proposons l'ajout du codec audio Opus et du codec vidéo VP9 [/extrait]
J'invite tout le monde à prendre connaissance de la dernière nouvelle publiée :
URL:https://aful.org/nouvelles/aful-salue-nouvelle-mouture-rgi-participe-appel-commentaires
Salutations ensoleillées,