2010-11-29 8 views
34

Ich denke über die Entwicklung eines Streaming-Server und ich habe die folgende Frage, über RTSP (Beispiel URL: rtsp://192.168.0.184/myvideo.mpg) oder RTP (Beispiel URL: rtp://192.168.0.184).Was ist der Unterschied zwischen RTP oder RTSP in einem Streaming-Server?

Wie ich verstanden habe, wird ein RTSP Server hauptsächlich für das Streaming von Dateien verwendet, die bereits existieren, dh nicht live. RTP Server wird zum Senden verwendet.

Jemand korrigiert mich, wenn ich falsch liege, habe ich Recht ?.

Was ich einen Server zur Übertragung von Live-Inhalten auf dem Computerbildschirm, das heißt, die zu der Zeit, die im Streaming übertragen wird angezeigt wird, zu entwickeln.

+1

Auch möchten Sie möglicherweise überprüfen (Wortspiel unbeabsichtigt :)) Apples Open-Source-Darwin Streaming Server (um zu vermeiden, das Rad neu zu erfinden - es sei denn, Sie haben benutzerdefinierte Anforderungen nicht durch bestehende Lösungen erfüllt). –

+0

@ JP19 Funktioniert es unter Windows? – Searush

+0

ist das RTP RUL richtig? Müssen Sie die Portnummer angeben? –

Antwort

73

Sie bekommen etwas falsch ... RTSP ist ein Echtzeit-Streaming-Protokoll. Das heißt, Sie können in Echtzeit streamen, was Sie wollen. So können Sie LIVE-Inhalte streamen (egal, was es ist, Video, Audio, Text, Präsentation ...). RTP ist ein Transportprotokoll, das zum Transport von Mediendaten verwendet wird, die über RTSP ausgehandelt werden.

Sie verwenden RTSP, um die Medienübertragung über RTP zu steuern. Sie verwenden es, um den Stream einzurichten, abzuspielen, anzuhalten, abzubrechen ...

Wenn Sie möchten, dass Ihr Server das Streaming nur startet, wenn die URL angefordert wird, können Sie eine Art RTP-only-Server implementieren. Wenn Sie jedoch mehr Kontrolle wünschen und Live-Videos streamen, müssen Sie RTSP verwenden, da es SDP und andere wichtige Decodierungsdaten überträgt.

Lesen Sie die Dokumente, die ich hier verlinkt habe, sie sind ein guter Ausgangspunkt.

+0

: Danke für Ihre Erklärung. Ich versuche, Audio in J2Me Apps zu streamen und ich bin neu für Protokolle. Ich möchte wissen, ob wir RTSP-Anfragen an RTP-Server senden können (Vielleicht werden Änderungen der Portnummer von der Client-App benötigt). Sie erwähnten 'Sie können eine Art RTP-Server implementieren. 'Bedeutet es, dass es Server gibt Kann sowohl rtp, rtcp behandeln? Welche Server (rtp, rtcp) können wir in unserer lokalen Maschine zum Testen verwenden? –

+0

@ Cipi, aber muss ich etwas (SMTP-Server wie rtp, Tools, Programme, etc.) verwenden, um den Computer etwas streamen? Ich meine, wenn ich streamen möchte, erhalte ich Fehler wie diese: http://stackoverflow.com/questions/12007882/ffmpeg-rtp-streaming-error – Searush

+1

Cipi: Nur neugierig zu wissen, ob wir tatsächlich einen Live-Stream anhalten können und dann Spiel erneut spielen. –

4

Ich denke, das ist richtig. RTSP kann RTP intern verwenden.

+0

Das ist in den meisten Fällen richtig, es gibt Fälle, in denen Sie etwas anderes Rtp im Protokoll ersetzen können ..... – Jay

8

Einige Grundlagen:

RTSP-Server kann für tot Quelle als auch für Live-Quelle verwendet werden. RTSP-Protokolle bieten Ihnen Befehle (wie Ihre VCR Remote), und die Funktionalität hängt von Ihrer Implementierung ab.

