Thursday 8 December 2016

Live555 Proxy Server Binary Options

FFmpeg-Protokolldokumentation Dieses Dokument beschreibt die Ein - und Ausgabeprotokolle der libavformat-Bibliothek. Die Bibliothek libavformat bietet einige allgemeine globale Optionen, die auf alle Protokolle eingestellt werden können. Zusätzlich kann jedes Protokoll so genannte private Optionen unterstützen, die für diese Komponente spezifisch sind. Die Liste der unterstützten Optionen folgt: protocolwhitelist list (input) Setzt eine quotierte, trennbare Liste der erlaubten Protokolle. QuotALLquot stimmt mit allen Protokollen überein. Protokolle, die mit dem Quotienten vorangestellt sind, werden deaktiviert. Alle Protokolle sind standardmäßig zugelassen, aber Protokolle, die von einem anderen Protokoll (verschachtelte Protokolle) verwendet werden, sind auf eine pro Protokollteilmenge beschränkt. Protokolle sind konfigurierte Elemente in FFmpeg, die den Zugriff auf Ressourcen ermöglichen, die bestimmte Protokolle erfordern. Wenn Sie Ihr FFmpeg-Build konfigurieren, werden alle unterstützten Protokolle standardmäßig aktiviert. Mit der configure-Option quotndashlist-protocolsquot können Sie alle verfügbaren Listen auflisten. Sie können alle Protokolle mit der configure-Option quotndashdisable-protocolsquot deaktivieren und selektiv ein Protokoll mit der Option quotndashenable-protocol PROTOCOL quot aktivieren oder ein bestimmtes Protokoll mit der Option quotndashdisable-protocol PROTOCOL quittieren. Die Option quot-protocolsquot der ff-Tools zeigt die Liste der unterstützten Protokolle an. Alle Protokolle akzeptieren die folgenden Optionen: Maximale Zeit bis zum Abschluß der (Netzwerk) Lese - / Schreiboperationen in Mikrosekunden. Es folgt eine Beschreibung der derzeit verfügbaren Protokolle. Asynchronous Data Filling Wrapper für Eingangsstrom. Füllen Sie Daten in einen Hintergrund-Thread, um die E / A-Operation vom Demux-Thread zu entkoppeln. Lesen oder Schreiben in eine Datei. Eine Datei-URL kann die Form haben: wobei Dateiname der Pfad der zu lesenden Datei ist. Eine URL, die nicht über ein Protokollpräfix verfügt, wird als Datei-URL angenommen. Abhängig vom Build wird auch eine URL, die wie ein Windows-Pfad mit dem Laufwerksbuchstaben am Anfang aussieht, als Datei-URL angenommen (in der Regel nicht für Builds für unix-ähnliche Systeme). Zum Beispiel, um von einer Datei input. mpeg mit ffmpeg zu lesen, verwenden Sie den Befehl: Dieses Protokoll akzeptiert die folgenden Optionen: Trunkate vorhandene Dateien beim Schreiben, wenn auf 1 gesetzt. Ein Wert von 0 verhindert das Verkürzen. Der Standardwert ist 1. Stellen Sie die maximale Blockgröße des I / O-Vorgangs in Byte ein. Der Standardwert ist INTMAX. Was zu einer Beschränkung der angeforderten Blockgröße führt. Wenn Sie diesen Wert relativ niedrig einstellen, wird die Reaktionszeit der Benutzerbeendigungsanforderung verbessert, was für Dateien auf langsamem Medium wertvoll ist. FTP (Dateiübertragungsprotokoll). Lesen oder Schreiben von entfernten Ressourcen mit dem FTP-Protokoll. Folgende Syntax ist erforderlich. Dieses Protokoll akzeptiert die folgenden Optionen. Legen Sie die Zeitüberschreitung in den Mikrosekunden der Socket-E / A-Operationen fest, die von der darunter liegenden Low-Level-Operation verwendet werden. Standardmäßig ist sie auf -1 gesetzt, dh das Timeout wird nicht angegeben. Kennwort, das beim Anmelden als anonymer Benutzer verwendet wird. Normalerweise sollte eine E-Mail-Adresse verwendet werden. Kontrolle der Suchbarkeit der Verbindung während der Codierung. Wenn sie auf 1 gesetzt ist, sollte die Ressource suchbar sein, wenn sie auf 0 gesetzt ist, wird davon ausgegangen, daß sie nicht suchbar ist. Der Standardwert ist 0. HINWEIS: Das Protokoll kann als Ausgang verwendet werden, es wird jedoch empfohlen, es nicht zu tun, es sei denn, besondere Vorsicht ist geboten (Tests, benutzerdefinierte Serverkonfiguration usw.). Unterschiedliche FTP-Server verhalten sich während des Suchvorgangs unterschiedlich. Ff-Tools können aufgrund von Server-Einschränkungen unvollständige Inhalte erzeugen. Dieses Protokoll akzeptiert die folgenden Optionen: Wenn es auf 1 gesetzt ist, versucht das Protokoll den Lesevorgang am Ende der Datei und ermöglicht das Lesen von Dateien, die noch geschrieben werden. Um dies zu beenden, müssen Sie entweder die Option rwtimeout verwenden oder den Interrupt-Callback (für API-Benutzer) verwenden. Lesen Sie Apple HTTP Live Streaming kompatiblen segmentierten Stream als eine einheitliche. Die M3U8-Playlists, die die Segmente beschreiben, können Remote-HTTP-Ressourcen oder lokale Dateien sein, auf die über das Standarddateiprotokoll zugegriffen wird. Das verschachtelte Protokoll wird deklariert, indem nach dem hls-URI-Schema-Namen ein Proto quot angegeben wird, wobei proto entweder als filequot oder quothttpquot angegeben wird. Mit diesem Protokoll wird entmutigt - die hls demuxer sollte genauso gut funktionieren (wenn nicht, bitte melden Sie die Fragen) und ist vollständiger. Verwenden Sie stattdessen den hls demuxer, verwenden Sie einfach die direkten URLs zu den m3u8 Dateien. HTTP (Hyper Text Transfer Protocol). Dieses Protokoll akzeptiert die folgenden Optionen: Kontrolle der Erreichbarkeit der Verbindung. Wenn sie auf 1 gesetzt ist, soll die Ressource selektierbar sein, wenn sie auf 0 gesetzt wird, wird davon ausgegangen, daß sie nicht suchbar ist. Wenn sie auf -1 gesetzt wird, versucht sie, automatisch zu erkennen, ob sie suchbar ist. Der Standardwert ist -1. Wenn auf 1 ein chunkiertes Transfer-Encoding für Beiträge eingestellt ist, ist die Standardeinstellung 1. Einen bestimmten Inhaltstyp für die POST-Meldungen oder für den Hörmodus festlegen. HTTP-Proxy zum Tunnel durch z. B. Beispiel: 1234 Setzen Sie benutzerdefinierte HTTP-Header, können in Standard-Header überschreiben. Der Wert muss eine Zeichenfolge sein, die die Header kodiert. Verwenden Sie persistente Verbindungen, wenn auf 1 festgelegt, ist Standardeinstellung 0. Setzen Sie benutzerdefinierte HTTP-Postdaten. Überschreiben Sie den User-Agent-Header. Wenn nicht angegeben, verwendet das Protokoll einen String, der das libavformat-Build beschreibt. (QuotLavf / ltversiongtquot) Dies ist eine veraltete Option, können Sie useragent stattdessen verwenden. Legen Sie die Zeitüberschreitung in den Mikrosekunden der Socket-E / A-Operationen fest, die von der darunter liegenden Low-Level-Operation verwendet werden. Standardmäßig ist sie auf -1 gesetzt, dh das Timeout wird nicht angegeben. Wenn gesetzt, wird eof wie ein Fehler behandelt und führt zu einer erneuten Verbindung, dies ist nützlich für Live / endlose Streams. Wenn gesetzt, werden auch gestreamte / nicht suchbare Datenströme auf Fehler wiederhergestellt. Legt die maximale Verzögerung in Sekunden fest, nach der die Verbindung wiederhergestellt werden soll. Exportieren Sie den MIME-Typ. Wenn auf 1 Anforderung ICY (SHOUTcast) Metadaten vom Server gesetzt. Wenn der Server dies unterstützt, müssen die Metadaten von der Anwendung durch Lesen der icymetadataheader und icymetadatapacket Optionen abgerufen werden. Der Standardwert ist 1. Wenn der Server ICY-Metadaten unterstützt, enthält dieser die ICY-spezifischen HTTP-Antwortheader, die durch Zeilenumbrüche getrennt sind. Wenn der Server ICY-Metadaten unterstützt und eisig auf 1 gesetzt wurde, enthält dies das letzte nicht leere Metadatenpaket, das vom Server gesendet wird. Es sollte in regelmäßigen Abständen von Anwendungen in Mid-Stream-Metadaten aktualisiert interessiert sein. Legen Sie die zu sendenden Cookies in zukünftigen Anfragen fest. Das Format jedes Cookies entspricht dem Wert eines Set-Cookie-HTTP-Antwortfeldes. Mehrere Cookies können durch ein Zeilenumbruchzeichen abgegrenzt werden. Anfangsbyte-Offset setzen. Versuchen Sie, die Anforderung auf Byte vor diesem Offset zu begrenzen. Bei Verwendung als Client-Option wird die HTTP-Methode für die Anforderung festgelegt. Bei Verwendung als Serveroption wird die HTTP-Methode festgelegt, die vom Client erwartet wird. Wenn die erwartete und die empfangene HTTP-Methode nicht mit dem Client übereinstimmen, wird eine fehlerhafte Anforderungsantwort erhalten. Beim Deaktivieren der HTTP-Methode wird jetzt nicht geprüft. Dies wird in Zukunft durch eine automatische Erkennung ersetzt. Wenn auf 1 gesetzt, wird der experimentelle HTTP-Server aktiviert. Diese können verwendet werden, um Daten zu senden, wenn sie als Ausgabeoption verwendet werden, oder Daten von einem Client mit HTTP-POST lesen, wenn sie als Eingabeoption verwendet werden. Wenn auf 2 gesetzt, wird ein experimenteller Multi-Client-HTTP-Server aktiviert. Dies ist in ffmpeg. c oder ffserver. c noch nicht implementiert und darf daher nicht als Kommandozeilenoption verwendet werden. Einige HTTP-Anforderungen werden verweigert, es sei denn, Cookie-Werte werden mit der Anforderung übergeben. Die Cookies-Option ermöglicht es, diese Cookies anzugeben. Zumindest muss jedes Cookie einen Wert zusammen mit einem Pfad und einer Domäne angeben. HTTP-Anforderungen, die sowohl der Domäne als auch dem Pfad entsprechen, werden automatisch den Cookie-Wert im Feld HTTP-Cookie-Header enthalten. Mehrere Cookies können durch eine Newline abgegrenzt werden. Die erforderliche Syntax zum Abspielen eines Streams, der ein Cookie angibt, lautet: Icecast-Protokoll (Stream zu Icecast-Servern) Dieses Protokoll akzeptiert die folgenden Optionen: Legen Sie das Stream-Genre fest. Legen Sie den Stream-Namen fest. Legen Sie die Stream-Beschreibung fest. Legen Sie die URL der Stream-Website fest. Legen Sie fest, ob der Stream öffentlich sein soll. Der Standardwert ist 0 (nicht öffentlich). Überschreiben Sie den User-Agent-Header. Wenn nicht, wird ein String des Formulars quotLavf / ltversiongtquot verwendet. Setzen Sie das Icecast Mountpoint-Passwort. Legen Sie den Stream-Inhaltstyp fest. Diese Einstellung muss eingestellt werden, wenn sie sich von Audio / mpeg unterscheidet. Dies ermöglicht die Unterstützung für die Icecast-Versionen lt 2.4.0, die nicht die HTTP-PUT-Methode unterstützen, sondern die SOURCE-Methode. MMS (Microsoft Media Server) Protokoll über TCP. MMS (Microsoft Media Server) Protokoll über HTTP. Die gewünschte Syntax ist: MD5-Ausgangsprotokoll. Berechnet den MD5-Hash der zu schreibenden Daten, und beim Schließen schreibt dieser an die angegebene Ausgabe oder stdout, wenn keine angegeben ist. Es kann verwendet werden, um Muxer zu testen, ohne eine eigentliche Datei zu schreiben. Einige Beispiele folgen. Beachten Sie, dass einige Formate (in der Regel MOV) erfordern das Ausgangsprotokoll zu suchen, so dass sie mit dem MD5-Ausgangsprotokoll fehl. UNIX-Pipe-Zugriffsprotokoll. Lesen und Schreiben von UNIX-Pipes. Die akzeptierte Syntax ist: number ist die Zahl, die dem Dateideskriptor der Pipe entspricht (z. B. 0 für stdin, 1 für stdout, 2 für stderr). Wenn die Nummer nicht angegeben ist, wird standardmäßig der Stdout-Dateideskriptor zum Schreiben verwendet, stdin zum Lesen. Zum Beispiel, um von stdin mit ffmpeg zu lesen. Zum Schreiben an stdout mit ffmpeg. Dieses Protokoll akzeptiert die folgenden Optionen: Stellen Sie die maximale Blockgröße der I / O-Operation in Byte ein. Der Standardwert ist INTMAX. Was zu einer Beschränkung der angeforderten Blockgröße führt. Wenn dieser Wert relativ niedrig eingestellt ist, verbessert sich die Reaktionszeit der Benutzerbeendigungsanforderung, was wertvoll ist, wenn die Datenübertragung langsam ist. Beachten Sie, dass einige Formate (in der Regel MOV), erfordern das Ausgabeprotokoll zu suchen, so dass sie mit dem Pipe-Ausgangsprotokoll fehlschlagen. Pro-MPEG-Code für die Praxis 3 Release 2 FEC-Protokoll. Der Pro-MPEG CoP3 FEC ist ein 2D-Parity-Check-Forward-Fehlerkorrekturmechanismus für MPEG-2 Transport-Streams, die über RTP gesendet werden. Dieses Protokoll muss in Verbindung mit dem rtpmpegts-Muxer und dem rtp-Protokoll verwendet werden. Die erforderliche Syntax ist: Die Ziel-UDP-Ports sind Port 2 für die Spalte FEC-Stream und Port 4 für die Zeile FEC-Stream. Dieses Protokoll akzeptiert die folgenden Optionen: Anzahl der Spalten (4-20, LxD lt 100) Die Anzahl der Zeilen (4-20, LxD lt 100) Echtzeit-Messaging-Protokoll. Das Real-Time Messaging Protocol (RTMP) wird für das Streaming von Multimedia-Inhalten über ein TCP / IP-Netzwerk verwendet. Die erforderliche Syntax lautet: Die akzeptierten Parameter sind: Ein optionaler Benutzername (meist für die Veröffentlichung). Ein optionales Passwort (meist zum Veröffentlichen). Die Adresse des RTMP-Servers. Die Nummer des zu verwendenden TCP-Anschlusses (standardmäßig 1935). Es ist der Name der Anwendung, auf die Sie zugreifen können. Er entspricht in der Regel dem Pfad, in dem die Anwendung auf dem RTMP-Server installiert ist (z. B. / ondemand /. / Flash / live / etc.). Sie können den vom URI analysierten Wert auch über die Option rtmpapp überschreiben. Es ist der Pfad oder Name der Ressource zu spielen mit Bezug auf die Anwendung in app angegeben. Kann durch quotp4 vorangestellt werden: Sie können den vom URI analysierten Wert auch über die Option rtmpplaypath überschreiben. Handeln Sie als Server und hören Sie auf eine eingehende Verbindung. Maximale Wartezeit für die eingehende Verbindung. Impliziert zu hören. Zusätzlich können über Kommandozeilenoptionen (oder im Code über AVOption s) folgende Parameter eingestellt werden: Name der zu verbindenden Applikation auf dem RTMP-Server. Diese Option überschreibt den im URI festgelegten Parameter. Setzen Sie die Client-Pufferzeit in Millisekunden. Der Standardwert ist 3000. Zusätzliche willkürliche AMF-Verbindungsparameter, die von einer Zeichenfolge analysiert werden, z. B. Wie B: 1 S: authMe O: 1 NN: Code: 1,23 NS: Flag: okO: 0. Jeder Wert wird durch ein einzelnes Zeichen gekennzeichnet, das den Typ, B für Boolean, N für Zahl, S für String, O für Objekt oder Z für Null angibt, gefolgt von einem Doppelpunkt. Für Booleans müssen die Daten entweder 0 oder 1 für FALSE bzw. TRUE sein. Ebenso müssen für Objekte die Daten 0 oder 1 sein, um ein Objekt zu beenden bzw. ein Objekt zu starten. Datenelemente in Unterobjekten können benannt werden, indem der Typ mit rsquoNrsquo vorangestellt wird und der Name vor dem Wert angegeben wird (d. h. NB: myFlag: 1). Diese Option kann mehrfach verwendet werden, um beliebige AMF-Sequenzen zu konstruieren. Version des Flash-Plugins, das zum Ausführen des SWF-Players verwendet wird. Die Voreinstellung ist LNX 9,0,124,2. (Beim Veröffentlichen ist der Standardwert FMLE / 3.0 (kompatibel ltlibavformat versiongt).) Anzahl der Pakete, die in derselben Anfrage gelöscht wurden (nur RTMPT). Der Standardwert ist 10. Geben Sie an, dass das Medium ein Live-Stream ist. Keine Wiederaufnahme oder Suche in Live-Streams ist möglich. Der Standardwert ist beliebig. Was bedeutet, dass der Teilnehmer zuerst versucht, den im Playpace angegebenen Live-Stream abzuspielen. Wenn ein Live-Stream dieses Namens nicht gefunden wird, wird der aufgenommene Stream wiedergegeben. Die anderen möglichen Werte sind live und aufgezeichnet. URL der Webseite, in die die Medien eingebettet wurden. Standardmäßig wird kein Wert gesendet. Stream-ID zu spielen oder zu veröffentlichen. Diese Option überschreibt den im URI festgelegten Parameter. Name der Live-Stream zu abonnieren. Standardmäßig wird kein Wert gesendet. Es wird nur gesendet, wenn die Option angegeben ist oder wenn rtmplive auf Live gesetzt ist. SHA256 Hash der dekomprimierten SWF-Datei (32 Bytes). Größe der dekomprimierten SWF-Datei, die für SWFVerification erforderlich ist. URL des SWF-Players für die Medien. Standardmäßig wird kein Wert gesendet. URL zur Spieler-swf Akte, berechnet Hash / Größe automatisch. URL des Ziel-Streams. Defaults zu proto: // host: port / app. Zum Beispiel, um mit ffplay eine Multimedia-Ressource mit dem Namen quotsamplequot aus der Anwendung quotexquot von einem RTMP-Server zu lesen. Quotmyserverquot: Um einen passwortgeschützten Server zu veröffentlichen, indem Sie die Playpath - und App-Namen separat übergeben: Verschlüsseltes Echtzeit-Messaging-Protokoll. Das verschlüsselte Echtzeit-Messaging-Protokoll (RTMPE) wird zum Streamen von Multimediainhalten in standardmäßigen kryptographischen Primitiven verwendet, die aus Diffie-Hellman-Schlüsselaustausch und HMACSHA256 bestehen und ein Paar von RC4-Schlüsseln erzeugen. Real-Messaging-Protokoll über eine sichere SSL-Verbindung. Das Real-Time Messaging-Protokoll (RTMPS) wird für das Streaming von Multimedia-Inhalten über eine verschlüsselte Verbindung verwendet. Echtzeit-Messaging-Protokoll getunnelt über HTTP. Das durch HTTP (RTMPT) getunnelte Real-Time Messaging-Protokoll wird für das Streaming von Multimedia-Inhalten innerhalb von HTTP-Anfragen verwendet, um Firewalls zu durchlaufen. Verschlüsselte Echtzeit-Messaging-Protokoll getunnelt durch HTTP. Das durch HTTP (RTMPTE) getunnelte verschlüsselte Echtzeit-Messaging-Protokoll wird zum Streamen von Multimedia-Inhalten innerhalb von HTTP-Anforderungen verwendet, um Firewalls zu durchlaufen. Echtzeit-Messaging-Protokoll getunnelt durch HTTPS. Das durch HTTPS (RTMPTS) getunnelte Real-Time Messaging-Protokoll wird zum Streamen von Multimedia-Inhalten in HTTPS-Anfragen verwendet, um Firewalls zu durchlaufen. Libsmbclient erlaubt es, CIFS / SMB-Netzwerkressourcen zu manipulieren. Folgende Syntax ist erforderlich. Dieses Protokoll akzeptiert die folgenden Optionen. Setzen Sie die Zeitüberschreitung in Millisekunden der Socket-I / O-Operationen, die von der darunter liegenden Low-Level-Operation verwendet werden. Standardmäßig ist sie auf -1 gesetzt, dh das Timeout wird nicht angegeben. Trunkate vorhandene Dateien beim Schreiben, wenn sie auf 1 gesetzt ist. Ein Wert von 0 verhindert das Verkürzen. Der Standardwert ist 1. Stellen Sie die Arbeitsgruppe ein, die für die Herstellung von Verbindungen verwendet wird. Standardmäßig wird Arbeitsgruppe nicht angegeben. Secure File Transfer Protocol über libssh Lesen oder Schreiben von entfernten Ressourcen mithilfe des SFTP-Protokolls. Folgende Syntax ist erforderlich. Dieses Protokoll akzeptiert die folgenden Optionen. Zeitlimit für Socket-I / O-Operationen festlegen, die von der zugrunde liegenden Low-Level-Operation verwendet werden. Standardmäßig ist sie auf -1 gesetzt, dh das Timeout wird nicht angegeben. Trunkate vorhandene Dateien beim Schreiben, wenn sie auf 1 gesetzt ist. Ein Wert von 0 verhindert das Verkürzen. Der Standardwert ist 1. Geben Sie den Pfad der Datei an, die den privaten Schlüssel enthält, der während der Autorisierung verwendet werden soll. Standardmäßig sucht libssh nach Schlüsseln im Beispiel: Eine auf dem entfernten Server gespeicherte Datei abspielen. Real-Messaging-Protokoll und seine Varianten unterstützt durch librtmp. Erfordert das Vorhandensein der librtmp-Header und - Bibliothek während der Konfiguration. Sie müssen explizit das Build mit quotndashenable-librtmpquot konfigurieren. Wenn diese Option aktiviert ist, wird dies das native RTMP-Protokoll ersetzen. (RTMPT), verschlüsselte RTMP (RTMPE), RTMP über SSL / TLS (RTMPS) und getunnelte Varianten dieser verschlüsselten Typen (RTMPTE, RTMPTS) . Die erforderliche Syntax ist: wobei rtmpproto eine der Strings quotrtmpquot, quotrtmtquot, quotrtmpequot, quotrtmpsquot, quotrtmptequot, quotrtmptsquot entsprechend jeder RTMP-Variante und Server ist. Hafen. App und Playpath die gleiche Bedeutung wie für das RTMP-Protokoll. Optionen enthält eine Liste der durch Leerzeichen getrennten Optionen des Formschlüssels val. Weitere Informationen finden Sie in der librtmp-Handbuchseite (man 3 librtmp). Zum Beispiel, um eine Datei in Echtzeit zu einem RTMP-Server mit ffmpeg zu streamen. Um den gleichen Stream mit ffplay abzuspielen. Echtzeit-Transportprotokoll. Die erforderliche Syntax für eine RTP-URL lautet: rtp: // hostname: port option val. Port gibt den zu verwendenden RTP-Port an. Folgende URL-Optionen werden unterstützt: Setzen Sie den TTL-Wert (Time-To-Live) (nur für Multicast). Stellen Sie den Remote-RTCP-Port auf n. Stellen Sie den lokalen RTP-Port auf n. Stellen Sie den lokalen RTCP-Port auf n. Legen Sie die maximale Paketgröße (in Bytes) auf n fest. Führen Sie eine Verbindung () auf der UDP-Socket (wenn auf 1 gesetzt) ​​oder nicht (wenn auf 0 gesetzt). Liste zulässige Quell-IP-Adressen. Nicht zulässige (blockierte) Quell-IP-Adressen auflisten. Senden Sie Pakete an die Quelladresse des zuletzt empfangenen Pakets (falls auf 1 gesetzt) ​​oder auf eine Standard-Remoteadresse (falls auf 0 gesetzt). Stellen Sie den lokalen RTP-Port auf n. Dies ist eine veraltete Option. Stattdessen sollte localrtpport verwendet werden. Wenn rtcpport nicht gesetzt ist, wird der RTCP-Port auf den RTP-Portwert plus 1 gesetzt. Wenn localrtpport (der lokale RTP-Port) nicht gesetzt ist, wird jeder verfügbare Port für die lokalen RTP - und RTCP-Ports verwendet. Wenn localrtcpport (der lokale RTCP-Port) nicht gesetzt ist, wird er auf den lokalen RTP-Portwert plus 1. Real-Time Streaming Protocol gesetzt. RTSP ist nicht technisch ein Protokoll-Handler in libavformat, es ist ein Demuxer und Muxer. Der Demuxer unterstützt sowohl normale RTSP (mit Daten übertragen über RTP wird dies von z. B. Apple und Microsoft verwendet) und Real-RTSP (mit Daten übertragen über RDT). Der Muxer kann verwendet werden, um einen Stream mit RTSP ANNOUNCE an einen Server zu senden, der ihn unterstützt (derzeit Darwin Streaming Server und Mischa Spiegelmockrsquos RTSP Server). Die erforderliche Syntax für eine RTSP-URL lautet: Optionen können in der Befehlszeile ffmpeg / ffplay gesetzt oder über AVOption s oder avformatopeninput in Code eingegeben werden. Folgende Optionen werden unterstützt. Starten Sie den Stream nicht sofort, wenn er auf 1 gesetzt ist. Der Standardwert ist 0. Setzen Sie RTSP-Transportprotokolle. Er akzeptiert die folgenden Werte: lsquo udp rsquo Verwenden Sie UDP als unteres Transportprotokoll. Lsquo tcp rsquo Verwenden Sie TCP (Interleaving innerhalb des RTSP-Steuerkanals) als unteres Transportprotokoll. Lsquo udpmulticast rsquo Verwenden Sie UDP-Multicast als unteres Transportprotokoll. Lsquo http rsquo Verwenden Sie HTTP-Tunneling als unteres Transportprotokoll, das für das Übergeben von Proxys nützlich ist. Mehrere niedrigere Transportprotokolle können spezifiziert werden, in diesem Fall werden sie eins nach dem anderen ausprobiert (wenn das Setup von einem fehlschlägt, wird das nächste versucht). Für den Muxer werden nur die Optionen lsquo tcp rsquo und lsquo udp rsquo unterstützt. Folgende Werte werden akzeptiert: lsquo filtersrc rsquo Akzeptieren Sie Pakete nur von der ausgehandelten Peer-Adresse und dem Port. Lsquo listen rsquo Tritt als Server auf und hört auf eine eingehende Verbindung. Lsquo prefertcp rsquo TCP für RTP-Transport zuerst versuchen, wenn TCP als RTSP RTP-Transport vorhanden ist. Der Standardwert lsquo ist kein rsquo. Legen Sie die Medientypen fest, die vom Server akzeptiert werden sollen. Folgende Flags werden akzeptiert: lsquo video rsquo lsquo audio rsquo lsquo data rsquo Standardmäßig werden alle Medientypen akzeptiert. Legen Sie den lokalen lokalen UDP-Port fest. Der Standardwert ist 5000. Stellen Sie den maximalen lokalen UDP-Port ein. Der Standardwert ist 65000. Maximale Zeitüberschreitung (in Sekunden), um auf eingehende Verbindungen zu warten. Ein Wert von -1 bedeutet unendlich (Standard). Diese Option bedeutet, dass die rtspflags auf lsquo listen rsquo gesetzt sind. Setzen Sie die Anzahl der Pakete, um Puffer für die Behandlung von umgeordneten Pakete. Setzen Sie Socket TCP I / O Timeout in Mikrosekunden. Überschreiben Sie den User-Agent-Header. Wenn nicht angegeben, wird standardmäßig die libavformat-Bezeichner-Zeichenfolge verwendet. Beim Empfangen von Daten über UDP versucht der Demuxer, empfangene Pakete neu zu ordnen (da sie außer Betrieb kommen können oder Pakete total verloren gehen). Dies kann deaktiviert werden, indem die maximale Demuxingverzögerung auf Null gesetzt wird (über das maxdelay-Feld von AVFormatContext). Beim Betrachten von Multibitrat-Real-RTSP-Streams mit ffplay. Können die anzuzeigenden Streams mit - vst n und - ast n für Video und Audio ausgewählt werden und können durch Drücken von v und a eingeschaltet werden. Die folgenden Beispiele nutzen alle die Tools ffplay und ffmpeg. Sehen Sie einen Stream über UDP, mit einer maximalen Umordnungsverzögerung von 0,5 Sekunden: Sehen Sie einen Stream über HTTP getunnelt: Senden Sie einen Stream in Echtzeit an einen RTSP-Server, für andere zu sehen: Erhalten Sie einen Stream in Echtzeit: Session Ankündigung Protokoll (RFC 2974) . Dies ist nicht technisch ein Protokoll-Handler in libavformat, es ist ein Muxer und Demuxer. Es wird für die Signalisierung von RTP-Streams verwendet, indem der SDP für die Streams regelmäßig an einem separaten Port angekündigt wird. Die Syntax für ein SAP-Url des Muxers lautet: Die RTP-Pakete werden am Port an das Ziel gesendet. Oder Port 5004, wenn kein Port angegeben ist. Optionen ist eine amp-getrennte Liste. Folgende Optionen werden unterstützt: Geben Sie die Ziel-IP-Adresse für das Senden der Ankündigungen an an. Falls nicht angegeben, werden die Ansagen an die häufig verwendete SAP Ansage-Multicastadresse 224.2.127.254 (sap. mcast. net) oder ff0e :: 2: 7ffe gesendet, wenn Ziel eine IPv6-Adresse ist. Geben Sie den Port an, an den die Ankündigungen gesendet werden sollen, die Standardwerte auf 9875, wenn nicht angegeben. Legen Sie die Zeit für den Live-Wert für die Ankündigungen und RTP-Pakete fest, Standardwert 255. Wenn auf 1 gesetzt, senden Sie alle RTP-Streams auf demselben Port-Paar. Wenn null (der Standardwert), werden alle Datenströme auf eindeutige Ports gesendet, wobei jeder Datenstrom auf einem Port 2 höher als der vorherige ist. VLC / Live555 erfordert diese Einstellung auf 1, um den Stream empfangen zu können. Der RTP-Stack in libavformat für den Empfang erfordert, dass alle Streams auf eindeutige Ports gesendet werden. Beispiel-Befehlszeilen folgen. Um einen Stream auf dem lokalen Subnetz zu senden, um in VLC zu sehen: Ähnlich ist für das Ansehen in ffplay. Introduction UDP IPTV zu RTSP Proxy ist ein leichter GNU / Linux-Daemon, der, auf einem LAN-Router installiert, auf Anfrage Zugriff auf UDP bietet Multicast-Streams über RTSP und Unicast-RTP-Protokolle. Seit Version 0.2 wird die herkömmliche HTTP-Streaming-Methode unterstützt. Der Server unterstützt nicht das Streaming von Dateien, sondern kann nur eingehende Multicast-Streams empfangen und an interessierte Clients weiterleiten. Der Hauptzweck der Software besteht darin, einfachen IPTV-Dienst für kleine Office - oder Heim-Ethernet - und / oder Wi-Fi-LANs bereitzustellen, bei denen das Upgrade des Netzwerks, um Multicast korrekt zu behandeln, keine Option ist. Die Software ist nicht dafür gedacht, umfangreiche Installationen und Dienstclients zu behandeln, denen Sie nicht vertrauen (wie öffentliches Internet). Sie können die neueste Entwicklungsversion aus dem SVN-Repository beziehen. Bitte beachten Sie, dass dies eine Entwicklungsversion ist und als kostenloser Bonus mehr Bugs erwarten kann als gewöhnlich. Freigegebene als stabil sind im Abschnitt Downloads. Schnellstart Laden Sie die Quelle herunter. Kompilieren Sie es mit GNU make und GCC. Dies sollte eine Binärdatei namens iptv2rtsp-Proxy erzeugen. Sie können die Binärdatei an eine geeignete Stelle kopieren oder mit der Quelle zum Testen behalten. Ausführen des Servers mit ./iptv2rtsp-proxy - f - s lt YOURIP gt - l lt LISTENPORT gt ./iptv2rtsp-proxy - f - s 192.168.10.10 - l 5555 Verbinden, indem Sie eine URL in Ihrem Mediaplayer öffnen: rtsp: // lt SERVERIP gt: lt LISTENPORT gt / iptv / lt MCASTGROUP gt / lt UDPPORT gt Zufällige Hinweise: Die Option - f gibt an, dass der Server im Vordergrund bleibt, sehen Sie die Diagnoseausgabe in Ihrem Terminal, drücken Sie CtrlC zum Beenden. - s ist keine IP-Adresse. Server hört Verbindungen an - es wird als SDP-Ursprung verwendet. Der Server hört auf eine beliebige Adresse. - l gibt den RTSP-Port an. Der Standardwert ist 554. Das bedeutet, dass Sie eine Root-Berechtigung zum Starten eines Servers benötigen, so dass im obigen Beispiel 5555 verwendet wird. Mit den Optionen - c und - p können die Namen der Konfigurations - und PID-Dateien angegeben werden. Wenn aus irgendeinem Grund müssen Sie eine Verbindung zum Server und Sie sind hinter einem NAT stellen Sie sicher, dass Ihr NAT unterstützt RTSP-Protokoll (oft theyre nicht). Für Linux können Sie NAT Helper installieren: mike. it-loops / rtsp /. Bitte beachten Sie: Wenn Sie die RTSP-Portnummer nicht verwenden, muss dieser Port als nfconntrackrtsp angegeben werden. HTTP-Protokoll Hinweis: Es gibt im Wesentlichen keine Signalisierung zwischen Server und Client, fast keine Kontrolle über TCP-Verhalten, all dies macht Fehlerbehandlung und Wiederherstellung extrem schwierig. Wenn der Server feststellt, dass er keine Daten mehr oder weniger zuverlässig an den Client senden kann, wird die Verbindung geschlossen. Der Server hat einen festen Puffer für gestreamte Daten, dieser Puffer wird schnell überlaufen, wenn der Client keine Daten empfangen (oder decodieren) kann. Überfluteter Puffer kann Streaming-Daten schwer beschädigt, so dass Client zu dekodieren, so dass das Problem noch schlimmer und keine Chance, sich zu erholen. Einige Clients behandeln Netzwerk kontinuierliche Downloads als Dateien, das ist falsch. Siehe en. wikipedia. org/wiki/PushE28093pullstrategy für Details. Kurz gesagt: Server sendet Daten von Servern Uhr, theres keine Möglichkeit, dies zu ändern. Richtiges Verhalten für Client wäre, alle Daten zu empfangen und zu verarbeiten, sobald sie verfügbar sind. Alternativ dazu werden Daten von Clients empfangen. Ohne korrekte Synchronisation (und in der Regel keine) ist es möglich, Socket-Puffer zu überlaufen (wenn Send-Rate höher als Empfang oder Stream beschädigt ist) effektiv Stalling alle Übertragung für diesen Client. RFC2502 - RTP: Ein Transportprotokoll für Echtzeitanwendungen RFC2326 - RTSP (Real Time Streaming Protocol) RFC2327 - SDP: Session Description Protocol Das Ziel ist nicht zu implementieren Diese vollständig, nur Teile, die von beliebter Software benötigt werden, um richtig zu funktionieren. RTSP-Protokoll unterstützt PAUSE-Anforderungen, aber dieser Server soll nur mit Live-Streams arbeiten und hat keine PVR-Funktionalität. Während es möglich ist, das Streaming zu unterbrechen, ist es unmöglich, von dem Punkt fortzusetzen, an dem es pausiert wurde. Nach der Wiederaufnahme werden Audio / Video-Decoder so funktionieren, als gäbe es einen großen Paketverlust. Es ist möglich, FEC-Systeme für RTP zu implementieren, aber es sieht aus wie es keine Kunden unterstützen FEC jetzt. Der RTSP-Kompatibilitätsclient sendet keine PAUSE-Anfragen. Pause wird von einem Client emuliert und das Streaming wird fortgesetzt. Während der Pause-Client sendet weder RTCP-Berichte noch RTSP-Anfragen, um Session-Timeout zu verhindern. Als Ergebnis Session-Timeouts und theres keine Möglichkeit, festzustellen, ob seine noch am Leben. Teil von Elecard MPEG-2 PlugIn für WMP und ggf. andere Software. Als DirectShow-Filter dieses Produkt ermöglicht Windows Media Player und andere Spieler zu verstehen, RTSP-Protokoll. SourceForge Finden und Entwickeln Software-Kopie 2016 Slashdot Media. Alle Rechte vorbehalten. Holen Sie sich aktuelle Updates über Open Source-Projekte, Konferenzen und News. Melden Sie sich für den SourceForge-Newsletter an: LIVE555 Streaming Media Dieser Code bildet einen Satz von C-Bibliotheken für Multimedia-Streaming unter Verwendung von offenen Standardprotokollen (RTP / RTCP, 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 RTP / RTCP / RTSP) zu implementieren. Die Bibliotheken können auch zum Streamen, Empfangen und Verarbeiten von MPEG-, H.265-, H.264-, H.263-, DV - oder JPEG-Videos und mehreren Audio-Codecs verwendet werden. Sie können problemlos erweitert werden, um zusätzliche (Audio - und / oder 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 hinzuzufügen MPlayer. (Für einige spezifische Beispiele, wie diese Bibliotheken verwendet werden können, finden Sie in den Testprogrammen unten.) Quellcode Der Projektquellcode ist verfügbar - als. tar. gz-Datei - hier. Siehe unten für Anweisungen, wie es zu bauen. (Hinweis: Zur Verwendung dieser Software müssen Sie sich bewusst sein, wie es lizenziert ist, und Ihre Verpflichtungen aus dieser Lizenz.) Mailing-Liste Es ist eine Entwickler-Mailing-Liste. Leben-devellists. live555. Benutzern (oder potenziellen Nutzern) der Bibliotheken wird empfohlen, sich dieser (verbleibenden) Mailingliste anzuschließen und / oder die Mailinglisten-Archive zu überprüfen. (Sie können diese Archive auch über 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. Das primäre Hilfsmittel für diese Bibliotheken ist die oben beschriebene Mailingliste live-devellists. live555. (Beachten Sie, dass Sie zuerst die Mailing-Liste abonnieren müssen, bevor Sie eine Nachricht senden können.) Planen Sie die Implementierung von RTP (und / oder RTSP) Anstatt eine eigene Implementierung von Grund auf neu zu schreiben, sollten Sie diese Bibliotheken in Betracht ziehen. Sie wurden bereits in vielen realen RTP-basierten Anwendungen eingesetzt und sind für den Einsatz in eingebetteten Systemen gut geeignet. Der Code enthält eine Implementierung von RTCP und kann leicht erweitert werden (über Subclassing), um neue RTP-Nutzdatentypen zu unterstützen. Helfen Sie, Verbesserungen und Erweiterungen der LIVE555 Streaming Media-Software zu unterstützen: LIVE555 Geförderte Projekte. Beschreibung Der Code enthält die folgenden Bibliotheken mit jeweils einem eigenen Unterverzeichnis: UsageEnvironment Die Klassen UsageEnvironment und TaskScheduler werden zum Scheduling von deferred Events, zum Zuweisen von Handlern für asynchrone Leseereignisse und zur Ausgabe von Fehler - / Warnmeldungen verwendet. Außerdem definiert die HashTable-Klasse die Schnittstelle zu einer generischen Hash-Tabelle, die von dem Rest des Codes verwendet wird. Dies sind alle abstrakten Basisklassen, die sie zur Verwendung in einer Implementierung subklassen müssen. Diese Unterklassen können die besonderen Eigenschaften der Umgebung, in der das Programm ausgeführt wird, ausnutzen - z. B. Seiner GUI - und / oder Scripting-Umgebung. Die Klassen in dieser Bibliothek verkapseln Netzwerkschnittstellen und Sockets. Insbesondere kapselt die Groupsock-Klasse einen Socket zum Senden (und / oder Empfangen) von Multicast-Datagrammen. Diese Bibliothek definiert eine Klassenhierarchie - verwurzelt in der Mittelklasse - 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. Leseereignisse und verzögerte Operationen werden mit einer select () - Schleife behandelt. Dieses Verzeichnis implementiert einige einfache Programme, die BasicUsageEnvironment verwenden, um zu zeigen, wie Anwendungen mit diesen Bibliotheken entwickelt werden. RTSP-Client testRTSPClient ist ein Befehlszeilenprogramm, das Ihnen zeigt, wie Sie Medienströme öffnen und empfangen, die durch eine RTSP-URL festgelegt werden - dh eine URL, die mit rtsp beginnt: // In dieser Demonstrationsanwendung wird mit dem empfangenen Audio / Videodaten. Sie könnten diesen Code jedoch in Ihrer eigenen Anwendung verwenden und anpassen, um (zB) die empfangenen Daten zu decodieren und wiederzugeben. OpenRTSP ist ähnlich zu testRTSPClient, hat aber viele weitere Features. It is a command-line program that - unlike testRTSPClient - is intended to be used as a complete, full-featured application (rather than having its code used within other applications). For more information about openRTSP - including its many command-line options - see the online documentation. RTSP server testOnDemandRTSPServer creates a RTSP server that can stream, via RTP unicast, from various types of media file, on demand. (Supported media types include: MPEG-1 or 2 audio or video (elementary stream), including MP3 audio MPEG-4 video (elementary stream) H.264 video (elementary stream) H.265 video (elementary stream) MPEG Program or Transport streams, including VOB files DV video AMR audio WAV (PCM) audio.) The server can also stream from a Matroska or WebM file (by demultiplexing and streaming the tracks within the file). MPEG Transport Streams can also be streamed over raw UDP, if requested - e. g. by a set-top box. This server application also demonstrates how to deliver - via RTSP - a MPEG Transport Stream that arrived at the server as a UDP (raw-UDP or RTP/UDP) multicast or unicast stream. In particular, it is set up, by default, to accept input from the testMPEG2TransportStreamer demo application. SIP client playSIP is a command-line program (similar to openRTSP) that makes a call to a SIP session (using a sip: URL), and then (optionally) records the incoming media stream into a file. MP3 audio test programs testMP3Streamer repeatedly reads from a MP3 audio file (named test. mp3), and streams it, using RTP, to the multicast group 239.255.42.42, port 6666 (with RTCP using port 6667). This program also has an (optional) built-in RTSP server. testMP3Receiver does the reverse: It reads a MP3/RTP stream (from the same multicast group/port), and outputs the reconstituted MP3 stream to stdout. It also sends RTCP Reception Reports. Alternatively, the MP3/RTP stream could be played using one of these tools. MPEG video test programs testMPEG1or2VideoStreamer repeatedly reads from a MPEG-1 or 2 video file (named test. mpg), and streams it, using RTP, to the multicast group 239.255.42.42, port 8888 (with RTCP using port 8889). This program also has an (optional) built-in RTSP server. By default, the input file is assumed to be a MPEG Video Elementary Stream. If, however, it is a MPEG Program Stream, then you can also insert a demultiplexing filter to extract the Video Elementary Stream. (See testMPEG1or2VideoStreamer. cpp for details.) Apples QuickTime Player can be used to receive and view this streamed video (provided that its MPEG-1, not MPEG-2). To use this, have QuickTime Player open the file testMPEG1or2Video. sdp. (If testMPEG1or2VideoStreamers RTSP server has been enabled, then QuickTime Player can also play the stream using a rtsp:// URL.) The Open Source VLC and MPlayer media players can also be used. RealNetworks RealPlayer can also be used to play the stream. (A recent version is recommended.) testMPEG1or2VideoReceiver does the reverse: It reads a MPEG Video/RTP stream (from the same multicast group/port), and outputs the reconstituted MPEG video (elementary) stream to stdout. It also sends RTCP Reception Reports. testMPEG4VideoStreamer repeatedly reads from a MPEG-4 Elementary Stream video file (named test. m4e), and streams it using RTP multicast. This program also has a built-in RTSP server. Apples QuickTime Player can be used to receive and play this audio stream. To use this, have the player open the sessions rtsp:// URL (which the program prints out as it starts streaming). The Open Source VLC and MPlayer media players can also be used. testH264VideoStreamer repeatedly reads from a H.264 Elementary Stream video file (named test.264), and streams it using RTP multicast. This program also has a built-in RTSP server. Apples QuickTime Player can be used to receive and play this audio stream. To use this, have the player open the sessions rtsp:// URL (which the program prints out as it starts streaming). The Open Source VLC and MPlayer media players can also be used. testH265VideoStreamer repeatedly reads from a H.265 Elementary Stream video file (named test.265), and streams it using RTP multicast. This program also has a built-in RTSP server. MPEG audiovideo (Program Stream) test programs testMPEG1or2AudioVideoStreamer reads a MPEG-1 or 2 Program Stream file (named test. mpg), extracts from this an audio and a video Elementary Stream, and streams these, using RTP, to the multicast group 239.255.42.42, port 6666/6667 (for the audio stream) and 8888/8889 (for the video stream). This program also has an (optional) built-in RTSP server. Apples QuickTime Player can be used to receive and view this streamed video (provided that its MPEG-1, not MPEG-2). To use this, have QuickTime Player open the file testMPEG1or2AudioVideo. sdp. (If testMPEG1or2VideoStreamers RTSP server has been enabled, then QuickTime Player can also play the stream using a rtsp:// URL.) The Open Source VLC and MPlayer media players can also be used. testMPEG1or2Splitter reads a MPEG-1 or 2 Program Stream file (named in. mpg), and extracts from this an audio and a video Elementary Stream. These two Elementary Streams are written into files named outaudio. mpg and outvideo. mpg respectively. MPEG audiovideo (Transport Stream) test programs testMPEG2TransportStreamer reads a MPEG Transport Stream file (named test. ts), and streams it, using RTP, to the multicast group 239.255.42.42, port 1234 (with RTCP using port 1235). This program also has an (optional) built-in RTSP server. The Open Source VLC media player can be used to play this stream. testMPEG2TransportReceiver does the reverse: It reads a MPEG Transport/RTP stream (from the same multicast group/port), and outputs the reconstituted MPEG Transport Stream stream to stdout. It also sends RTCP Reception Reports. testMPEG1or2ProgramToTransportStream reads a MPEG-1 or 2 Program Stream file (named in. mpg), and converts it to an equivalent MPEG Transport Stream file, named out. ts. testH264VideoToTransportStream reads a H.264 Video Elementary Stream file (named in.264), and converts it to an equivalent MPEG Transport Stream file, named out. ts. testH265VideoToTransportStream reads a H.265 Video Elementary Stream file (named in.265), and converts it to an equivalent MPEG Transport Stream file, named out. ts. PCM audio test program testWAVAudioStreamer reads from a WAV-format audio file (named test. wav), and streams the enclosed PCM audio stream via IP multicast, using a built-in RTSP server. The program supports 8 or 16-bit PCM streams, mono or stereo, at any sampling frequency. Apples QuickTime Player can be used to receive and play this audio stream. To use this, have the player open the sessions rtsp:// URL (which the program prints out as it starts streaming). Optionally, 16-bit PCM streams can be converted to 8-bit u-law format prior to streaming. (See testWAVAudioStreamer. cpp for instructions on how to do this.) The Open Source VLC and MPlayer media players can also be used. AMR audio test program testAMRAudioStreamer reads from a AMR-format audio file (named test. amr) - as defined in RFC 3267, section 5 - and streams the enclosed audio stream via IP multicast, using a built-in RTSP server. Apples QuickTime Player can be used to receive and play this audio stream. To use this, have the player open the sessions rtsp:// URL (which the program prints out as it starts streaming). DV video test program testDVVideoStreamer reads from a DV video file (named test. dv), and streams it via IP multicast, using a built-in RTSP server. At present, we know of no widely-available media player client that can play this stream. Matroska (or Webm) streaming test program testMKVStreamer reads from a Matroska (or Webm) file (named test. mkv), and streams it via IP multicast, using a built-in RTSP server. VOB (DVD) streaming test program vobStreamer reads one or more. vob files (e. g. from a DVD), extracts the audio and video streams, and transmits them using RTP multicast. Support for server trick play operations on MPEG Transport Stream files The applications MPEG2TransportStreamIndexer and testMPEG2TransportStreamTrickPlay Miscellaneous test programs testRelay repeatedly reads from a UDP multicast socket, and retransmits (relays) each packets payload to a new (multicast or unicast) address and port. testReplicator is similar to testRelay . except that it replicates the input stream - using the FrameReplicator class - and retransmits one replica stream to another (multicast or unicast) address and port, while writing the other replica stream to a file. sapWatch reads and prints SDP/SAP announcements made on the default SDP/SAP directory (224.2.127.254/9875) registerRTSPStream sends a custom RTSP REGISTER command to a given RTSP client (or proxy server), asking it to stream from a given rtsp:// URL. 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 I/O 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 and/or 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 audio/video 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