Java Streaming-Server & Streaming-Client

TKausL

Top Contributor
Hallo liebes Java-Forum,

da ich bereits die Theorie von Java (meiner Meinung nach) gut beherrsche aber leider noch keine großartige Praxiserfahrung habe möchte ich diese nun in einem eigenen Projekt sammeln. Bevor ich aber anfange frage ich lieber nochmal nach, ob es von Geschwindigkeit und Möglichkeiten überhaupt machbar ist.

Geplant ist ein LiveStream-Server (Video+Sound) in Java welcher natürlich von einem Streamer den Stream bekommt und an die Clients weitersendet.

Außerdem geplant ist ein Streaming-Client in Java, also das Programm welches die Bildschirmaufnahmen macht, Sound abhört und alles an den Streaming-Server sendet.

Als letztes fehlt nurnoch der Client welcher den Stream empfängt und diesen abspielt, dabei dachte ich an Flash.

Nun bitte ich also die Erfahrenen Programmierer, mir ein paar Informationen zu geben wie es Geschwindigkeitsmäßig so aussieht in Java mit Aufnahmen, Live konvertieren/Komprimieren und per TCP/UDP zu versenden. Der Server der letztendlich nur den Stream empfängt und weiterversendet sollte denke ich keine Probleme machen.

PS: Dies soll kein Komerzielles Produkt werden für 10.000 Streamer sondern lediglich ein Hobbyprojekt um Praxiserfahrung zu sammeln.
 

BuckRogers

Bekanntes Mitglied
Hallo lieber Java-Forum-Nutzer,

das ist ja ein ganz schön großes Projekt.
Da ich leider noch nicht sehr viel Erfahrung habe kann ich dir auch nicht viel helfen.
Was mir aber grundlegend auffällt ist, dass du TCP definitiv streichen solltest.
Jedenfalls für das Streamen der Bilder. Warum?
Weil das sonst nichts wird mit der Geschwindigkeit.
TCP funktioniert mit Bestätigung nach Erhalt des Pakets.
Der Vorteil ist zwar, dass du dann in HD streamen könntest, jedoch zwingt es fast jede Leitung in die Knie.
UDP hingegen feuert die Pakete ohne Rücksicht auf Verluste in den Äther und das Ausbessern der Bilder kann dann der jeweilige Player auf dem Client übernehmen. Kann dann u.U. pixelig werden aber dafür hat man dann einen flüssigen Stream.

Grüße
 

TKausL

Top Contributor
Hallo,

habe jetzt etwa 30 Minuten gegoogled und ich habe bisher noch nichts darüber gefunden, ob/wie man eine Videoaufnahme vom Desktop machen kann. Ich denke also das kann ich erstmal vergessen mit Java. Vieleicht finde ich ja noch eine Cpp-Lib die ich mit Java dann ansprechen und nutzen kann.

ZU TCP/UDP: Ich habe mich mit Video/audio und deren Speicherformat noch nicht richtig beschäftigt, deswegen weiß ich garnicht inwiefern das Problematisch ist fals bei UDP Pakete garnicht erst ankommen.
 
T

trääät

Gast
wenn ich dabei mal auf ein thema aus dem netz-forum verweisen darf ...
es ging in diesem um einen clone von diesem web-chat oder wie auch immer der mist heißt ... also auch hier video/audio übertragung ...
oder auch ein anderer thread der sich lediglich um audio drehte (in richtung teamspeak-clone) ...

dort wurden mehrere dinge festgehalten

1) definitiv UDP ...
ein user hatte das problem das er unter verwendung von TCP einen immer größer werdenen "lagg" hatte ...
die begründung dahiter war einfach : die arbeits weise von TCP und das garantierte ankommen der pakete in richtiger reihenfolge ...
da auf verwendung eines vernünftigen audio-codecs verzichtet wurde liefen aber selbst über UDP noch ne ganze menge an daten ... die dann zwar keine immer größer werdenen verzägerung mehr zur fogle hatten aber nur noch die hälfte ankam ...

