web-dev-qa-db-fra.com

Développer une application de chat vidéo avec un streaming vidéo de haute qualité

Je travaille pour une entreprise où nous développons un support de chat vidéo sur une application existante. J'ai examiné diverses solutions pour cela, comme

  1. Utilisation de Managed Direct Show pour la capture vidéo et le streaming en C #
  2. Quelques exemples de code dans un projet de code où nous prenons une image et la passons sur le réseau (je l'appellerais plutôt une solution brute car cela consommerait beaucoup de bande passante.
  3. Codez un algorithme de compression à partir de zéro et utilisez-le pour compresser-décompresser la vidéo.

Maintenant, le défi est que nous cherchons à obtenir un streaming vidéo de très haute qualité et l'application conteneur est codée en C # .NET

C'est ce que j'ai proposé jusqu'à présent. La logique réseau pour diffuser des données est écrite en C #, la compression vidéo doit être écrite en VC++ et appeler cette DLL VC++ à l'aide de pinvoke ou de la CLI dans la mesure du possible.

Je recherche quelqu'un de plus expérimenté que moi dans ce domaine qui puisse me suggérer si je vais corriger ou si cela peut encore être amélioré.

Le but ultime est le streaming vidéo de haute qualité. Le codec peut être n'importe quoi comme h.2633, h.264 etc.

19
Sumit Ghosh

J'ai utilisé plusieurs méthodes pour obtenir facilement du streaming vidéo/des conférences avec .net, sans avoir besoin de creuser dans directshow. (ok, creuse un peu, mais pas en profondeur :)

1) Utilisation de composants Windows Media Encoder simples. Il est documenté avec des exemples dans le SDK Windows Media Encoder. Bon pour tout streaming haute résolution, mais le délai est trop important pour le chat en temps réel (0,5 à 2 secondes au mieux). Modern Express Encoder SDK une autre option.

2) Microsoft Research ConferenceXP http://cct.cs.washington.edu/ API de conférence complète comprenant le streaming d'application. Ils ont trop bas niveau les filtres codés Windows Media et les ont enveloppés dans du code managé. Fonctionne bien. Facilement personnalisable. Ça a l'air un peu abandonné maintenant.

3) Microsoft RTC Client jusqu'à la version 1.3 - noyau de Windows Messenger.

avantages: exemples gérés de Microsoft, bons documents, performances fiables, librement redistribuables, compatibles Microsoft (bon) SIP incluse. Je ne suis pas sûr de ce jour, mais je sais que Tandberg a autorisé le VC-1 de Microsft.

inconvénients: la version jusqu'à 1.3 prend uniquement en charge la vidéo h261-h263. la version moderne avec prise en charge du codec VC-1 (h264) ne permet pas les connexions ip-ip directes sans serveur. Il nécessite un serveur Microsoft Live Communications. La version plus récente du SDK ne couvre pas bien les appels de visioconférence.

http://msdn.Microsoft.com/en-us/library/ms775892 (VS.85) .aspx

Veuillez nous indiquer la plateforme que vous avez choisie. En passant, j'ai même utilisé la partie rtp vidéo ConferenceXP avec RTC 1.3 fonctions voix/SIP ensemble pour améliorer la qualité vidéo, vous avez donc un large choix de technologies gérées ici. Une autre chose est Live Meeting à laquelle je n'avais aucune chance de bien regarder encore.

23

Épargnez-vous les ennuis et utilisez VLC. Il existe des wrappers .NET décents pour cela ( http://forum.videolan.org/viewtopic.php?f=32&t=52021&start= )

Nous utilisons C # et VLC pour un réseau IPTV. Nous prenons l'entrée des satellites du réseau DISH via des périphériques de capture vidéo Osprey-450 sur un serveur Windows XP). À partir de là, nous avons un composant serveur .NET que nous avons écrit en C # qui utilise VLC dans les coulisses (démarrage de processus séparés dans .NET pour contrôler les instances de vlc.exe). Les processus VLC transcodent et diffusent les signaux sur un réseau (.h264 ou MPEG-4, nous avons réussi les deux).

Du côté client, nous avons une application C # WinForm qui utilise une visionneuse VLC intégrée pour afficher les signaux de multidiffusion. Cette application est principalement destinée au commandement et au contrôle. L'utilisation réelle des signaux multicast se produit lorsque nos décodeurs connectés à notre téléviseur décodent et affichent les flux.

Nous pensions que nous allions devoir également écrire nos propres encodeurs DirectX, mais ne vous donnez pas la peine. VLC fonctionne très bien et a suffisamment de support C # pour être très utile. N'hésitez pas à m'envoyer un e-mail si vous avez des questions spécifiques sur la mise en œuvre.

10
Chris Holmes

Vous devriez consulter le SDK Ucentrik. Ce SDK vous permettra d'intégrer des fonctionnalités rich-media telles que la vidéo, l'audio, le chat, le partage et le contrôle de bureau à distance et l'enregistrement vidéo dans vos applications. Les codecs vidéo pris en charge sont VP8 (Google), Theora et x.264. En outre, le trafic rich media est encapsulé dans un protocole HTTP pour lui permettre de traverser les pare-feu qui activent le trafic Web normal. Cette technologie est entièrement gratuite et vous pouvez télécharger le SDK et demander une clé API afin de pouvoir évaluer sans investir de temps dans la configuration de l'infrastructure. Au cours des prochains mois, nous publierons un composant serveur afin que vous puissiez télécharger et héberger l'infrastructure vous-même ou votre client. La technologie prend en charge les connexions 1 à plusieurs, ce qui signifie que vous pouvez créer des vidéoconférences si vous le souhaitez. Les fonctionnalités sont très modulables afin que vous puissiez intégrer uniquement la vidéo ou l'audio ou le partage de bureau ou une combinaison des technologies utilisant le même SDK ... Vous devez demander un SDK disponible ici: www.ucentrik.com. De plus, il y a quelques vidéos ici: http://www.youtube.com/user/ucentrik

bonne chance.

2
Francis

Ucentrik vient de publier une application open source pour centre d'appels qui intègre la technologie CTX. Cette application de centre d'appels met en œuvre la vidéo, l'audio, le partage de bureau/application (avec contrôle), la fonctionnalité de chat texte disponible à partir de l'API CTX. L'application comprend également une logique métier spécifiquement autour de la possibilité d'acheminer les appels vers un agent disponible ou doté de compétences spécifiques. Le projet est disponible à http://vcca.codeplex.com - veuillez noter que vous aurez besoin d'accéder au SDK Ucentrik CTX qui est disponible sur demande sur le site Web d'Ucentrik (www.ucentrik.com) . Bonne chance.

0
user1193676