Simpler HTTP Stream server Test

Kr0e

Gesperrter Benutzer
Hi,

ich bin dabei, einen eigenen kleinen HTTP Stream Server zu implementieren.
Es soll mehr ein Test als eine brauchbare Klasse sein...

Z.B.:

Ich connecte mit einem streamfähigen MediaPlayer auf meine Adresse (http://localhost/test.avi)...
Mein kleiner Server empfängt als nächstes dies hier:

GET /test.avi HTTP/1.1
Accept: */*
User-Agent: NSPlayer/11.0.5721.5145
Host: localhost
X-Accept-Authentication: Negotiate, NTLM, Digest, Basic
Pragma: version11-enabled=1
Pragma: no-cache,rate=1.000,stream-time=0,stream-offset=0:0,packet-num=4294967295,max-duration=0
Pragma: packet-pair-experiment=1
Pragma: pipeline-experiment=1
Supported: com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.predstrm, com.microsoft.wm.startupprofile
Pragma: xClientGUID={3300AD50-2C39-46c0-AE0A-80C72AAE04BA}
Accept-Language: de-DE, *;q=0.1

Frage: Wie antwortet man auf sowas ? Was genau verlangt der MediaPlayer als nächstes von mir ?

Gruß Chris

PS: Wie gesagt, es ist mehr eine Spielerei um zu verstehen, wie HTTP Streaming im allgemeinen funktioniert. Bei google hab ich nichts spezielles gefunden. Überall wird man auf fertige Libs (JMF z.b.) verlinkt... Ich will aber die Sache möglichst simpel angehen.
Achja, der MediaPlayer friert ein, sprich der wartet wohl wirklich auf etwas ganz spezielles!

PSS:

Hab nach ein wenig Googlen mal "Beispielantwortheader" gefunden:



1. HTTP/1.1 200 OK
2. Content-Type: application/x-mms-framed
3. Server: Cougar/9.01.01.3814
4. Date: Thu, 21 Aug 2008 18:18:30 GMT
5. Pragma: no-cache, client-id=648480293, features="broadcast", timeout=60000, AccelBW=960000, AccelDuration=18946, Speed=1.000
6. Cache-Control: no-cache, x-wms-stream-type="broadcast"
7. Last-Modified: Sat, 30 Dec 1899 00:00:00 GMT
8. Transfer-Encoding: chunked
9. Supported: com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.predstrm, com.microsoft.wm.fastcache, com.microsoft.wm.startupprofile
10.

Aber da stellen sich neue FRagen: Wie wirds geschickt ? einfach als Ascii ? Oder die Zahlen als 4byte int übertragen ?
Wie gesagt ich kenne das Protokoll halt nicht genau...
 

madboy

Top Contributor
Wie gesagt ich kenne das Protokoll halt nicht genau...
Das ist natürlich nicht der beste Ausgangspunkt ;-)

Meines Wissens gibt es nicht "den HTTP Stream", sondern jeder Vertreiber von Streaming-Servern kocht mehr oder weniger sein eigenes Süppchen.

Als erstes solltest du dir Wissen aneignen, was dein gewünschter Mediaplayer für Streams und Formate unterstützt. Dann über die Formate lesen, lesen, lesen. Eventuell müssen die Dateien, die du streamen willst auch noch aufbereitet werden.

Halbwissen: die meisten Medienformate besitzen einen Header, in welchem Keyframe-Positionen, Bitrate etc. stehen. Dieser Header muss als erstes übertragen werden (logisch, sonst weiß der Client ja nicht was los ist), steht jedoch in vielen Dateien ganz hinten. Folge: Die Datei muss vor dem Streaming aufbereitet werden.
Noch lustiger wird das Ganze mit variablen Bitraten wenn du im Client "spulen" willst. Der Client muss also berechnen, welche Daten er gern als nächstes vom Server will, ohne eine genaue Bit-Position zu haben. Server und Client müssen also recht intelligent sein :)
 

Kr0e

Gesperrter Benutzer
Hmm, klingt in der Tat kompliziert :(
Ich habe einen Streamserver für DAteien bereits fertiggestellt. Ist dem Torrentsystem nicht unähnlich. (Arbeite daran auch schon ziemlich lange)

Im Prinzip kann der folgendes: Eine Datei wird auf dem Zielrechner angelegt. Nun wird sie von vielen anderen PC (Übers Netzwerk) mit Daten versorgt.

Ich kann nun die Clienten anweisen mir von einer bestimmten Startposition an zu schicken...(Im Prinzip ähnlcih dem, was man braucht, um ein Video zu übertragen) Ich kann also sagen "Schickt ab dem x-ten Byte, Dann stoppen und sagen : Jetzt will ich alles ab dem y-ten Byte usw."

Problem ist, dass z.b. Windows Media Player (Also die Standard OS Codecs z.b.) keine "unfertigen" Videos abspielen...
(Warum auch immer... VLC kanns...)

Wenn also der Ansatz mit HTTP zu schwer ist (Es sieht leider ganz so aus), wäre dann vlt meine idee irgendwie denkbar ?

Aber du sagst gerade, dass manchmal die Header hinten stehen... das ist natürlich dann ein Problem... D.h. der Header sollte zuerst angefordert werden... Jetzt brauche ich nur noch eine Möglichkeit mit Java direkt unfertige Videodateien abzuspielen...

Ideen ?

PS: Ich weiß, dass es mit JMF möglich ist (Hab das mal erfolgreich mit Fobs4JMF gescahfft, aber nur ne kleine Testversion).
Aber Fobs4JMF hat A/V - Sync Probleme leider :( Also unbrauchbar... Ich will das ganz gern selber machen und keine "VLC-Bindings" fürs Streamen benutzen, da ich ganz gern dieses "Streamen über mehrere Clients" ermöglichen will. Damit kann man dann quasi einen "Torrent" streamen. Also es ist kein Torrent, ich sag das nur, damit ihr wisst wie ich das meine...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
alexpetri simpler Proxy geht nicht Netzwerkprogrammierung 7
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
H Datei mit Anhang via http "hochladen" Netzwerkprogrammierung 16
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
O HTTP Wer hilft mit meinem UTF-8 http Request ? Netzwerkprogrammierung 1
G localhost im Backend https vs. http Netzwerkprogrammierung 9
J Simple HTTP Framework (basierend auf expressjs) Netzwerkprogrammierung 1
M HTTP Http requests aufzeichnen Netzwerkprogrammierung 2
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
F HTTP HTTP Rest Client mit TLS1.2 und selbst signiertem Zertifikat Netzwerkprogrammierung 2
M http request and response Netzwerkprogrammierung 0
M Verbindungszeit berechnen (TCP, HTTP/1.0, HTTP/1.1) Netzwerkprogrammierung 2
P HTTP Bild von einem Server per http kopieren Netzwerkprogrammierung 1
U HTTP XML vom Server abholen oder http Abfragen, Entscheidung treffen Netzwerkprogrammierung 0
P HTTP Server / Client Netzwerkprogrammierung 1
S HTTP-Requeste von Browser mit Java sniffen? Netzwerkprogrammierung 9
E HTTP java.lang.IllegalArgumentException: protocol = http host = null Netzwerkprogrammierung 1
M Server mit HTTP Netzwerkprogrammierung 9
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
B Socket HTTP-Request führt zu Endlosschleife Netzwerkprogrammierung 5
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D HTTP Bräuchte hilfe mit Http Requests Netzwerkprogrammierung 6
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
F HTTP HTTP-Download: Dateien in einem Verzeichnis ermitteln Netzwerkprogrammierung 8
T HTTP Einen HTTP Server erstellen Netzwerkprogrammierung 20
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
Dit_ HTTP Einfache HTTP-Anfrage Netzwerkprogrammierung 6
nrg FileUpload HTTP POST Netzwerkprogrammierung 5
T Socket Java HTTP-Proxy Netzwerkprogrammierung 3
A HTTP Zugriff auf http-Server - Error 400 Netzwerkprogrammierung 11
B HTTP JSESSIONID in Http(s)URLConnection loswerden! Netzwerkprogrammierung 13
E Socket HTTP-Server Netzwerkprogrammierung 6
C HTTP POST Connect Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
O Http request Netzwerkprogrammierung 7
Tobse HTTP ServerSocket HTTP Netzwerkprogrammierung 4
I HTTP Datei Uploaden mit http und Sprache anpassen Netzwerkprogrammierung 7
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N Http Client Netzwerkprogrammierung 3
W Asynchroner HTTP Client / non-blocking I/O Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
L Body eines http Request auslesen Netzwerkprogrammierung 2
T HTTP Encoding von Http-Streams Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
D http request Netzwerkprogrammierung 11
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
K HTTP-Anfrage an einen Server wird nicht beantwortet Netzwerkprogrammierung 3
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
W Problem mit HTTP-Dateiübertragung Netzwerkprogrammierung 6
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
G Http Client mit Redirect Enabled Netzwerkprogrammierung 2
M Http POST liefert kryptischen Content Netzwerkprogrammierung 4
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
R HTTP Server Memory Leak? Netzwerkprogrammierung 6
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
K optimale HTTP Downloads Netzwerkprogrammierung 15
G auf http-request antworten. Netzwerkprogrammierung 3
I http sniffer gesucht Netzwerkprogrammierung 10
G Socket + HTTP Header Netzwerkprogrammierung 2
R HTTP ServerThread Netzwerkprogrammierung 4
J HTTP GET? Netzwerkprogrammierung 6
C FTP vs HTTP Netzwerkprogrammierung 10
M HTTP-Response extrem fragmentiert Netzwerkprogrammierung 4
W HTTP-Upload Netzwerkprogrammierung 2
M HTTP response code: 401 ; ?aber im browser ist es abrufbar? Netzwerkprogrammierung 5
L Java HTTP Request Netzwerkprogrammierung 3
O Axis2 erstellt HTTP/1.1 anstatt HTTP/1.0 Netzwerkprogrammierung 3
B Fehler 401 bei http GET Netzwerkprogrammierung 2
S HTTP Request erstellen Netzwerkprogrammierung 2
E upload progress bei einem http file post Netzwerkprogrammierung 5
B lange Strings in http-Request? Netzwerkprogrammierung 3
K http-download Netzwerkprogrammierung 12
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
M RMI over HTTP Netzwerkprogrammierung 5
M HTTP Requests verarbeiten und Response senden mit Java Netzwerkprogrammierung 14
G HTTP Response mit Transfer-Encoding:chunked einlesen Netzwerkprogrammierung 4
D HTTP Request erstellen (Form Name übergeben!) Netzwerkprogrammierung 3
J Java Programm für Upload von Dateien per HTTP Netzwerkprogrammierung 7
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
L file upload / download über http Netzwerkprogrammierung 5
G HTTP Client :: Komme nicht über den Proxy Netzwerkprogrammierung 7
P Easy Http Request Netzwerkprogrammierung 9
B non US-ASCII Dateinamen über HTTP? Netzwerkprogrammierung 2
N Dateigröße einer Datei auf einem HTTP-/Web-Server. Netzwerkprogrammierung 9
P File von http-Server kopieren Netzwerkprogrammierung 5
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
G http 1.1 socket? Netzwerkprogrammierung 3
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
S http Server selber schreiben Netzwerkprogrammierung 5
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
Z HTTP Request Netzwerkprogrammierung 3
A http request per socket an apache server Netzwerkprogrammierung 5
M Ein HTTP-request aus Java heraus senden Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben