Desktop auf einen zweiten Computer Streamen

  • Hey Guys!


    I am trying to Record and Livestream my DJ Performances. For DJing a use an old (3rd gen i5) but solid Laptop running Windows 10 and Rekordbox to DJ with. Now i want to Livestream my DJ Sets with OBS (or something similar) but my Laptop does not have enough Power, so i thought of using Gaming PC for that.

    Now, to get the Audio is easy, my mixer has a Record out.


    But how do i get the Picture of my Laptop?


    Well with VLC i can Record it (tested, works), and with VLC i can also stream Video files to another Computer (also tested, works). So instead of buying a 200$ Capturecard to record via HDMI out (which would not include audio, since i use a DJ Controller), why not just stream my Desktop with VLC to my gaming PC, and do it all there?


    Streaming a File via UDP works, and recording the Desktop works, but the combination of Streaming my Desktop does NOT work....


    Could anyone with 2 Computer please test this, and tell me how they got it to work?

    I work in IT so you can get as technichal as you wish, with any questions or suggestions ;)

    Both Computers run Windows 10, newest Version of VLC 2.2.6, its a gigabit LAN connection.


    A Friend of me tested it with 2 Linux machines, and also couldnt get it to work... so if anyone could just CONFIRM that they got it to work, id be thankfull allready...


    Thanks in Advance and feel free to ask any question, or suggest solutions to my problem.

    Kind Regards

    Mat.GE

  • Oh, ist ja ein deutsches Forum, also dann nochmal auf Deutsch


    Hallo Zusammen


    Ich versuche meine DJ Sets zu streamen. Dazu nutze ich als DJ Laptop einen alten i5 (3rd gen) Lenovo T420, mit Windows 10 und Rekordbox als Software. Ich wollte meine Sets Live Streamen und habe probiert OBS zu benutzen, aber die Leistung des Notebooks ist zu gering, und die Musik hat grobe aussetzer. Darum dachte ich: kein Problem mein Gaming PC unweit davon entfernt hat doch genügen Power.

    Die Musik auf zu nehmen ist kein Problem, mein Mixer hat mehrere Ausgänge, und mein PC ein Line-In.


    Aber wie bekomme ich mein Bild vom Laptop auf den Gaming PC?


    Mit VLC kann ich ja Videos Streamen (getestet, funktioniert) und ich kann meinen Desktop aufnehmen (funktioniert auch). Desshalb wollte ich anstelle einer HDMI Capture Card (ca. 150€) mit VLC den Desktop zum Gaming PC Streamen.

    Dazu kommt noch, dass HDMI keinen Ton überträgt, da dieser aus meinem DJ Controller kommt, nicht aus dem Laptop selber.


    Da ein Filestream an sich funktioniert, und auch die Desktop aufname auch, wundert es mich das die kombination von beiden NICHT funktioniert.


    Hat jemand 2 Computer zur verfügung und könnte dies testen?

    Ich arbeite als Informatiker, die Fragen/Antworten können so Technisch sein wies geht ;)


    Ein Kumpel hat das selbe mit 2 Linux maschienen probiert, und auch nichts hinbekommen... also wenn jemand nur schon BESTÄTIGEN kann das es möglich ist, wäre mir bereits geholfen.


    Reine Aufnahme und nachträgliches zusammen fügen usw, ist leider nicht mein Ziel sondern LiveStreams.


    Danke im Voraus und stellt ruhig fragen, oder stellt meine Lösungsansätze in Frage, das Ziel muss ein DJ Livestream sein.


    Vielen Dank

    Mat.GE

  • Hallo Mat.Ge,


    ich vermute, mit "OBS" meinst du die Anwendung "Open Broadcaster Software" (https://obsproject.com/).


    Mit einem "Intel core i5" Prozessor sollte die Rechenleistung deines Notebooks Lenovo T420 (http://thinkwiki.de/T420) für das Desktopstreaming reichen.

    Kodela hat hier im Forum eine gute Anleitung erstellt, wie man mittels Kommandozeile den Desktop (Teil 5) aufzeichnet.
    F30 Kommandozeile - Aufruf und Parameterübergabe

    Allerdings sollte man dafür die VLC Version 2.1.5 (32 Bit) verwenden.

    Das Script auf dem Lenovo-Notebook könnte folgendermaßen aussehen

    Code
    1. @echo off
    2. START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// :screen-fps=25 :screen-left=0 :screen-top=0 :screen-width=960 :screen-height=540 :sout=#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:8080/} :sout-keep


    Im Anhang füge ich das Beispielscript hinzu. Bitte die Dateiendung *.txt nach dem Speichern löschen.

    Auf dem Empfangs-Computer gibt man im VLC-Player die folgende Netzwerkadresse ein: http://IP-Adresse-LenovoT420:8080

    Auf dem Lenovo-Notebook kann man die lokale Wiedergabe testen mit der Netzwerkadresse: http://127.0.0.1:8080

    Hoffe, damit kommst du weiter.


    MfG
    Thomas

  • Hallo Mat.Ge,


    ich habe heute einen weiteren Test durchgeführt und erfolgreich mit der VLC Version 2.2.6 (32 Bit) den Desktop gestreamt und lokal mit einer zweiten Instanz des VLC-Players wiedergegeben.


    Dafür habe ich das folgende Script verwendet:

    Code
    1. @echo off
    2. START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// :screen-fps=25 :sout=#transcode{vcodec=h264,vb=1500,width=1280,height=720,acodec=mp3,ab=192,channels=2,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:8080/} :sout-keep

    Im Anhang füge ich es als Download ein. Bitte die Dateiendung *.txt nach dem Speichern löschen.


    Die lokale Wiedergabe erfolgt mit der Netzwerkadresse http://127.0.0.1:8080/

    Wenn die lokale Wiedergabe gelingt, sollte es im lokalen Netzwerk ebenso möglich sein, den Desktopstream auf einem anderen Computer wieder zu geben.


    Als Ergänzung noch ein Bildschirmausdruck der Prozessorlast mit einem "Intel core i5-2500" und 3,3 GHz Taktfrequenz (vgl. "Desktopstream-lokal-prozessorauslastung.png").


    MfG

    Thomas

  • AAh yeah! Genau so eine Antwort habe ich mir gewünscht!!!


    Hat auf Anhieb Funktioniert, die Auslastung ist bei mir ziemlich genaus so, was (nach kurzem test) leider viel zu hoch ist, die Audio Ausgabe krazt andauernd, und CPU ist mit der DJ Software Rekordbox permanent auf 100%...


    Ich vermute mal die FPS zahl macht einiges aus, ich werde in 30 oder 60 fps streame, darum könnte ich da auf 15 frames runter gehn. Audio brauche ich garnicht, da der Sound sowieso direkt vom Mixer kommt. Das könnte auch etwas leistung sparen.


    Evtl macht es auch sinn die Auflösung von 1600*900 was der laptop hat so zu lassen, dass nichts skalieren muss um die CPU zu entlasten.


    Gibt es evtl einen anderen Codec der weniger leistung braucht?

    Ich habe eine Kabel gebundene Gigabit connection, also bandbreite sollte reichen!

    Die auslastung ist immernoch auf etwa 70-80%, dh nicht viel luft nach oben...



    Die Verzögerung ist etwa 8 Sekunden aktuell, ist jetzt nicht so ein Problem, aber kann man diese anpassen?

    Ich nehme mal an das beide Seiten einen Cache oderso haben den man vielleicht etwas optimieren kann.



    Mein Script ist jetzt:

    @echo off

    START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// :screen-fps=15 :sout=#transcode{vcodec=h264,vb=1500,width=1600,height=900,acodec=mp3,ab=192,channels=2,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:8080/} :sout-keep

  • Die Verzögerung ist etwa 8 Sekunden aktuell, ist jetzt nicht so ein Problem, aber kann man diese anpassen?

    Ich nehme mal an das beide Seiten einen Cache oderso haben den man vielleicht etwas optimieren kann.

    Vielleicht hift das beim Cache-Problem:

    Im VLC Player in den "erweiterten Einstellungen" unter "Input Codecs" die gibt es Einstellungen für "File caching", "Live capture caching", "Disc caching" und "Network caching"

    Hier ein Bild wo sich die Einstellungen befinden (teilweise sogar mit Pfeilen gekennzeichnet)

    https://www.vlchelp.com/wp-con…ed-preferences-inputs.png


    Für dich dürften die Einstellung "Network caching" und vielleicht auch "File caching" interessant sein, stell' aber bei allen Punkten die Werte mal auf 10000.


    Abspeichern, VLC Player neu starten, ausprobieren.


    Wenn's mit "10000" nicht geht, kannst du es auch mit höheren Werten mal probieren.

    Tipp zu Umrechnung:

    Der Wert "10000" steht für 10000 Millisekunden = 10 Sekunden (da 1000 Millisekunden = 1 Sekunden)

    Standardmäßig sind die Werte alle auf "300" (also ca. 1/3 Sekunde) eingestellt, das ist teilweise doch etwas wenig.

  • Hallo Mat.GE,


    vielen Dank für die Rückmeldung.


    Das Audiosignal kann man im Script weglassen mit dem Parameter acodec=none.


    Die spannendere Frage nach einem alternativen AV-Codec ist schwieriger zu beantworten.

    Meine Versuche mit anderen AV-Codecs, wie z.B. mit dem MPEG-2 Codec oder der VLC-Version 2.1.5 haben keine Rechenlesitung eingespart.

    Subjektiv betrachtet scheint mir der OGG-Container mit der VLC-Version 2.2.6 (32 Bit) etwas weniger Rechenleistung zu verbrauchen.


    Für weitere Test schlage ich folgendes Script mit dem OGG-Format vor:

    Code
    1. @echo off
    2. START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// :screen-fps=25 :live-caching=1000 :sout=#transcode{vcodec=theo,vb=1600,acodec=none}:http{mux=ogg,dst=:8080/} :sout-keep


    Das Script füge ich im Anhang zum Herunterladen hinzu. Bitte die Dateiendung *.txt nach dem Speichern entfernen.

    Bei meinen Versuchen mit dem MPEG-2 Codec ist folgende Fehlermeldung aufgetreten.

    Streaming/Transkodierung fehlgeschlagen:

    VLC konnte den mp2v Video Encoder nicht öffnen.

    Durch Ändern des Ratenkontrollpuffers auf den Wert 0 wurde der Fehler behoben.

    Menü / Werkzeuge / einstellungen-alle / Eingang-Codecs / Videocodecs / FFmpeg / Größe des Ratenkontroll-Puffers auf 0 einstellen.
    Die Änderung speichern und den VLC-Player neu starten.

    Um auf dem Laptop die Prozessorauslastung zu reduzieren schlage ich vor, die Leistungsoption des Computer zu ändern "Für optimale Leistung anpassen" (vgl. Bildschirmausdruck "Systemsteuerung-SystemSicherheit-System-VisuelleEffekte.png").

    Zum Thema Cache-Anpassung habe ich im Moment keine Vorschläge.

    Soweit meine aktuellen Erkentnisse.

    MfG
    Thomas

  • Um auf dem Laptop die Prozessorauslastung zu reduzieren schlage ich vor, die Leistungsoption des Computer zu ändern "Für optimale Leistung anpassen" (vgl. Bildschirmausdruck "Systemsteuerung-SystemSicherheit-System-VisuelleEffekte.png").

    Die Einstellungen, die unter "Visuelle Effekte" vorgenommen werden haben nur Einfluss auf die Systemleistung von WINDOWS (das sieht man schon an den Punkten die man einstellen kann) nicht aber auf das Verhalten von SOFTWARE die unter Windows läuft.

    Infos dazu findet man z. B. hier

    https://www.deskmodder.de/wiki…e_deaktivieren_aktivieren


    Wenn man schon in der Systemsteuerung Einstellungen vornimmt, dann sollte man unter dem Reiter "Erweitert" (gleich rechts neben "Visuelle Effekte") die Einstellungen unter "Prozessorzeitplanung" auf "Programme" stellen, wenn das nicht schon eingestellt ist.

    Siehe hier

    https://www.computerwissen.de/…intergrundprogrammen.html

  • Hallo Mat.GE,


    bezüglich der Verzögerung und der Rechenlast habe ich mögliche "Stellschrauben" gefunden, mit denen man etwas experimentieren kann.

    Für das "Capturing" gibt es einen Parameter --screen-fragment-size. Bei meinen Versuchen hat ein Wert von 256 gute Ergebnisse geliefert und die Rechenlast etwas reduziert. Diesen Wert kann man variieren (16, 32, 64,...). Der Wert 0 schaltet die Funktion --screen-fragment-size= ab.



    Für "HTTP Live Streaming" kann man den Parameter --sout-livehttp-caching einsetzen, der einen Zwischenspeicher aktiviert, welcher standardmäßig deaktiviert ist.
    Bin mir aber nicht sicher, ob das mit dem "http"-Streaming im VLC-Player zusammen passt.


    Mein Eindruck mit dem Parameter war eine zeitliche Reduzierung der Verzögerung beim Streaming.

    Beispiel-Script mit den Stellschrauben

    Code
    1. @echo off
    2. START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// --screen-fps=25 --screen-fragment-size=256 --sout-livehttp-caching :sout=#transcode{vcodec=theo,vb=1600,acodec=none}:http{mux=ogg,dst=:8080/} :sout-keep


    Wünsche dir viel Erfolg beim experimentieren.

    MfG
    Thomas

  • Hallo Mat.GE,


    ich habe noch einen weiteren Parameter gefunden, der das Encoding bzw. die Streamausgabe beschleunigen kann. Es handelt sich um --sout-avcodec-hurry-up, der standardmäßig deaktiviert ist.


    Beispiel-Code mit Beschleunigung für den Desktopstream

    Code
    1. @echo off
    2. START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// --screen-fps=25 --screen-fragment-size=256 --sout-livehttp-caching --sout-avcodec-hurry-up :sout=#transcode{vcodec=theo,vb=1600,acodec=none}:http{mux=ogg,dst=:8080/} :sout-keep

    Die Prozessorauslastung habe ich jetzt nicht mit den anderen Script-Beispielen verglichen, da ich im Moment an einen Windows 7 Rechner arbeite.


    MfG

    Thomas

  • Hallo Zusammen,


    Vielen Dank für die vielen Vorschläge!

    Ich habe jetzt einiges ausprobiert:

    Die Systemeinstellungen sind auf dem Laptop natürlich alle auf Performance gestellt, da ich mit dem Ding ja auflege, aber danke für den Hinweis.


    Mit Cache und qualität habe ich nicht allzu viel probiert, da die erste Prio natürlich ist das ganze zum laufen zu kriegen.


    Wenn ich mp2v verwende, ist die auslastung extrem tief, um die 10% rum für VLC! Leider gelingt es mir nicht damit ein Bild am anderen PC zum empfangen, und ich verstehe auch nicht ganz wie und was ich kombinieren kann/muss...



    Mit diesem Codec, theo und ogg

    1. @echo off
    2. START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// :screen-fps=25 :live-caching=1000 :sout=#transcode{vcodec=theo,vb=1600,acodec=none}:http{mux=ogg,dst=:8080/} :sout-keep

    läuft der stream zwar, qualität ist nicht so gut, aber egal, und auslastung um 40% (was okay wäre, tiefer wäre schöner, um sicher zu gehn das keine Aussetzer entstehen im Sound)

    Beim Empfang jedoch wirds komisch: Der stream zeigt alles schön an, für 8 sekunden, und lädt danach (mit gelbem balken) die nächsten 8 sekunden wieder, um nochmal 8sekunden anzuzeigen.

    Auf dem DJ Laptop sehe ich im Taskmanager wie der VLC speicherverbrauch konstant ansteigt für 8sekunden, dann wieder runterfällt, und für 8 Sekunden wieder steigt.


    Ich vermute am besten wäre ein MPEG1 oder MPEG2 stream, da ich genügen bandbreite habe, aber die kriege ich nicht zum laufen (auch mit TS muxer schon gebastelt...)


    Ansonsten wäre auch unkomprimiert vllt eine alternative?

    Der Stream muss auch nicht mit HTTP übertragen werden, falls das mit MPEG ein problem ergeben kann.


    In einem anderen Forum habe ich noch gelesen das der alte DivX Codec auch sehr wenig leistung braucht. Wie kann ich den verwenden im VLC?


    lg Mat.GE

  • In einem anderen Forum habe ich noch gelesen das der alte DivX Codec auch sehr wenig leistung braucht. Wie kann ich den verwenden im VLC?

    Nach meiner Kenntnis kannst du den DivX Codec nicht in den VLC Player einbinden (aber vielleicht kennt ja jemand doch eine Möglichkeit)

    Das ist ja gerade der Vorteil des VLC Players, dass dieser seine eigenen Codecs mitbringt, so ziemlich alles abspielen kann und man dabei nicht auf externe Codecs angegwiesen ist.


    Noch ein Hinweis (gehört nicht so richtig dazu)

    Vorsicht vor den sogenannten "Codec-Packs" z. B. CCCP-Codec Pack, X Codec Pack, K Lite Codec Pack und wie sie allen heißen.

    Die "graben" sich tief in's System ein, lassen es teilweise instabil laufen und sind schwer wieder zu deinstallieren.

    Teileweise sind die Codes in solchen Paketen auch noch veraltet, da diese nicht jedesmal, wenn ein neuer Codec erscheint, aktualisiert werden.

    Von der Installation eines solchen "Codec-Packs" würde ich deshalb abraten, aber das hast du ja auch nicht vor (wollte aber zur Sicherheit mal darauf hinweisen)

  • Hallo Mat.GE,


    als Orientierung bietet Videolan eine Feature-Liste, aus der man erkennen kann, welche Kombinationen von Codec und Muxer und Signalausgabe möglich sind. Siehe Link: Streaming Features Liste (Videolan)

    Die Idee mit MPEG-2 weniger Rechenleistung zu verbrauchen klappt in meinem Beispiel nicht.

    Code
    1. @echo off
    2. START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// --screen-fps=25 :sout=#transcode{vcodec=mp2v,vb=8000,acodec=none}:rtp{dst=127.0.0.1,port=5004,mux=ts} --sout-transcode-hurry-up :sout-keep


    Für testzwecke habe ich eine lokale Netzwerkadresse verwendet, so dass in der zweiten VLC-Instanz für die lokale Wiedergabe rtp://127.0.0.1:5004 einzugeben ist.


    MfG

    Thomas

  • Hallo Mat.GE,


    hier ist noch ein weiteres Beispiel zum Streamen des Desktops. Verwendet habe ich DIVX mit dem OGG-Muxer und http-Streaming.

    Code
    1. @echo off
    2. START "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" screen:// --screen-fps=25 --sout-livehttp-caching --sout-avcodec-hurry-up :sout=#transcode{vcodec=DIV3,vb=10000,acodec=none}:http{mux=ogg,dst=:8080/} :sout-keep

    Für die Wiedergabe und zum Testen setze ich eine zweite VLC-Instanz mit der lokalen Netzwerkadresse http://127.0.0.1:8080/ ein.


    Die Rechnerauslastung kann ich im Moment nicht vergleichen.


    MfG

    Thomas

  • Hallo Zusammen


    Ach mensch... ich hab schlecht neuigkeiten! Hab das streamen mit MPEG2 hinbekommen, und wenn wenig auf dem Desktop passiert ist die leistung schön tief, und auch mit etwas mehr aktivität ist sie okay.


    Nur was ich leider bemerkt habe: (mit diesem tool hier http://www.resplendence.com/download/LatencyMon.exe ) ist, warum die Audio Ausgabe nicht gut ist.

    Mein Notebook hat anscheinend einen nicht allzu guten Netzwerkstack, und egal ob WLAN oder Ethernet, wenn viele daten darüber laufen, wird dieser Monitor rot, und der sound kling auf grossen boxen extremst scheisse. Auf den Laptop boxen und kopfhörern ist es nicht allzu schlimm, aber auflegen geht so nicht...

    Ich muss jetzt erstmal herausfinden wie ich das behebe...


    Ich danke euch allen für eure hiflreichen Tipps!

    Ich werde mich auf jedenfall nochmal melden, wenn ich dieses Problem gelöst habe...


    lg Mat.GE

  • Hallo Mat.GE,


    vielen Dank für deine Rückmeldung und Ausdauer beim testen.

    Es wäre gut, wenn du dein Ergebnis mit MPEG2 hier vorstellen kannst, damit auch andere VLC-Anwender davon profitieren können.


    Zum Thema "LatencyMonitor" von http://www.resplendence.com/main kann ich wenig sagen. Es gibt auch andere Anwendungen mit denen man Laufzeiten von AV-Signalen untersuchen kann, z.B. DPC Tatency Checker (https://www.heise.de/download/…dpc-latency-checker-52865)

    Bei Computer-Fragen vertraue ich meist den verschiedenen Fachmagazinen (online und offline) um empfehlungen für die Verwendung bestimmter Programme zu erhalten.


    Die einfachste Lösung wäre die Software "LatencyMonitor" zu deinstallieren. Sollte danach die Audio-Wiedergabe immer noch Probleme machen würde ich mir die Aktualität der Audiotreiber prüfen. Lenovo bietet ja eine recht gute Unterstützung an.


    Probleme mit dem Netzwerk müssen nicht zwingend am Notebook liegen. Es ist durchaus möglich, das WLAN-Router oder LAN-Switche Probleme verursachen.


    Wünsche viel Erfolg bei der Problemlösung.


    MfG

    Thomas

  • Guten morgen,


    Ja das kann ich natürlich machen.

    Aber mein fast gutes Ergebniss wurde leider ziemlich in den schatten gestellt von meiner letzten idee: Ich habe TeamViewer genommen :D

    Ganz billig und enttäuschend...ich weiss...aber es funktioniert!

    Die Leistung ist echt gut, und mein DJ Laptop kann locker weiter Musik machen.


    Der Latency Checker von Heise macht eigentlich genau das selbe, nur zeigt der andere noch welcher Treiber Schuld ist. Resultat ist das selbe, sobald WLAN oder LAN aktivität da ist, geht die Latenz extrem hoch.

    Gelöst habe ich das Problem mit einem USB WLAN adapter für 10€, der nutzt natürlich einen anderen Treiber, der glücklicherweise kein solches Verhalten aufweist.


    Ich werde heute Abend noch die Scripts hochladen, die ich verwendet habe. MPEG2 hat etwas weniger Leistung gebraucht als DIVX.


    lg Mat.GE