2009-10-08 7 views
9

Wenn Programme wie Skype Videos von einem Benutzer zu einem anderen strömen und umgekehrt, wie wird das normalerweise erreicht?in Bezug auf Streaming, wie funktioniert ein Programm wie Skype?

Führt Client A einen Stream zu einem Server und Server sendet ihn an Client B?

oder geht es direkt von Client A nach B?

Fühlen Sie sich frei, mich zu korrigieren, wenn ich weg bin und keiner von denen ist richtig.

Antwort

6

Skype ist viel komplizierter als das, weil es Peer to Peer ist, was bedeutet, dass Ihr Stream durch mehrere andere Skype-Clients laufen kann, die als mehrere Server fungieren. Skype hat dafür kein riesiges zentrales System. Skype verfolgt immer mehrere Orte, an die es Ihren Stream senden kann. Wenn einer dieser Orte verschwindet (dieser Skype-Client verschwindet), wird er weiterhin über einen anderen Server/Skype-Client gesendet. Dies geschieht so effizient, dass Sie die Unterbrechung nicht bemerken.

+0

danke dafür. Skype fungiert also gleichzeitig als Server/Client? interessant. Wenn ich ein Video-Streaming-Programm wie Skype machen würde, mit einem zentralen Server (also würde Streams gehen von ClientA -> Server -> ClientB), wäre das langsam? Dies ist ein bisschen tiefer als die ursprüngliche Frage, also zögern Sie nicht zu ignorieren, wenn Sie die Antwort nicht kennen. – sqram

+2

Es ist normalerweise viel besser, einen zentralen Server anstelle der Skype-Methode zu haben. Der Hauptgrund, warum Skype Peer-to-Peer-Methoden verwendet, ist, dass das Unternehmen keine Server einrichten muss und daher weniger Kosten hat. Ich würde einen zentralen Server einrichten, wie Sie auch vorschlagen. Es erleichtert das Einrichten von Verbindungen. –

5

Grundsätzlich ist dies wie erreicht.

1) Kodieren Sie Video/Audio mit der besten Komprimierung, die Sie erhalten können. Gehen Sie verlustbehaftete Komprimierung und viel Aliasing, um Teile von Video und Audio wegzuwerfen, die nicht verwendbar sind. Wie entfernen Hintergrund Rauschen

2) packen Sie Video/Audio in Pakete und setzen Sie einen Zeitstempel auf ihnen. Die Pakete sind normalerweise Datagramme.

3) Pakete direkt zum Ziel senden. Verwenden Sie die am besten geeignete Route. Sie müssen nicht alle Pakete auf die gleiche Weise senden. Verwenden Sie möglichst viele Routen. P2P-Netzwerke verwenden häufig viele Routen zum selben Ziel

4) re-encode am Zielort. Wenn ein Paket zu alt ist, wirf es weg. Wenn Pakete verloren gehen, kümmern Sie sich nicht darum, da es zu spät ist.

5) verbinden Sie das Video zurück und füllen Sie die fehlenden Frames so gut wie möglich aus.

+0

danke. klingt kompliziert, aber ich werde es versuchen. – sqram

+0

Gute und klare Erklärung. Ich bin ein bisschen spät zum Spiel BTW. Aber jetzt habe ich eine Aufgabe, Video von Klienten android auf eine Webseite zu strömen. Wie kann ich es erreichen? Ist das heute die gleiche Technologie? Kannst du mich auf irgendeine Weise führen? Ich weiß nicht einmal, ob es stört, aber mein Umfang ist auf Java und .net beschränkt. – Krishna