RTP ist ein Echtzeit-Protokoll für den Transport von Audio und Video in Echtzeit. Der verwendete Transport kann Unicast, Multicast oder Broadcast sein, abhängig von der Transportadresse und dem Port. Neben den Transport von RTP hat viele Dinge für Sie wie eine Paketierung, Neuordnen, Jitter Steuerung, QoS, Unterstützung für Lip sync .....

In Ihrem Fall, wenn Sie wollen Rundfunk Streaming Server dann müssen Sie sowohl RTSP (für Kontrolle) sowie RTP (Rundfunk Audio und Video)

Zunächst Sie von live555

12

AFAIK bereitgestellt durch Beispielcode gehen kann, RTSP überhaupt Ströme nicht überträgt, ist es nur eine out-of Bandsteuerprotokoll mit Funktionen wie PLAY und STOP.

Raw UDP oder RTP over UDP sind Übertragungsprotokolle für Streams wie Raw TCP oder HTTP over TCP.

Um ein bestimmtes Programm über das gegebene Übertragungsprotokoll zu streamen, ein Kapselungsmethode für Ihr Containerformat definiert werden muss. Zum Beispiel kann TS-Container über UDP übertragen werden, aber Matroska kann nicht.

So ziemlich alles kann jedoch über TCP transportiert werden.

(Die Tatsache, dass die Codec Sie verwenden Sie zählt auch indirekt, da sie die Container-Formate beschränken Sie verwenden können.)

0

RTSP (eigentlich RTP) verwendet werden kann Video für das Streaming, aber auch viele andere Arten von Medien einschließlich Live-Präsentationen. Rtsp ist nur das Protokoll, das zum Einrichten der RTP-Sitzung verwendet wird.

Für alle Details können Sie meine Open-Source-RTSP-Server-Implementierung auf der folgenden Adresse finden Sie unter: https://net7mma.codeplex.com/

Oder meinen Artikel @http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp

Es Re-Sourcing unterstützt Ströme sowie die dynamische Erstellung von Streams, verschiedene RFCs sind implementiert und die Bibliothek erreicht eine bessere Leistung und weniger Speicher als FFMPEG und so gut wie alle anderen Lösungen in der Transportschicht und macht sie somit zu einem guten Kandidaten für die Verwendung als zentralisierter Zugangspunkt für die meisten Szenarien.

+1

Ich denke, das ist keine Antwort. – Lobo

+0

Ich weiß in der Tat, dass ich ein Ciphi recht habe ... wir sagen dasselbe! Ich denke, du kannst keine Zeit zum Lesen nehmen und bist stark. – Jay

+3

Ich denke, RTSP ist eigentlich nicht RTP. RTSP ist in der Anwendungsschicht definiert, während RTP in der Transportschicht im OSI-Modell ist (http://www.tomax7.com/aplus/osi_model.htm). – Alston

0

Ich höre deinen Schmerz. Ich mache das gerade jetzt (Jahre später). Von dem, was ich gelernt habe, können Sie sich RTSP als "VCR-Controller" vorstellen, das Protokoll ermöglicht es Ihnen, anzugeben, welche Streams (Präsentationen) Sie spielen möchten, es wird Ihnen dann eine Beschreibung des Mediums und dann Sie senden Mit RTSP können Sie den Remote-Stream wiedergeben, stoppen, anhalten und aufzeichnen. Das Medium selbst geht über RTP. RTSP wird normalerweise über einen anderen Socket oder eine andere Kommunikationsschicht implementiert. Obwohl es einfach ein Protokoll ist, wird es meistens von einem Server über einen Socket implementiert. Bei Live-Streams ist der von Ihnen angeforderte RTSP-Stream einfach ein Name eines Streams. Es muss nicht auf eine Datei auf dem Server verweisen, die RTSP-Implementierung des Servers kann diesen Stream parsen, ein Live-Diagramm zusammenstellen und dann die SDP (Beschreibung) für diesen Stream-Namen bereitstellen. Aber das ist natürlich spezifisch für die Art, wie der RTSP-Server implementiert wurde. Für "Live" -Streams ist es wahrscheinlich einfacher, nur RTP zu verwenden, aber Sie müssen einen Weg finden, um den SDP vom RTP-Server auf den Client zu übertragen, der diesen Stream abspielen möchte.