2013-05-04 14 views
7

Ich habe versucht, herauszufinden, wie ich meinen Desktop (über LAN) mit VLC streamen und die niedrigste mögliche Latenz erreichen (< 100ms). Ziel ist es, dass ein anderer Computer den Stream empfängt und möglicherweise Spiele während des Streams spielt (d. H. Spiel von PC1 auf dem PC neben dem Fernseher spielt).Stream Desktop über RTP mit VLC mit der niedrigsten möglichen Latenz

Welche Einstellungen sollte ich verwenden? Ich habe mehrere Ansätze ausprobiert, muss aber noch erfolgreich sein.

EDIT: Ich bin offen für die Verwendung von etwas anderes als VLC.

Antwort

8

Ich habe auch das gleiche mit VLC versucht und konnte nie Latenz unter 3 Sekunden bekommen. FFmpeg hat Wunder vollbracht und schließlich eine Latenzzeit von 1 Sekunde geliefert.

mpeg2video und UPD lieferte die besten Ergebnisse, RTP Latenz fühlte sich ein bisschen schlechter aber sehr nahe. Der Wechsel zu x264 verbessert die Qualität im Gegenzug für ein bisschen mehr Latenz, aber das hängt wirklich davon ab, wie viel dynamischer Inhalt vorhanden ist und wie schnell die CPU ist. Ich habe nur x264 mit UDP arbeiten, aber es muss einen Weg geben, es mit RTP zu tun.

Ich bin mir nicht sicher, ob es zum Spielen machbar ist. Der Server wird stark ausgelastet sein und die Latenz wird spürbar sein - zumindest unter Linux, weiß nichts über Windows.

Unter Linux eine der folgenden Befehle versuchen:

$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec mpeg2video -b:v 8000 -f rtp rtp://192.168.0.10:1234 

oder

$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec libx264 -preset ultrafast -tune zerolatency -crf 18 -f mpegts udp://192.168.0.10:1234 

für Bildschirmauflösung anpassen (-s <your resolution>), Bildwiederholrate (-r <fps>), Bandbreite (-b:v <bits/s>), Qualität (-crf 18 oder -qp 18, je niedriger desto besser) und Ziel-IP: Port.

Bei laufendem Windows dshow anstelle von x11grab verwenden.

Beobachten Sie es mit ffplay udp://192.168.0.10:1234 oder ffplay sdp://192.168.0.10:1234.

Beachten Sie, dass keine dieser Optionen Sound streamen wird. Beim Streaming von Audio konnte ich keine so niedrigen Latenzen erzielen. Es könnte machbar sein, ich habe einfach nicht herausgefunden, wie.

Die meisten reagieren Client war ffplay, VLC zu viel Latenz eingeführt sogar mit seinem Netzwerk-Cache auf Null gesetzt - mit einer solchen Cache wurde es eigentlich noch schlimmer, da es sich um den Strom zu ‚Resync‘ zu oft versucht.

Wenn Sie weitere Details benötigen, habe ich einen post über meine Ergebnisse gemacht. Ich hoffe es hilft. Ich freue mich über jede Rückmeldung.^_^^

+0

FFmpeg hat auch einige x264 Encoding-Einstellungen wie "-tune ZeroLatency", die hier nützlich sein könnten: http://trac.ffmpeg.org/wiki/StreamingGuide#Latency – rogerdpack

+0

Ich kam zu Ihrer Website, bevor Sie darüber laufen Artikel. Meiner Meinung nach hatten vlc und ffplay fast die gleiche Latenz. – user1767754

+0

Ich hatte versucht, Auflösung Parameter wie unten URL zu übergeben, aber es scheint nicht zu funktionieren, ich meine, rtsp aufgezeichnet mp4 Video bleibt hochauflösend, auch wenn ich 320x240 passiert habe :( "-t 30 -i \" rtsp : //xxx.xxxxxx.com/2 \ "-s 320x240 -codec kopieren -vcodec kopieren -zu" –