2) CODECS !
wie eben angerissen : wenn man "raw" daten sendet braucht man gewaltige leitungen ... gerade als uploader ...
hier muss man auf jeden fall codecs nutzen die bei relativ wenig qualitäts-verlust eine schnelle und gute komprimierung erreichen ...
es bringt nichts einfach nur die bitraten zu reduzieren wenn am ende immer noch mehr zu senden ist als es der upload zulässt ...
hier muss man halt zwischen qualität und daten-größe einen kompromiss finden ...

3) möglichst native-code nutzen
es wird so mit java schon mal schwer mit 60 fps den screen zu recorden ... selbst 30 fps stellen ein problem dar (gabs auch mal als vnc-clone hier) ...
also solltest du hier auf native-code zurückgreifen der leistungsstark genug ist um mit guter fps zahl möglichst hoch-qualitativ einen möglichst kleinen daten-strom erzeugt ...
mir fällt da jetzt nichts ein ... aber sollte sich was finden lassen ...
audio könnte man zur not noch mit java machen ... aber es wären dann spezielle einstellungen am system-mixer nötig die vielleicht nicht zum gewünschten ergebnis führen ..
es gibt native-libs die das deutlich besser können und direkt am system-mixer ansetzen ...
außerdem kann man dann gleich einen codec mit dransetzen und das mischen der audio-signale dem system überlassen


weiter zum "server"
in der regel hat ein streaming-server die aufgabe die daten die vom streamer kommen zu vervielfältigen und an alle clients zu senden ...
die beste möglichkeit ist wenn dies bereits die netz-hardware des hosts erledigt ... allerdings ist das nicht immer möglich ... dann kommt es auf einen leistungsstarken server an der nicht abhängig von der anzahl der clients ist ...
wie man das sinnvoll umsetzt würde ich auch gerne wissen ...
sicher dürfte es irgendeinen code geben der simultan daten von einem input auf x outputs dupliziert ... aber einfach mit nem loop über die verbindungen gehen und dann ein paket immer wieder zu kopieren führt bei größerer anzahl wieder zu laggs ...
glaube das ganze heißt irgendwie multiplexing oder sowas ... einfach mal nach googlen ....


und dann zum "view-client"
so lange du dafür sorgst das dieser die daten vom server versteht und daraus wieder ein video erzeugen kann dürfte es egal sein ob du ihn in java oder in flash implementierst ...
aber wenn man sich schon die mühe macht und den streamer in java schreibt sollte der viewer dann echt kein problem mehr sein ...
ist aber ne persönliche designentscheidung ...


//edit
zum record : siehe oben

zu tcp/up : in der regel verzeiht der stream das eine oder andere fehlende paket ohne das man größere aussetzer im video hat .. kommt dies jedoch zu oft vor kann es von bild/ton störungen zum abriss des streams kommen
 

TKausL

Top Contributor
Nochmal etwas zu 3.: Ich mache mich dann mal auf die suche nach einer nativen Libary welche Bildschirmaufnahmen machen kann welche gleich durch nen encoder gejagt werden (richtiges wort?) und den output entweder direkt an eine IP leiten kann oder aber an Java. Ich hoffe doch sowas ist zu finden, wobei ich wie gesagt für Bildschirmaufnahmen in Java (noch) nichts brauchbares im Web gefunden habe, nichtmal ein Java-Programm welches Native-Libs nutzt. Schade...

zu 2: Müsste mich dann mal mit Hole-Punching beschäftigen. Wie ich ein UDP-Paket zum Server sende weiß ich, allerdings habe ich mich noch nie wirklich mit der anderen Richtung beschäftigt (Router, ohne PortForward).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Video Streaming in Java Allgemeine Java-Themen 7
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1
P Java Quellen finden Allgemeine Java-Themen 3
M Java Analyse/ SWOT-Analyse Allgemeine Java-Themen 13
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
E Java .exe Datei mit args starten Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben