Der SmartPump-Server Ein tolles Stück Technik. 2Der SmartPump Server Architektur...

Preview:

Citation preview

Der SmartPump-Server

Ein tolles Stück Technik

Der SmartPump Server 2

Architektur

Kontrollkommunikation

RTP-Videostrom

Client

ServerRTSP

Pipeline

Daten

Der SmartPump Server 3

Wiederholung RTSP

RTSP = Real Time Streaming ProtocolRTSP = Real Time Streaming Protocol

„„Fernbedienung“ für MediaserverFernbedienung“ für Mediaserver

Protokoll auf AnwendungsebeneProtokoll auf Anwendungsebene

Reicht Funktionen an untere Reicht Funktionen an untere Schichten weiterSchichten weiter

Der SmartPump Server 4

Wiederholung RTSP (2)

Client-Server basiert

Ähnlich wie HTTPÄhnlich wie HTTPHTTP: Text und BilderRTSP: Streaming Audio und Video

Wichtigste Funktionen:Wichtigste Funktionen:describedescribesetupsetupplayplayteardownteardown

Der SmartPump Server 5

Initialisierung

Start in „RtspPump.cc“

Erzeugen von HauptkomponentenContentDataBaseThreadListenerSchedulerRTCPServerRecordPreferencesSessionPreferencesIdentifier (RTCP, RTSP)

Der SmartPump Server 6

Start - RTSP Server

RtspServer

RtspServerThread

RtspHandlerThread ...RtspHandlerThread RtspHandlerThread

Der SmartPump Server 7

RtspServerThread

Methode ‚init‘richtet Socket ein

Methode ‚run‘wartet am Socket (select-Methode)erzeugt RtspHandlerThread für Clientanfragen

Terminierungüberprüft seinen Zustand

weiter bei ‚STATE_RUNNING‘Ende bei ‚STATE_TERMINATE‘

Der SmartPump Server 8

RtspHandlerThread

kümmert sich um Anfragen der Clients 2 Arten von Nachrichten (tp_message)

request - Anfragen des Clients response - Antwort des Servers

request wird vom Parser übersetzt type der Nachricht wird überprüft

DESCRIBE, SETUP, PLAY, ...

entsprechende Methode wird aufgerufen Resourcen freigeben, beenden

Der SmartPump Server 9

Methoden: setup

Test, ob Nachricht Session ID hat ja Ende (Fehlernachricht an Client)

checkTransport := Transporteigenschaften (TCP, UDP, ...)

abspeichern in tp_transport

Mode der Nachricht prüfenentsprechendes Setup aufrufen

(setup_live, setup_play, setup_record)

Der SmartPump Server 10

setup_play

SessionPreferences werden eingelesen Wahl des Transportprotokolls

RTP (wahlweise mit RTCP)plain TCP

Erzeugen Datasource Erzeugen eines SystemStreams Erzeugen des DataPaths SessionID erzeugen Transporteigenschaften (Multicast, ...)

Der SmartPump Server 11

Methoden: play

Setzen von StartTime und StopTime

Erzeugen des RTP-Headers

verpacken in Response-Message

Starten des Streams (StreamControl)

Der SmartPump Server 12

Methoden: describe

Liefert Daten über SessionBitrate

Sendet Daten über ‚session description protocol‘

Der SmartPump Server 13

Architektur

Kontrollkommunikation

RTP-Videostrom

Client

ServerRTSP

Pipeline

Daten

Der SmartPump Server 14

ContentDataBase

BerkeleyDB

speichert den SessionIdentifier zu einer Ressource

erreichbar über ResourceName und einen Iterator

Der SmartPump Server 15

SessionIdentifier

Speichert die wichtigsten Daten zu einer Session

SessionName, PhysicalFileName, SessionIdVersionSessionDescriptionEmail und PhoneLength, Width, HeightStartTimeBitrate, DatasizePayloadType, PayloadTypeString, MimeType, FileTypeVideoHeader, MpegHeaderTimestampFrequency

Der SmartPump Server 16

DataSourceThread: run

liest segmentweise die Daten ein

berechnet die benötigten Zeitstempel anhand der Bitrate des Streams

schreibt Daten in die ScheduleQueue des Schedulers

Der SmartPump Server 17

DataPath

Vektor, der aus DataPipe-Objekten besteht

DataPipe-Objekte:SchedulerRtpEncoderTcpIpSink

Der SmartPump Server 18

DataPipe

Methode ‚connect‘verbindet ein DataPipe-Objekt mit dem

nächsten

Methode ‚write‘sendet payloadDataUnit zum nächsten

DataPipe-Objekt im DataPath

Der SmartPump Server 19

Datapath

Daten-Pipeline

TcpIp Sinkwrite

FileData Source write send

Rtp Encoder

Scheduler

DataPipe-ObjekteDataSource-Objekt

Der SmartPump Server 20

SchedulerThread: run

Wartet, bis ein Element in der ScheduleQueue ankommt

erstes Element der ScheduleQueue wird weitergeschickt

Ausnahmenpausestop

Der SmartPump Server 21

Architektur

Kontrollkommunikation

RTP-Videostrom

Client

ServerRTSP

Pipeline

Daten

Der SmartPump Server 22

Realtime Transport Protocol: RTP

Reihenfolgetreue bzw. -wiederherstellung durch Zeitstempel und Sequenznummern

unterstützt Entdeckung fehlender Pakete

Inhaltsidentifikation (payloadDataUnit)MPEG1PCM

Source-Identifikation

Der SmartPump Server 23

Real Time Control Protocol: RTCP

ClientQualität der Verbindung (Zeitstempel)

ServerBeschreibung der Source

Server & ClientAnzahl der Pakete bzw. Bytes (gesendet bzw.

empfangen)

Der SmartPump Server 24

Sessions

RtcpSessionFrequenz der Protokolle abhängig von

Bandbreite und Anzahl der ClientsBeschreibung der Source und der Daten

RtpSessionZeitstempel und Sequenznummer initialisieren

Der SmartPump Server 25

Datapath

Daten-Pipeline

TcpIp Sink

FileData Source send

Rtp Encoder

Scheduler

Der SmartPump Server 26

RtpEncoder

Generiert einen RTP-Headerfügt die Sequenznummer eingeneriert den Zeitstempel

sendet payloadDataUnit und RTP-Header über TCP/IP bzw. UDP/IP

Der SmartPump Server 27

TcpIpSink

Methode ‚init‘überprüft, ob eine Zieladresse vorliegtüberprüft, ob ein Socket angelegt ist, sonst wird ein

Socket angelegtbindet das Socket an die lokale AdresseSocket wird mit Zieladresse verbunden

IP-AdresseMulticast-Adresse

setzt „time to live“ für Multicast Sockets

Methode ‚send‘ fügt einen Header anversendet die Pakete

Der SmartPump Server 28

Socket

das Generieren eines Sockets liefert einen Integer-Wert

Durch bind kann ein Socket an eine IP-Adresse und einen Port gebunden werden

auf einem Socket können Sendeoperationen ausgeführt werden

nach dem Senden werden die Daten durch das Netzwerk geroutet

Der SmartPump Server 29

Ende

Bitte sparen Sie nicht mit Applaus

Recommended