2009-01-22 9 views
19

Ich arbeite für ein Unternehmen, wo wir Video-Chat-Unterstützung für eine vorhandene Anwendung entwickeln. Ich habe an verschiedenen Lösungen für das sieht aus wieEntwickeln einer Video-Chat-Anwendung mit hoher Qualität Video-Streaming

  1. Mit Managed Direct Show für Video-Capture und Streaming in C#
  2. Einige Codebeispiele in Code Projekt, bei dem wir ein Bild und übergeben sie über das Netzwerk (ich würde nennen es eher eine grobe Lösung, da dies würde viel Bandbreite aufzehren.
  3. -Code ein Kompressionsalgorithmus von Grund auf neu von Grund auf und verwenden sie es Video zu komprimieren-dekomprimieren.

Nun ist die Herausforderung besteht darin, dass wir zu erreichen suchen, um sehr hochwertiges Videostreaming und der con Tainer-Anwendung ist in C# codiert.

Dies ist, was ich bisher vorgeschlagen habe. Die Netzwerklogik zum Streamen von Daten wird in C# geschrieben, die Videokomprimierung wird in VC++ geschrieben und diese VC++ dll wird unter Verwendung von Pinvoke oder einer der beiden möglichen CLI aufgerufen.

Ich suche jemanden mehr erfahren, dass mich auf diesem Gebiet wer kann mir vorschlagen, wenn ich richtig gehe, oder kann dies noch verbessert werden.

Das ultimative Ziel ist ein qualitativ hochwertiges Videostreaming. Der Codec kann irgendwas wie h.2633, h.264 usw. sein.

+0

https://www.twilio.com/docs/api/video –

Antwort

22

Ich habe verschiedene Möglichkeiten benutzt, um Video Streaming/Conferencing mit .net einfach zu bekommen, ohne sich in DirectShow einarbeiten zu müssen. (ok, graben Sie einige, aber nicht tief :)

1) Verwendung von einfachen Windows Media Encoder Komponenten. Es ist mit Beispielen in Windows Media Encoder SDK dokumentiert. Gut für hochauflösendes Streaming, aber die Verzögerung ist zu groß für Echtzeit-Chat (bestenfalls 0,5-2 Sekunden). Modern Express Encoder SDK eine weitere Option.

2) Microsoft Research ConferenceXP http://cct.cs.washington.edu/ Voll funktionsfähige Konferenz-API einschließlich Anwendungsstreaming. Sie haben zu niedrige Windows Media-codierte Filter und haben sie in verwalteten Code eingepackt. Funktioniert gut. Leicht anpassbar. Sieht jetzt etwas verlassen aus.

3) Microsoft RTC Client bis Version 1.3 - Kern von Windows Messenger.

Pros: verwaltete Samples von Microsoft, gute Dokumentation, zuverlässige Leistung, frei verteilbar, Microsoft kompatibel (gut) SIP-Stack enthalten. Große Conferencing-Anbieter wie Emblaze VCON basierten ihre Lösungen in naher Vergangenheit, nicht sicher über diese Tage, aber ich weiß, dass Tandberg VC-1 von Microsft lizensiert hat.

Nachteile: Version bis zu 1,3 Unterstützung nur h261-h263 Video. moderne Version mit Unterstützung von VC-1 (h264) Codec erlaubt keine direkte serverlose IP-IP-Verbindungen. Es erfordert Microsoft Live Communications Server. Neuere Version SDK deckt keine guten Videokonferenzanrufe ab.

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

Bitte lassen Sie uns wissen, welche Plattform Sie gewählt haben. Übrigens, ich habe sogar den ConferenceXP-Video-RTP-Teil mit den RTC 1.3-Sprach-/SIP-Funktionen zusammen verwendet, um die Videoqualität zu verbessern, so dass Sie hier eine große Auswahl an verwalteten Technologien haben. Eine andere Sache ist Live Meeting, bei der ich noch keine Gelegenheit hatte, einen guten Blick darauf zu werfen.

+0

Sind diese Informationen noch korrekt? oder es gibt bessere Bibliotheken/Möglichkeiten zum Erstellen von Video-Chat-Anwendungen. –

10

