2010-10-11 7 views
3

Dans mon application, nous allons présenter le flux vidéo d'une caméra de trafic à une visionneuse client. (Et éventuellement plusieurs visionneuses clientes.) Le client devrait avoir la possibilité de regarder la vidéo en direct ou rembobiner la vidéo et regarder des séquences plus tôt, y compris la vidéo qui s'est produite avant de se connecter avec le flux vidéo. Nous avons l'intention d'utiliser wxWidgets pour voir la vidéo et nous utiliserons probablement wxMediaCtrl. Maintenant, d'après les déclarations ci-dessus, certains d'entre vous pourraient penser "Hey, il ne sait pas de quoi il parle." Et vous auriez raison! Je suis nouveau à ces concepts et je suis confus par le surplus d'information. Les déclarations ci-dessus sont-elles raisonnables? Quelqu'un peut-il recommander une architecture serveur/client de base pour cela? Nous allons certainement utiliser C++ wxWidgets pour l'interface graphique, mais peut-être wxMediaCtrl n'est pas ce que je veux ... devrais-je utiliser directement quelque chose comme les bibliothèques ffmpeg?Conception de flux vidéo en direct pour wxWidgets

Notre méthode actuelle semble moins qu'optimale. Le serveur extrait un bitmap de chaque trame vidéo, puis attend que le client unique envoie un message "image suivante", à quel point le serveur envoie le bitmap. En effet, nous avons recréé notre propre protocole et visionneuse de streaming vidéo non-standard, non-standard, inefficace et à faible fonctionnalité. Il doit y avoir quelque chose de mieux!

+0

Salut, merci @reemrevnivek. – JnBrymn

Répondre

0

Vous devez vérifier ce serveur RTMP C++: http://www.rtmpd.com/. J'ai rapidement téléchargé, compilé et testé avec succès sans aucun problème réel (sur Ubuntu Maverick). La documentation est assez bonne si un peu partout. Je soupçonne qu'une fois que vous avez un serveur multimédia capable de supporter les protocoles typiques (ce que rtmpd semble faire), écrire un client devrait se mettre naturellement en place, surtout si vous utilisez wxWidgets comme interface api. Bien sûr, il est facile d'écrire ici, dans le confort de mon salon, ce sera une histoire différente quand vous êtes au genou dans le code :)

0

vous pouvez modifier votre logiciel tel que:

Le serveur se connecter, serveur saisit une image, il passe à ffmpeg flux établir, puis copiez les données codées du flux de ffmpeg et envoyer au client via le réseau, si la connexion gouttes, fermez le flux ffmpeg.

Peut-être que vous pouvez utiliser ce qui suit à votre avantage:

http://www.kirsle.net/blog.html?u=kirsle&id=63

0

Il y a un joueur appelé VLC. Il a une bibliothèque pour C++ et vous pouvez l'utiliser pour intégrer le lecteur dans votre application graphique. Il prend en charge une très large gamme de protocoles. Vous devez donc laisser la connexion, la récupération et la lecture des tâches à VLC et ne prendre en charge que les tâches de démarrage et d'arrêt. Ce serait facile et probablement une meilleure solution que de le faire vous-même.

0

Pour les médias jouer installation, à la fois la musique et l'audio, vous peut un coup d'oeil sur GStream. Et en parlant du serveur, je pense que Twisted (Une bibliothèque réseau en Python) devrait être une bonne option. Le célèbre site de vidéo en ligne social justin.tv est basé sur Twisted. Ici vous pouvez lire l'histoire de here. En outre, j'ai construit un groupe de serveur pour le streaming audio sur Twisted, aussi. Ils peuvent servir des milliers d'auditeurs en ligne en même temps.

Questions connexes