2011-10-24 7 views
0

Normalement, je peux obtenir un cliché instantané à partir d'une caméra IP avec une URL fournie par le fournisseur. Cependant, les jpegs servis de cette manière ne sont pas de bonne qualité et le vendeur dit qu'il n'y a pas de possibilité de servir des snapshots dans d'autres formats d'image ou une compression plus petite/sans perte.Obtention d'un instantané à partir d'un flux vidéo rtsp à partir d'une caméra IP

J'ai remarqué que lorsque j'ouvre un flux rtsp h264 à partir de l'appareil photo avec VLC, puis prendre manuellement une capture d'écran, l'image résultante n'a aucun des artefacts jpeg observés précédemment.

La question est, comment puis-je obtenir ces instantanés supérieurs à partir d'un flux h264 avec un programme C++? J'ai besoin d'effectuer plusieurs opérations sur l'image (annotations, recadrage, reconnaissance de visage) mais celles-ci doivent venir après avoir obtenu une image initiale aussi haute que possible.

(notez que cela est lié à mon previous question. J'ai obtenu des images jpeg avec CURL mais voudrais maintenant remplacer le getter instantané avec ce nouveau si possible. Je me présente à nouveau sur linux, Fedora 11)

Répondre

0

Vous avez besoin d'une implémentation client RTSP pour vous connecter à la caméra, commencer à recevoir le flux vidéo, défragmenter/dépacketiser la trame vidéo, puis l'obtenir et enregistrer/traiter/présenter selon les besoins.

Vous pouvez regarder vers live555 library comme une bibliothèque RTSP/implemetnation bien connue.

+0

Corrigez-moi si ma compréhension est erronée: utilisez un client RTSP pour envoyer une demande SETUP, puis une requête PLAY; Stockez la vidéo dans un tampon sur la mémoire; Décoder tout ce qui est dans le tampon pour un format d'image sans perte; Obtenez un cadre à partir des images décodées; Faire des choses(); Répétez lorsque le tampon est rempli. – Morpork

+0

Ceci est fondamentalement correct, mais il y a tellement de détails omis. Avec JPEG sur HTTP, où vous envoyez une requête et récupérez le tout. Dans RTSP, le conent peut être livré via TCP ou UDP, plus d'un descripteur de format pour trouver H.264 à, dépacketization pour obtenir le flux de bits H.264 original. Pas une science de fusée, mais pas aussi simple que dans le cas de l'instantané JPEG. –

Questions connexes