Friday 24 November 2017

Live555 Proxy Server Binär Optionen


Ich verwende Live555 Streaming-Medien für eine Anwendung, die RTSP-Streams, die von IP-Kamera kommen, aufzeichnet und re-streams. Dafür verwende ich openRTSP für die Aufnahme und live555 Proxy Server für das Re-Streaming des Kamerastroms. Für ein paar der Kameras stehen wir vor einer seltsamen Frage, wo in der Kamera-Aufnahme erfolgreich passiert ist, aber der live555 Proxy-Server ist nicht in der Lage, einen neuen Stream für den gleichen Kamerastrom zu erzeugen (es gibt keine Anzeichen für einen Ausfall in der ausführlichen Ausgabe-Dump, Aber die von Proxy-Server erzeugte rtsp-URL kann nicht von einem rtsp-Client decodiert werden). Da habe ich keine Ahnung von den live555 Proxy Server Details, ich habe nicht in der Lage, in dieses Problem zu bekommen. Ich habe versucht, die gleiche Kamera Stream mit VLC und das funktioniert gut. Was könnte damit falsch sein. Ich bin hier, indem ich die ausführliche Ausgabe als Referenz anhebe. E :. LiveproxyServergtlive555ProxyServer. exe - V rtsp: 10.17.10.67ch0unicastfirststream LIVE555 Proxy Server (LIVE555 Streaming Media Library Version 2012.05.17) Verbindung zu 10.17.10.67, Port 554 öffnen. RTSP-Stream, Proxy des Streams rtsp: 10.17.10.67ch0unicastfirststream Spielen Sie diesen Stream mit Die URL rtsp: 10.17.1.150proxyStream (Wir verwenden Port 8000 für optionales RTSP-over-HTTP-Tunneling.) Remote-Verbindung geöffnet Sendeanforderung: DESCRIBE rtsp: 10.17.10.67ch0unicastfirststream RTSP1.0 User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2012. 05.17) Empfangen 716 neue Bytes von Antwortdaten. Erhielt eine komplette BESCHREIBUNG Antwort: Ich und Saurabh arbeiten an demselben Projekt. Wir haben versucht zu analysieren, was passiert, indem wir den testRTSPClient verwenden, wie von Ihnen vorgeschlagen und hier ist der ausführliche Dump des testRTSPClient: Öffnen der Verbindung zu 10.17.1.111, Port 8554. Remote-Verbindung geöffnet Sendeanforderung: DESCRIBE rtsp: 10.17.1.111: 8554proxyStream RTSP1 .0 msWin32DebugTestPrograms. exe (LIVE555 Streaming Media v2012.06.26) Empfangen 101 neue Bytes von Antwortdaten. Erhielt eine komplette BESCHREIBEN Antwort: RTSP1.0 404 Datei nicht gefunden, oder in falscher Format Datum: Do, 05. Juli 2012 09:23:54 GMT URL: rtsp: 10.17.1.111: 8554proxyStream: Fehler beim Abrufen einer SDP-Beschreibung: 40 4 Datei nicht gefunden, oder in falscher Format-URL: rtsp: 10.17.1.111: 8554proxyStream: Schließen des Streams Drücken Sie eine beliebige Taste, um fortzufahren. Es scheint, dass der live555-Proxy-Server keine Antwort auf die vom Client gesendeten DESCRIBE-Anforderung (testRTSPClient) bereitstellen kann. Was könnte der Grund dafür sein. Ich bin hiermit den entsprechenden live555 Proxy Server ausführlichen Dump auch als Referenz. LIVE555 Proxy Server (LIVE555 Streaming Media Library Version 2012.06.26) Verbindung zu 10.17.10.67, Port 554 öffnen. RTSP Stream, Proxy des Streams rtsp: 10.17.10.67ch0unicastfirststream Spielen Sie diesen Stream mit der URL rtsp: 10.17.1.111: 8554proxyStream (We Verwenden Sie Port 80 für optionales RTSP-over-HTTP-Tunneling.) Remote-Verbindung geöffnet Sendeanforderung: DESCRIBE rtsp: 10.17.10.67ch0unicastfirststream RTSP1.0 User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2012.06.26) Empfangen 718 neue Bytes von Antwortdaten. Erhielt eine komplette BESCHREIBUNG Antwort: Datum: Do, 05. Juli 2012 09:19:08 GMT 2012-07-06 05:58:23 UTC Vielen Dank für Ihre Antwort. Ich habe Dump Debug Info, die Sie vorgeschlagen haben. Bitte loggen Sie sich unten ein. LOGINFO-START LIVE555 Proxy Server (LIVE555 Streaming Media-Bibliothek Version 2012.06.26) Verbindung zu 10.17.10.56, Port 554 öffnen. RTSP-Stream, Proxy des Streams rtsp: 10.17.10.56ch0unicastfirststream Spielen Sie diesen Stream mit der URL rtsp: 10.17.1.111 : 8554proxyStream (Wir verwenden Port 80 für optionales RTSP-over-HTTP-Tunneling.). Remote-Verbindung geöffnet Sendeanforderung: DESCRIBE rtsp: 10.17.10.56ch0unicastfirststreamRTSP1.0 CSeq: 2 User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2012.06.26) Akzeptieren: applicationsdp Empfangen 716 neue Bytes von Antwortdaten. Erhielt eine komplette BESCHREIBUNG Antwort: RTSP1.0 200 OK CSeq: 2 Datum: Fr, Juli 06 2012 11:05:59 GMT Content-Base: rtsp: 10.17.10.56ch0unicastfirststream Inhalt-Typ: applicationdp Inhalt-Länge: 540 v0 o - 1341318888742256 1 IN IP4 10.17.10.56 sSession des ersten Streams iFirst Codec Stream t0 0 atool: LIVE555 Streaming Media v2007.08.03 atype: broadcast acontrol: arange: npt0- ax-qt-text-nam: Sitzung des ersten Stream ax-qt-Textes - inf: erster Codec Stream mvideo 0 RTPAVP 96 cIN IP4 0.0.0.0 artpmap: 96 MP4V-ES90000 afmtp: 96 Profil-Ebene-ID5config000001B005000001B509000001000000012000847A98 28A02240A31F acontrol: track1 mmetadata 0 RTPAVP 97 cIN IP4 0.0.0.0 artpmap: 97 METADATA64000 acontrol: track2 ProxyServerMediaSessionrtsp : 10.17.10.56ch0unicastfirststream hat neue ProxyServerMediaSubsession für RTPvideoMP4V-ES hinzugefügt ProxyServerMediaSessionrtsp: 10.17.10.56ch0unicastfirststream hat neue ProxyServerMediaSubsession für RTPmetadataMETADATA Spur hinzugefügt Sendeanforderung: OPTIONS rtsp: 10.17.10.56ch0unicastfirststreamRTSP1.0 CSeq: 3 User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2012 .06.26) Empfangen 122 neue Bytes von Antwortdaten. Erhielt eine komplette OPTIONS Antwort: RTSP1.0 200 OK CSeq: 3 Datum: Fr, Juli 06 2012 11:06:33 GMT Öffentlich: OPTIONEN, BESCHREIBEN, SETUP, TEARDOWN, PLAY, PAUSE akzeptieren () ed Verbindung von 10.17.1.111 Lebendigkeit Indikation vom Client bei 10.17.1.111 Lebendigkeitsanzeige vom Client bei 10.17.1.111 RTSPClientSession02060068 :: handleRequestBytes () lesen 161 neue Bytes: DESCRIBE rt sp: 10.17.1.111: 8554proxyStream RTSP1.0 CSeq: 2 User-Agent: testRTSPClient. exe (LIVE555 Streaming Media v2012.05.11) Accept: applicationsdp parseRTSPRequestString () gelang es, cmdName DESCRIBE, urlPreSuffix, urlSuffix proxyStream, CSeq 2, Content-Length 0, mit 0 Bytes nach der Nachricht zurückzugeben. ProxyServerMediaSubsessionMP4V-ES :: createNewStreamSource (Session-ID 0) Initiiert: ProxyServerMediaSubsessionMP4V-ES ProxyServerMediaSubsessionMP4V-ES :: createNewRTPSink () ProxyServerMediaSubsessionMP4V-ES :: closeStreamSource () ProxyServerMediaSubsessionMETADATA :: createNewStreamSource (Session-ID 0) Initiiert: ProxyServerMediaSubsessionMETADATA Antwort zu senden: RTSP1.0 404 Datei nicht gefunden oder in falschem Format CSeq: 2 Datum: Fr, 06.07.2012 05:38:16 GMT Lebendigkeitsanzeige vom Client bei 10.17.1.111 RTSPClientSession02060068 :: handleRequestBytes () Lesen Sie 0 neue Bytes (von 10000) t erminating connection Sendeanforderung: OPTIONEN rtsp: 10.17.10.56ch0unicastfirststreamRTSP1.0 CSeq: 4 User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2012.06.26) Empfangen 122 neue Bytes von Antwortdaten. Erhielt eine komplette OPTIONS Antwort: RTSP1.0 200 OK CSeq: 4 Datum: Fr, 06.07.2012 11:07:10 GMT Öffentlich: OPTIONEN, BESCHREIBUNG, SETUP, TEARDOWN, PLAY, PAUSE Verbindung zum 10.17.10.56, Port 554 öffnen. . Remote-Verbindung geöffnet Sendeanforderung: OPTIONEN rtsp: 10.17.10.56ch0unicastfirststreamRTSP1.0 CSeq: 5 User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2012.06.26) Empfangen 122 neue Bytes von Antwortdaten. Erhielt eine komplette OPTIONS Antwort: RTSP1.0 200 OK CSeq: 5 Datum: Fr, 06.07.2012 11:08:09 GMT Öffentlich: OPTIONEN, BESCHREIBEN, SETUP, TEARDOWN, SPIEL, PAUSE Ich habe verifiziert Debug Info von RTSPServer. cpp ist Bewirkt Es ist das Drucken für andere Arbeitskamera (es druckt die Lebendigkeitsanzeige vom Kunden bei 10.17.1.111 ..) Im aktuellen Protokoll auch einmal seine Drucke Lebendigkeitsanzeige vom Kunden um 10.17.1.111. Und in testRTSPClient gibt folgendes Protokoll an, das ähnlich ist vorher LOG Öffnung Verbindung zu 10.17.1.111, Port 8554.. Remote-Verbindung geöffnet Sendeanforderung: BESCHREIBUNG rtsp: 10.17.1.111: 8554proxyStream RTSP1.0 CSeq: 2 User-Agent: testRTSPClient. exe (LIVE555 Streaming Media v2012.05.11) Akzeptieren: applicationsdp Empfangen 101 neue Bytes von Antwortdaten. Erhielt eine komplette BESCHREIBUNG Antwort: RTSP1.0 404 Datei nicht gefunden, oder in falschem Format CSeq: 2 Datum: Fr, 06.07.2012 05:53:08 GMT Beitrag von Ross Finlayson Das ist sehr seltsam. Ich verstehe nicht, warum der Proxy-Server reagiert 404 Datei nicht gefunden. Auf Anfragen des Kunden. 1 Bearbeiten Sie liveMediaRTSPServer. cpp, und fügen Sie die Zeile definieren DEBUG 1 zum Anfang der Datei. 2 Kompilieren Sie die liveMedia-Bibliothek. 3 Führen Sie in der ProxyServer-Bibliothek die Live555ProxyServer-Binärdatei wieder her. 4 Führen Sie live555ProxyServer - V ltback-end-rtsp-URLgt noch einmal aus und versuchen Sie, eine Verbindung mit dem Client herzustellen. Senden Sie uns die Debugging-Ausgabe vom Proxy-Server. Ross Finlayson Live Networks, Inc. Live555 Live-Devel Mailingliste lists. live555mailmanlistinfolive-devel Vielen Dank für Ihre schnelle Unterstützung. Es funktioniert jetzt. Es kommt auch zu uns bemerkt, dass gleiche Art, gleiche Einstellung unterschiedliche Kamera hat verschiedene Metadaten. Post von Ross Finlayson OK, ich habe das Problem herausgefunden - es wurde durch den nicht standardisierten Metadaten-Track im Back-End-Stream verursacht. Weil diese Spur nicht standardmäßig ist, können wir es nicht verletzen, aber das sollte nicht die andere, Standard-Video-Track vor der Proxade vorgestellt haben. Ive hat nun eine neue Version 2012.07.06 der LIVE555 Streaming Media Software installiert, die dieses Problem beheben soll. Nun sollte Ihr Front-End-Client in der Lage sein, die Videospur zu erhalten OK. Vielen Dank, dass Sie diese Frage auf uns aufmerksam gemacht haben. Ross Finlayson Live Networks, Inc. Live555 Live-Devel Mailingliste lists. live555mailmanlistinfolive-devel 2012-07-14 05:22:32 UTC Wir wären Ihnen dankbar, wenn Sie das, was Sie mit Nicht-Standard-Metadaten verstehen möchten, da wir es versuchen Um das gleiche Problem an unseren Kamerahändler zu melden. Erwarte deine Antwort. Vielen Dank. Am Samstag, 7. Juli 2012 um 10:32 Uhr, Kiran P. Thakkar Post von Kiran P. Thakkar Lieber Ross, Vielen Dank für Ihre schnelle Unterstützung. Es funktioniert jetzt. Es kommt auch zu uns bemerkt, dass gleiche Art, gleiche Einstellung unterschiedliche Kamera hat verschiedene Metadaten. Grüße Kiran Post von Ross Finlayson OK, ich habe das Problem herausgefunden - es wurde durch den nicht standardisierten Metadaten-Track im Back-End-Stream verursacht. Weil diese Spur nicht standardmäßig ist, können wir es nicht verletzen, aber das sollte nicht die andere, Standard-Video-Track vor der Proxade vorgestellt haben. Ive hat nun eine neue Version 2012.07.06 der LIVE555 Streaming Media Software installiert, die dieses Problem beheben soll. Nun sollte Ihr Front-End-Client in der Lage sein, die Videospur zu erhalten OK. Vielen Dank, dass Sie diese Frage auf uns aufmerksam gemacht haben. Ross Finlayson Live Networks, Inc. Live555 Live-Devel Mailing-Liste lists. live555mailmanlistinfolive-devel Live-devel Mailing-Liste lists. live555mailmanlistinfolive-devel 2012-07-17 00:05:31 UTCIm versuchen, Stream rtsp Video über tcp mit mplayer in Windows MinGW-Shell und es hängt von live555 Streaming-Medien-Bibliothek. Die Schritte, die ich getan habe, sind: download the live555 streaming media src baut jede. mak Dateien in srclive (ich benutze nmake f. mak über Kommandozeile, weil mein VS2010 kann nicht erkennen, die. Mak Dateien.) Bauprozess war Erfolg und das Ergebnis sind. Obj Dateien. Das Problem ist mplayer brauchen. a Dateien zu machen und die Build nicht erstellt. Brauche ich wirklich die. a-Dateien Wenn ja, wie bekomme ich es irgendeine andere Build-Methode, die ich verwenden kann, um das zu lösen. Der LIVE555 Proxy Server Der LIVE555 Proxy Server ist ein Unicast RTSP Server - gebaut aus der LIVE555 Streaming Media Software - Das als Proxy für einen oder mehrere Back-End-Unicast - oder Multicast-RTSPRTP-Streams fungiert (dh von anderen Servern bedient). Das Hauptmerkmal eines Proxy-Servers ist, dass es jeden Back-End-Stream nur einmal liest, unabhängig davon, wie viele separate Clients vom Proxy-Server streamen. Dies macht den Proxy-Server ideal, zum Beispiel für das Streaming von einer RTSP-fähigen Videokamera (die möglicherweise nicht mehr als eine Verbindung zu einem Zeitpunkt verarbeiten kann). Grundlegende Bedienung Der LIVE555 Proxy Server ist eine Befehlszeile (i. e. Konsolen) Anwendung. Der einfachste Weg, um es auszuführen, ist zu geben: wo lturlgt eine RTSP-URL ist (d. h. beginnend mit rtsp :) eines Back-End-Streams (z. B. von einer Videokamera). Nach dem Start zeigt der Server seine eigene rtsp: URL für den Proxy-Stream an. RTSP-Clients können dann diese URL verwenden, um den Proxy-Stream zu spielen (d. h. Der Server kann als Proxy für viele Back-End-Streams fungieren - nicht nur einen. Wenn du mehr als eine rtsp: URL auf der Kommandozeile eintippst, dann wird der Server - nach dem Start - rtsp anzeigen: URLs zum Proxying jeder. (Natürlich sollten Sie mehrere Streams nur veröffentlichen, wenn Sie über ausreichende Netzwerkbandbreite verfügen, um sie alle zu empfangen.) Ausführliche (Debugging) - Ausgabe Um eine zusätzliche Ausgabe anzuzeigen, die den grundlegenden Betrieb des Servers zeigt, fügen Sie die Option - v vor dem rtsp hinzu : URLs. Um noch mehr Ausgabe - einschließlich des RTSP-Protokollaustausches zwischen dem Proxy-Server und jedem der Back-End-Server - anzuzeigen, verwenden Sie stattdessen die Option - V (i. e. Großbuchstaben V). (Wenn Sie Probleme mit dem Proxy-Server haben, empfehlen wir Ihnen, die Option - V zu verwenden, um herauszufinden, was falsch ist.) Back-End-Streaming über TCP Standardmäßig wird der Proxy-Server aufgefordert, jeden Back-End-Stream zu empfangen UDP (dh Empfangen von RTP - und RTCP-Paketen als UDP-Datagramme). Manchmal aber kann der Back-End-Server hinter einer Firewall stehen, die UDP-Pakete blockiert. Um dies zu überwinden, können Sie die Option - t verwenden, um anzufordern, dass jeder Back-End-RTSP-Server-Stream RTP - und RTCP-Datenpakete über seine TCP-Verbindung statt der Verwendung von UDP-Paketen. (Beachten Sie, dass nicht alle RTSP-Server TCP-Streaming unterstützen und dass TCP nicht zum Empfangen von Multicast-Streams verwendet werden kann.) Sie sollten diese Option nur verwenden, wenn Sie UDP-Pakete nicht empfangen können, da das Streaming über TCP dazu führen kann, dass eingehende Daten übermäßig verzögert werden . Alternativ können Sie die Option - T lthttp-port-numbergt verwenden, um zu verlangen, dass jeder Back-End-Stream (über TCP) über einen RTSP-over-HTTP-Tunnel mit der angegebenen HTTP-Portnummer gesendet wird. RTSP-over-HTTP-Tunneling kann nützlich sein, wenn Sie hinter einer HTTP-nur Firewall sind. (Beachten Sie jedoch, dass nicht alle Back-End-RTSP-Server dies unterstützen.) Hinweis: Die Optionen - t und - T lthttp-port-numbergt gelten nur für den Back-End-Stream (s). Sie beeinflussen nicht die Front-End-Streams vom Proxy-Server zu (möglicherweise mehrfachen) RTSP-Clients. Diese Streams können entweder UDP oder TCP sein, je nachdem, was jeder Client anfordert. Proxying Zugriffsgesteuerte Streams Einige Back-End-RTSP-Server benötigen eine Benutzerauthentifizierung (über einen Benutzernamen und ein Passwort), bevor Sie auf ihren Stream zugreifen können. Wenn du die Option - u ltusernamegt ltpasswordgt zum Proxy-Server hinzufügst, dann wird es dieses ltusernamegt ltpasswordgt Paar - falls nötig - verwenden, um auf jeden Back-End-Stream zuzugreifen. (Um ein leeres Passwort anzugeben, verwenden Sie für ltpasswordgt.) Alternativ können Sie auch den Benutzernamen und das Kennwort innerhalb des rtsp: URL verwenden, wie: rtsp: ltusernamegt: ltpasswordgt lthostnamegt: ltetc. gt. (Dies wird jedoch nicht empfohlen, da - in diesem Fall - das Passwort im Internet über das Internet gesendet wird. Außerdem werden nicht alle Back-End-Server diese Art von URL akzeptieren.) Beachten Sie, dass es auch möglich ist, Zugriffskontrolle auf den Proxy-Server selbst - also von Front-End-RTSP-Clients. (Dies wird jedoch nicht von der Befehlszeile aus durchgeführt, sondern es erfolgt durch Ändern des Quellcodes des Proxy-Servers. Beachten Sie den Code, der in live555ProxyServer. cpp eingeschlossen ist. Angeben eines RTSP-Server-Portes Standardmäßig versucht diese Server-Anwendung zu Verwenden Sie eine der Standard-RTSP-Server-Portnummern (554 und 8554). Alternativ können Sie die Option - p ltrtsp-port-numbergt verwenden, um festzulegen, dass der Server versucht, die angegebene Portnummer für RTSP zu verwenden (falls dieser Port nicht sein kann Verwendet, dann wird es versuchen, eine der Standard-Port-Nummern, wie üblich.) Proxying ein oder mehrere beworbene Back-End-Streams Diese Server-Anwendung kann auch Proxy für einen Back-End-Stream, die beworben mit einem REGISTER RTSP-Befehl Werbung - die die rtsp: URL des Back-End-Streams angibt - kann entweder vom Back-End-Server selbst oder von einer Drittanbieteranwendung gesendet werden.) Um der Server-Applikation diese Funktionalität zu geben, starten Sie sie mit dem - R Befehlszeilenoption (Wenn Sie diese Option verwenden, können Sie die Eingabe von rtsp: URLs auf der Befehlszeile weglassen.) Der Proxy-Stream ist dann - vom Proxy-Server - mit einer rtsp: URL, die angekündigt wird, zugänglich Die Konsole. Als Besonderheit - wenn der Reuseconnection-Parameter in den REGISTER-Befehlen Transport: header gesetzt wurde - wird der Proxy-Server die TCP-Verbindung wiederverwenden, auf der er den Befehl REGISTER erhielt. Dies kann nützlich sein, wenn der Back-End-Streams-Server hinter einer Firewall oder NAT steht, aber der Proxy-Server wird im öffentlichen Internet ausgeführt. (In diesem Fall können Sie auch die Option - t verwenden, um zu verlangen, dass der Back-End-Server auch seine RTPRTCP-Pakete auf dieselbe TCP-Verbindung sendet.) REGISTER ist ein benutzerdefinierter RTSP-Befehl, der von Live Networks, Inc. entwickelt wurde. Es ist derzeit nicht standardmäßig, wird aber in einem IETF Internet-Entwurf beschrieben. Wenn Sie die Option - R verwenden, dann sollten Sie auch die Option - U ltusernamegt ltpasswordgt verwenden, die einen Benutzernamen und ein Kennwort angibt, das zur Authentifizierung des eingehenden REGISTER-Befehls verwendet werden soll. (Beachten Sie den Unterschied zwischen dem Befehl - u, der einen Benutzernamen und ein Passwort für den Zugriff auf Back-End-Streams sowie den Befehl - U angibt, der einen Benutzernamen und ein Kennwort angibt, um die eingehenden REGISTER-Befehle zu authentifizieren.) Die Anwendung RegisterRTSPStream - im testProgs-Verzeichnis enthalten - kann verwendet werden, um einen Back-End-Stream mit einem Proxy-Server zu registrieren. Quellcode und Support Da diese Anwendung für Computer-Networking-Profis statt Casual Endbenutzer gedacht ist, machen wir sie nicht als vordefinierte Binärdatei verfügbar. Stattdessen musst du es selbst aus dem Quellcode aufbauen. Dazu müssen Sie die LIVE555 Streaming Media Software herunterladen und erstellen. Beachten Sie, dass die LIVE555 Proxy Server-Anwendung im ProxyServer-Unterverzeichnis enthalten ist. Unterstützung für den LIVE555 Proxy Server (und der Rest des LIVE555 Streaming Media Code) erfolgt über unsere Entwickler Mailingliste: live-devellists. live555. Beachten Sie, dass Sie zuerst die Mailing-Liste abonnieren müssen, bevor Sie dazu posten können, lesen Sie bitte auch die FAQ vor der Buchung in die Mailingliste. LIVE555 und das Live Networks-Logo sind Marken von Live Networks, Inc. LIVE555 Streaming Media Dieser Code bildet einen Satz von C-Bibliotheken für Multimedia-Streaming mit offenen Standardprotokollen (RTPRTCP, RTSP, SIP). Diese Bibliotheken, die für Unix (einschließlich Linux und Mac OS X), Windows und QNX (und andere POSIX-kompatible Systeme) kompiliert werden können, können zum Erstellen von Streaming-Anwendungen verwendet werden. Die Bibliotheken werden bereits verwendet, um Anwendungen wie den LIVE555 Media Server und LIVE555 Proxy Server (RTSP Server Anwendungen) und vobStreamer (für das Streaming von DVD-Inhalten mit RTPRTCPRTSP) zu implementieren. Die Bibliotheken können auch verwendet werden, um MPEG, H.265, H.264, H.263, DV oder JPEG Video und mehrere Audio Codecs zu streamen, zu empfangen und zu verarbeiten. Sie können problemlos erweitert werden, um zusätzliche (Audio - und Video-) Codecs zu unterstützen und können auch verwendet werden, um grundlegende RTSP - oder SIP-Clients und - Server zu erstellen und wurden verwendet, um Streaming-Unterstützung für bestehende Media-Player-Anwendungen wie VLC und MPlayer hinzuzufügen. (Für einige spezifische Beispiele, wie diese Bibliotheken verwendet werden können, siehe die folgenden Testprogramme.) Quellcode Der Projektquellcode ist verfügbar - als. tar. gz Datei - hier. Siehe unten für Anleitungen, wie man es baut. (Hinweis: Um diese Software nutzen zu können, müssen Sie sich bewusst sein, wie es lizenziert ist, und Ihre Verpflichtungen aus dieser Lizenz.) Mailingliste Es gibt eine Entwickler-Mailingliste. Live-devellists. live555 Benutzer (oder potenzielle Benutzer) der Bibliotheken werden dazu ermutigt, sich dieser (niedervolumigen) Mailingliste anzuschließen und die Mailinglistenarchive zu überprüfen. (Sie können diese Archive auch mit Google durchsuchen, indem Sie die Website: lists. live555 zu Ihrer Suchanfrage hinzufügen.) Bevor Sie zum ersten Mal in die Mailingliste schreiben, lesen Sie bitte die FAQ, um zu überprüfen, ob Ihre Frage bereits beantwortet wurde. Die primäre Mittel der Unterstützung für diese Bibliotheken ist die Live-devellists. live555 Mailing-Liste oben beschrieben. (Beachten Sie, dass Sie zuerst die Mailingliste abonnieren müssen, bevor Sie dazu posten können.) Planen Sie, RTP (andor RTSP) zu implementieren. Anstatt Ihre eigene Implementierung von Grund auf zu schreiben, sollten Sie diese Bibliotheken verwenden. Sie wurden bereits in vielen realen RTP-basierten Anwendungen eingesetzt und eignen sich hervorragend für den Einsatz in eingebetteten Systemen. Der Code enthält eine Implementierung von RTCP und kann problemlos erweitert werden (über Subclassing), um neue RTP-Payload-Typen zu unterstützen. Hilfsträger Verbesserungen und Erweiterungen der LIVE555 Streaming Media Software: LIVE555 Geförderte Projekte. Beschreibung Der Code enthält die folgenden Bibliotheken mit jeweils einem eigenen Unterverzeichnis: UsageEnvironment Die UsageEnvironment - und TaskScheduler-Klassen werden für die Terminierung von verzögerten Ereignissen, für die Zuweisung von Handlern für asynchrone Leseereignisse und für die Ausgabe von Fehlernachrichten verwendet. Außerdem definiert die HashTable-Klasse die Schnittstelle zu einer generischen Hash-Tabelle, die vom Rest des Codes verwendet wird. Dies sind alle abstrakten Basisklassen, die sie für eine Implementierung subklassen müssen. Diese Unterklassen können die besonderen Eigenschaften der Umgebung ausnutzen, in der das Programm ausgeführt wird - z. B. Seine GUI und eine Scripting-Umgebung. Die Klassen in dieser Bibliothek verkapseln Netzwerkschnittstellen und Sockets. Insbesondere die Gruppeock-Klasse kapselt einen Socket zum Senden (und zu empfangen) Multicast-Datagrammen. Diese Bibliothek definiert eine Klassenhierarchie, die in der Mittelklasse verwurzelt ist - für eine Vielzahl von Streaming-Medientypen und Codecs. BasicUsageEnvironment Diese Bibliothek definiert eine konkrete Implementierung (d. h. Unterklassen) der UsageEnvironment-Klassen für die Verwendung in einfachen Konsolenanwendungen. Lesen von Ereignissen und verzögerten Operationen werden mit einer select () Schleife behandelt. In diesem Verzeichnis werden einige einfache Programme implementiert, die BasicUsageEnvironment verwenden, um zu demonstrieren, wie Anwendungen mit diesen Bibliotheken entwickelt werden können. RTSP-Client testRTSPClient ist ein Befehlszeilenprogramm, das Ihnen zeigt, wie Sie Medienströme öffnen und empfangen, die von einer RTSP-URL angegeben werden - d. h. eine URL, die mit rtsp beginnt: In dieser Demonstrationsanwendung wird mit den empfangenen audiovideo-Daten nichts gemacht. Sie könnten diesen Code jedoch in Ihrer eigenen Anwendung verwenden und anpassen (zB) decodieren und die empfangenen Daten abspielen. OpenRTSP ähnelt testRTSPClient, hat aber viele weitere Features. Es handelt sich um ein Kommandozeilenprogramm, das - anders als testRTSPClient - als komplette, voll funktionsfähige Anwendung verwendet werden soll (anstatt seinen Code in anderen Anwendungen zu verwenden). Weitere Informationen über openRTSP - einschließlich der vielen Befehlszeilenoptionen - finden Sie in der Online-Dokumentation. RTSP Server testOnDemandRTSPServer erstellt einen RTSP Server, der über RTP Unicast aus verschiedenen Mediendateien auf Anfrage streamen kann. (Unterstützte Medientypen umfassen: MPEG-1 oder 2 Audio oder Video (elementarer Stream), einschließlich MP3 Audio MPEG-4 Video (elementarer Stream) H.264 Video (elementarer Stream) H.265 Video (elementarer Stream) MPEG Programm oder Transport Streams, einschließlich VOB-Dateien DV Video AMR Audio WAV (PCM) Audio.) Der Server kann auch Stream aus einer Matroska oder WebM-Datei (durch Demultiplexing und Streaming der Tracks in der Datei). MPEG-Transportströme können auch auf Roh-UDP gestreamt werden, falls gewünscht - z. B. Durch eine Set-Top-Box. Diese Server-Anwendung zeigt auch, wie man - über RTSP - einen MPEG-Transport-Stream liefert, der auf dem Server als UDP - (Roh-UDP - oder RTPUDP) Multicast - oder Unicast-Stream angekommen ist. Insbesondere wird es standardmäßig eingerichtet, um die Eingabe von der TestMPEG2TransportStreamer Demo-Anwendung zu akzeptieren. SIP-Client playSIP ist ein Befehlszeilenprogramm (ähnlich wie openRTSP), das einen Anruf zu einer SIP-Sitzung (mit einem Sip: URL) macht und dann (optional) den eingehenden Medienstrom in eine Datei aufnimmt. MP3 Audio-Testprogramme testMP3Streamer liest immer wieder aus einer MP3-Audiodatei (benannt test. mp3) und streicht es mit RTP an die Multicast-Gruppe 239.255.42.42, Port 6666 (mit RTCP mit Port 6667). Dieses Programm hat auch einen (optionalen) eingebauten RTSP-Server. TestMP3Receiver macht das Gegenteil: Es liest einen MP3RTP-Stream (aus dem gleichen Multicast-Groupport) und gibt den rekonstituierten MP3-Stream an stdout aus. Es sendet auch RTCP Reception Reports. Alternativ könnte der MP3RTP-Stream mit einem dieser Tools gespielt werden. MPEG-Video-Testprogramme testMPEG1or2VideoStreamer liest immer wieder aus einer MPEG-1 oder 2 Videodatei (genannt test. mpg) und streicht es mit RTP an die Multicast-Gruppe 239.255.42.42, Port 8888 (mit RTCP mit Port 8889). Dieses Programm hat auch einen (optionalen) eingebauten RTSP-Server. Standardmäßig wird angenommen, dass die Eingabedatei ein MPEG-Video-Elementarstrom ist. Wenn es aber ein MPEG-Programm-Stream ist, dann kannst du auch einen Demultiplex-Filter einfügen, um den Video-Elementarstrom zu extrahieren. (Siehe testMPEG1or2VideoStreamer. cpp für Details.) Apples QuickTime Player kann verwendet werden, um dieses gestreamte Video zu empfangen und anzuzeigen (vorausgesetzt, dass sein MPEG-1, nicht MPEG-2). Um dies zu nutzen, habe QuickTime Player die Datei testMPEG1or2Video. sdp geöffnet. (Wenn testMPEG1or2VideoStreamers RTSP Server aktiviert wurde, kann QuickTime Player auch den Stream mit einer rtsp: URL abspielen.) Die Open Source VLC und MPlayer Media Player können auch verwendet werden. RealNetworks RealPlayer kann auch verwendet werden, um den Stream zu spielen. (Eine aktuelle Version wird empfohlen.) TestMPEG1or2VideoReceiver macht umgekehrt: Es liest einen MPEG VideoRTP Stream (aus dem gleichen Multicast Groupport) und gibt den rekonstruierten MPEG Video (elementaren) Stream in Stdout aus. Es sendet auch RTCP Reception Reports. TestMPEG4VideoStreamer liest wiederholt aus einer MPEG-4 Elementary Stream Videodatei (benannt test. m4e) und streicht es mit RTP Multicast. Dieses Programm hat auch einen eingebauten RTSP-Server. Apples QuickTime Player kann verwendet werden, um diesen Audio-Stream zu empfangen und abzuspielen. Um dies zu nutzen, habe der Spieler die Sessions rtsp: URL (die das Programm druckt, wie es beginnt Streaming). Die Open Source VLC und MPlayer Media Player können auch verwendet werden. TestH264VideoStreamer liest immer wieder aus einer H.264 Elementary Stream Videodatei (genannt test.264) und streicht es mit RTP Multicast. Dieses Programm hat auch einen eingebauten RTSP-Server. Apples QuickTime Player kann verwendet werden, um diesen Audio-Stream zu empfangen und abzuspielen. Um dies zu nutzen, habe der Spieler die Sessions rtsp: URL (die das Programm druckt, wie es beginnt Streaming). Die Open Source VLC und MPlayer Media Player können auch verwendet werden. TestH265VideoStreamer liest wiederholt aus einer H.265 Elementary Stream Videodatei (benannt test.265) und streicht es mit RTP Multicast. Dieses Programm hat auch einen eingebauten RTSP-Server. MPEG audiovideo (Programm Stream) Testprogramme testMPEG1or2AudioVideoStreamer liest eine MPEG-1 oder 2 Programm Stream Datei (genannt test. mpg), extrahiert daraus ein Audio und ein Video Elementary Stream und streicht diese mit RTP an die Multicast Gruppe 239.255. 42.42, Port 66666667 (für den Audio-Stream) und 88888889 (für den Video-Stream). Dieses Programm hat auch einen (optionalen) eingebauten RTSP-Server. Apples QuickTime Player kann verwendet werden, um dieses gestreamte Video zu empfangen und anzuzeigen (vorausgesetzt, dass es sein MPEG-1, nicht MPEG-2). Um dies zu nutzen, hast QuickTime Player die Datei testMPEG1or2AudioVideo. sdp. (Wenn testMPEG1or2VideoStreamers RTSP Server aktiviert wurde, kann QuickTime Player auch den Stream mit einer rtsp: URL abspielen.) Die Open Source VLC und MPlayer Media Player können auch verwendet werden. TestMPEG1or2Splitter liest eine MPEG-1 oder 2 Programm-Stream-Datei (benannt in. mpg) und extrahiert daraus ein Audio - und ein Video-Elementar-Stream. Diese beiden Elementary Streams werden in Dateien mit dem Namen outaudio. mpg und outvideo. mpg geschrieben. MPEG audiovideo (Transport Stream) Testprogramme testMPEG2TransportStreamer liest eine MPEG Transport Stream Datei (genannt test. ts) und streicht es mit RTP an die Multicast Gruppe 239.255.42.42, Port 1234 (mit RTCP mit Port 1235). Dieses Programm hat auch einen (optionalen) eingebauten RTSP-Server. Der Open Source VLC Media Player kann verwendet werden, um diesen Stream zu spielen. TestMPEG2TransportReceiver macht umgekehrt: Es liest einen MPEG TransportRTP Stream (aus dem gleichen Multicast Groupport) und gibt den rekonstruierten MPEG Transport Stream Stream in Stdout aus. Es sendet auch RTCP Reception Reports. TestMPEG1or2ProgramToTransportStream liest eine MPEG-1 oder 2 Programm-Stream-Datei (benannt in. mpg) und konvertiert sie in eine äquivalente MPEG-Transport-Stream-Datei namens out. ts. TestH264VideoToTransportStream liest eine H.264 Video Elementary Stream Datei (benannt in.264) und konvertiert sie in eine äquivalente MPEG Transport Stream Datei, benannt out. ts. TestH265VideoToTransportStream liest eine H.265 Video Elementary Stream Datei (benannt in.265) und konvertiert sie in eine äquivalente MPEG Transport Stream Datei, benannt out. ts. PCM-Audiotest-Programm testWAVAudioStreamer liest aus einer WAV-Format-Audiodatei (namens test. wav) und streamt den beiliegenden PCM-Audiostream über IP-Multicast mit einem eingebauten RTSP-Server aus. Das Programm unterstützt 8 oder 16-Bit-PCM-Streams, Mono oder Stereo, bei jeder Sampling-Frequenz. Apples QuickTime Player kann verwendet werden, um diesen Audio-Stream zu empfangen und abzuspielen. Um dies zu nutzen, habe der Spieler die Sessions rtsp: URL (die das Programm druckt, wie es beginnt Streaming). Optional können 16-Bit-PCM-Streams vor dem Streaming in ein 8-Bit-U-Gesetz-Format konvertiert werden. (Siehe testWAVAudioStreamer. cpp für Anleitungen, wie dies zu tun ist.) Die Open Source VLC und MPlayer Media Player können auch verwendet werden. AMR-Audiotest-Programm testAMRAudioStreamer liest aus einer AMR-Format-Audiodatei (benannt test. amr) - wie in RFC 3267, Abschnitt 5 definiert - und streamt den beiliegenden Audio-Stream über IP-Multicast mit einem eingebauten RTSP-Server. Apples QuickTime Player kann verwendet werden, um diesen Audio-Stream zu empfangen und abzuspielen. Um dies zu nutzen, habe der Spieler die Sessions rtsp: URL (die das Programm druckt, wie es beginnt Streaming). DV-Video-Test-Programm testDVVideoStreamer liest aus einer DV-Videodatei (genannt test. dv) und streicht es über IP-Multicast, mit einem eingebauten RTSP-Server. Gegenwärtig kennen wir keinen weit verbreiteten Mediaplayer, der diesen Stream spielen kann. Matroska (oder Webm) Streaming Test Programm testMKVStreamer liest aus einer Matroska (oder Webm) Datei (genannt test. mkv) und streams es über IP Multicast, mit einem eingebauten RTSP Server. VOB (DVD) Streaming-Testprogramm vobStreamer liest eine oder mehrere. vob-Dateien (z. B. von einer DVD), extrahiert die Audio - und Video-Streams und überträgt sie mit RTP-Multicast. Unterstützung für Server-Trick-Play-Operationen auf MPEG-Transport-Stream-Dateien Die Anwendungen MPEG2TransportStreamIndexer und testMPEG2TransportStreamTrickPlay Verschiedene Testprogramme testRelay liest wiederholt von einem UDP-Multicast-Socket und sendet (relays) jede Pakete Payload auf eine neue (Multicast - oder Unicast-) Adresse und Port. TestReplicator ist vergleichbar mit testRelay. Außer dass es den Eingabestrom - unter Verwendung der FrameReplicator-Klasse - repliziert und einen Replikatstrom zu einer anderen (Multicast - oder Unicast-) Adresse und Port erneut sendet, während der andere Replikat-Stream in eine Datei geschrieben wird. SapWatch liest und druckt SDPSAP-Ankündigungen auf dem Standard-SDPSAP-Verzeichnis (224.2.127.2549875) registerRTSPStream sendet einen benutzerdefinierten RTSP REGISTER-Befehl an einen bestimmten RTSP-Client (oder Proxy-Server) und bittet ihn, von einer gegebenen rtsp: URL zu streamen. WindowsAudioInputDevice This is an implementation of the liveMedia librarys AudioInputDevice abstract class. This can be used by a Windows application to read PCM audio samples from an input device. (This project builds two libraries: libWindowsAudioInputDevicemixer. lib, which uses Windows built-in mixer, and libWindowsAudioInputDevicenoMixer. lib, which doesnt.) How to configure and build the code on Unix (including Linux, Mac OS X, QNX, and other Posix-compliant systems) The source code package can be found (as a. tar. gz file) here. Use tar - x and gunzip (or tar - xz, if available) to extract the package then cd to the live directory. Then run where ltos-platformgt is your target platform - e. g. linux or solaris - defined by a config. ltos-platformgt file. This will generate a Makefile in the live directory and each subdirectory. Then run make. If the make fails, you may need to make small modifications to the appropriate config. ltos-platformgt file, and then re-run genMakefiles ltos-platformgt . (E. g. you may need to add another - I ltdirgt flag to the COMPILEOPTS definition.) Some people (in particular, FreeBSD users) have reported that the GNU version of make - often called gmake - works better than their default, pre-installed version of make. (In particular, you should try using gmake if you encounter linking problems with the ar command.) If youre using gcc version 3.0 or greater: You may also wish to add the - Wno-deprecated flag to CPLUSPLUSFLAGS. If no config. ltos-platformgt file exists for your target platform, then try using one of the existing files as a template. If you wish, you can also install the headers, libraries, and applications by running make install. How to configure and build the code on Windows Unpack and extract the. tar. gz file (using an application such as WinZip). If the tools directory on your Windows machine is something other than c:Program FilesDevStudioVc, change the TOOLS32 line in the file win32config. In a command shell, cd to the live directory, and run This will generate - in each subdirectory - a. mak makefile suitable for use by (e. g.) Microsoft Visual Studio. Alternatively, if youre starting from a Unix machine, you can generate the Windows Makefiles by running (after - if necessary - changing the TOOLS32 line in the file win32config, as noted above). Then, copy the live directories and its subdirectories (in ASCII mode) to a Windows machine. To use these Makefiles from within Visual Studio, use the Open Workspace menu command, then (in the file selection dialog) for Files of type, choose Makefiles (.mak). Visual Studio should then prompt you, asking if you want to use this Makefile to set up a new project. Say OK. Note that you will need to build each of the UsageEnvironment, groupsock, liveMedia, and BasicUsageEnvironment projects first . before building testProgs. If you wish, you can build the WindowsAudioInputDevice project also. Doug Kosovic notes: Visual C 2003 no longer comes with the old IO Streams headers iostreams. h et al, or the corresponding library msvcirt. lib. So anybody trying to build the LIVE555 code with VC 2003 might find the following useful: A non-sourcecode modification workaround for VC 2003 is to copy the missing headers and msvcirt. lib from VC 2002. In file win32config add an extra - I switch to COMPILEOPTS to find the old headers and a - LIBPATH: switch to LINKOPTS0 to find msvcirt. lib. If youre using the Borland C compiler The instructions above assume that you use Microsoft Visual Studio (version 5 or greater) as your C development environment. If, however, you are using Borlands development tools, then the instructions above are amended as follows: Before running the genWindowsMakefiles. cmd script, edit it to replace each occurrence of win32config with win32config. Borland. After running genWindowsMakefiles, edit each of the new Makefiles by following these instructions. (Please read this before posting questions to the mailing list.) Source code license This code is open source, and is released under the LGPL. This allows you to use these libraries (via linking) inside closed-source products. It also allows you to make closed-source binary extensions to these libraries - for instance, to support proprietary media codecs that subclass the existing liveMedia class hierarchy. Nonetheless, we hope that subclass extensions of these libraries will also be developed under the LGPL, and contributed for inclusion here. We encourage developers to contribute to the development and enhancement of these libraries. Extend the liveMedia library to support even more media types andor codecs. Supply additional UsageEnvironment subclassed implementations - e. g. for use with scripted environments, such as Tcl, Python, or Perl. Expand the RTCP implementation to support more SDES items (other than just CNAME), and to more completely handle incoming RTCP packets. In places the code uses data types such as unsigned, where instead specific lengths (e. g. 32 bits) are required. The data types should be changed in each such case. Fix the groupsock implementation so that it could use IPv6 instead of IPv4. (At present, 4-byte addresses are hard-wired into the code in several places.) Switch to using ISO-conformant C headers (but in such a way that the code can remain portable across both Unix (using gcc) and Windows (using Visual C)). Implement network sockets (groupsocks) as liveMedia sources. This will make the code for RTP sources more consistent with the rest of the liveMedia library, allowing them to be FramedFilters. (This will make it possible to use synthetic network sockets - e. g. for debugging or simulation.) Add support for SRTP (secure RTP), and perhaps also RTSP-over-TLS. Some third-party applications Several third-party devices and applications have made use of the LIVE555 Streaming Media Software. Here is a list of some of them: RaspberrIPCam - a full HD IP Camera based on Raspberry Pi Network-enabled, RTP-streaming Security Cameras. from RVision The LMLM4 MPEG-4 audiovideo hardware encoder PCI board. from Linux Media Labs. WIS Technologies media encoders. (The wis-streamer server application - for Linux - can be used to stream from many of these encoders.) Elphel Network Video Cameras (with optional JPEG streaming over RTP ). The Cam. ly wireless security camera system uses openRTSP to archive recorded video. The VLC media player (uses the LIVE555 Streaming Media libraries for its RTSP client implementation). The MPlayer media player. Ralf Globischs Video Processing Project - a RTSP client DirectShow Filter Morgan RTP DirectShow TM Filters , from Morgan Multimedia Omnimeeting - a videoconferencing application Network-Integrated Multimedia Middleware (NMM) , from Saarland University ivrworx - a SIP IVR application - uses LIVE555 Streaming Media code for RTP mixing LiveMediaStreamer - an open source multimedia framework If you would like your product (or project) added to this list, please send email to the developers mailing list.

No comments:

Post a Comment