Sparen Sie sich den Ärger und verwenden Sie VLC. Es gibt einige vernünftige .NET Wrapper dafür (http://forum.videolan.org/viewtopic.php?f=32&t=52021&start=30)

Wir verwenden C# und VLC für ein IPTV-Netzwerk. Wir nehmen Eingaben von DISH-Netzwerk-Satelliten über Osprey-450-Videoerfassungsgeräte auf einem Windows XP-Server entgegen. Von dort haben wir eine .NET-Server-Komponente, die wir in C# geschrieben haben, die VLC hinter den Kulissen verwendet (Starten separater Prozesse in .NET, um die vlc.exe-Instanzen zu steuern). Die VLC-Prozesse transkodieren und streamen die Signale über ein Netzwerk (.h264 oder MPEG-4, wir haben beides erfolgreich durchgeführt).

Auf der Client-Seite haben wir eine C# WinForm-Anwendung, die einen eingebetteten VLC Viewer verwendet, um Multicast-Signale anzuzeigen. Diese Anwendung ist hauptsächlich für den Befehl & Kontrolle. Die tatsächliche Verwendung der Multicast-Signale geschieht, wenn unsere Set-Top-Boxen, die an unseren Fernsehgeräten angeschlossen sind, die Streams dekodieren und anzeigen.

Wir dachten, wir müssten auch unsere eigenen DirectX-Encoder schreiben, aber machen Sie sich nicht die Mühe. VLC funktioniert wirklich gut und hat genug C# Unterstützung, um sehr nützlich zu sein. Fühlen Sie sich frei, mir eine E-Mail zu senden, wenn Sie spezifische Fragen zur Implementierung haben.

+0

Was war die Videoqualität, die Sie erreichten? War es außergewöhnlich gut? –

+0

Ja. Wir bekommen sehr gute Videoqualität mit diesem System. Das war eine der Prioritäten, als ich diese Aufgabe bekam. Die .h264-Codierung sieht wirklich gut aus, ist aber sehr prozessorintensiv. Wir verwenden die MPEG-4-Codierung für unser IPTV-System und es sieht gut aus. –

+1

Sie sind richtig für Ihren Anwendungsfall. Meiner Erfahrung nach hat VLC jedoch eine ziemlich hohe Latenz, die es für Video-Chats unbrauchbar macht. – DerMike

2

Sie sollten das Ucentrik SDK überprüfen. Mit diesem SDK können Sie Rich-Media-Funktionen wie Video, Audio, Chat, Remote-Desktop-Freigabe und -Steuerung sowie Videoaufzeichnung in Ihre Anwendungen integrieren. Die unterstützten Video-Codecs sind VP8 (Google), Theora und x.264. Darüber hinaus wird der Rich Media-Datenverkehr in einem HTTP-Protokoll gekapselt, um Firewalls zu ermöglichen, die normalen Webdatenverkehr ermöglichen. Diese Technologie ist komplett kostenlos und Sie können das SDK herunterladen und einen API-Schlüssel anfordern, damit Sie eine Bewertung vornehmen können, ohne Zeit in die Einrichtung der Infrastruktur investieren zu müssen. In den nächsten Monaten veröffentlichen wir eine Serverkomponente, mit der Sie die Infrastruktur selbst oder Ihren Kunden herunterladen und hosten können. Die Technologie unterstützt 1-zu-viele-Verbindungen, was bedeutet, dass Sie Videokonferenzen erstellen können, wenn Sie möchten. Die Funktionen sind sehr modular, so dass Sie nur die Video- oder Audio- oder Desktop-Freigabe oder eine Kombination der Technologien mit demselben SDK integrieren können. Sie sollten ein SDK hier anfordern: www.ucentrik.com. Außerdem gibt es hier einige Videos: http://www.youtube.com/user/ucentrik

viel Glück.

0

Ucentrik hat gerade eine Open-Source-Call-Center-Anwendung veröffentlicht, die die CTX-Technologie integriert. Diese Call-Center-Anwendung implementiert die Funktionen Video, Audio, Desktop-/Anwendungsfreigabe (mit Steuerung) und Textchat, die über die CTX-API verfügbar sind. Die Anwendung enthält auch eine Geschäftslogik, die speziell die Möglichkeit bietet, die Anrufe an einen Agenten weiterzuleiten, der verfügbar ist oder bestimmte Fähigkeiten besitzt. Das Projekt ist unter http://vcca.codeplex.com verfügbar. Bitte beachten Sie, dass Sie Zugriff auf das Ucentrik CTX SDK benötigen, das auf der Ucentrik-Website (www.ucentrik.com) angefordert werden kann. Viel Glück.