VLC-Streaming-Testbench

2454
Vineet Menon

Hat jemand Streaming Media mit VLC als Server versucht ? Ich möchte VLC als Streaming-Server bereitstellen, aber meine Abteilung hatte keine schönen Erfahrungen mit VLC- Streaming.

Meine Frage ist, hat jemand VLC- Streaming über LAN mit bis zu 200 Clients ausprobiert ? Was waren die Vorkehrungen, die vor dem eigentlichen Showdown getroffen werden mussten? Welcher Transportstrom ist besser für ein flüssigeres Livestreaming?

Gibt es einen Prüfstand, mit dem ich meine Vorgesetzten überzeugen kann?

0

1 Antwort auf die Frage

0
Claudio

Während ich einen DVR für einen bestimmten Zweck entwickelte, führte ich viele h264-Streaming-Tests durch, hauptsächlich mit ffmpeg als Server und VLC als Player. Das Ziel war etwas anders, da ich nur eine Möglichkeit brauchte, vier Kameras ( v4l2- Geräte) in Echtzeit in der Vorschau anzuzeigen, sodass ich h264-Video direkt über UDP streamen konnte. Im Forschungsprozess verwendete ich jedoch auch VLC als Server Es kann als Ausgangspunkt für Ihre Testbench dienen.

Angenommen, Sie verwenden Linux als Serverplattform. Die folgende Befehlszeile verwendet den VLC-Befehlszeilenclient ( cvlc ), um Rohvideo von einem v4l2-Gerät (einer Webcam oder einer Videokarteneingabe) abzurufen, es in h264 zu codieren und dann den Stream anzukündigen einen RTSP-Client, um Folgendes zu erhalten:

cvlc v4l2:///dev/video0 --sout '#transcode:rtp' 

Wenn Sie auch VLC als Client verwenden, können Sie den Stream hiermit anzeigen ( Server wäre der Servername oder die IP-Adresse):

vlc rtsp://server:8554/video.sdp 

Da Sie das Video zu vielen Clients streamen müssen, ist es besser, Multicast zu verwenden, damit Ihr Server nicht für jeden verbundenen Client einen neuen Stream senden muss. Angenommen, Ihre Multicast-Adresse lautet 239.255.1.1. Sie müssen sie nur im RTP-Abschnitt angeben:

cvlc v4l2:///dev/video0 --sout '#transcode:rtp' 

Da die video.sdp- Datei von VLC selbst generiert wird, stellen Sie einfach die gleiche Verbindung wie zuvor her, aber Ihr Client erhält stattdessen den Stream von der Multicast-Adresse:

vlc rtsp://server:8554/video.sdp 
Ich habe vlc streaming server mit http transport getestet. Ich konnte 100 Kunden nicht erreichen. Es scheint Dampf anzuhalten, nachdem ich 80 Kunden erreicht habe ... Ich habe auch ein Fehlerticket in http://trac.videolan.org ausgestellt Vineet Menon vor 11 Jahren 0
Haben Sie versucht, Multicast zu verwenden? Claudio vor 11 Jahren 0
Wenn Sie alle 100 Benutzer an Ihren Server weitergeleitet haben und jeweils einen doppelten Stream erstellen, ist Ihnen wahrscheinlich nur die Bandbreite ausgehen. Für diese Art von Anwendung sollte Multicasting der richtige Weg sein. Claudio vor 11 Jahren 0
Ich habe Gigabit-Ethernet verwendet. Ich habe alle Kombinationen ausprobiert ... Bandbreite, CPU, Speicher ... alles ... aber das ist es nicht !! Vineet Menon vor 11 Jahren 0
Ok, es geht nicht um die Maschine. Je nach Video-Bitrate kann selbst ein Gigabit-Ethernet ein Dutzend doppelter Streams nicht verarbeiten. Haben Sie speziell Multicast verwendet? In diesem Modus senden Sie nur ** einen ** Videostream von Ihrem Server, und der Router repliziert diesen Stream nur an alle Clients, die ihn anfordern, sodass Sie nie einen Engpass bei der Serverausgabe haben. Ihre etwa 100 Kunden befanden sich alle im selben Subnetz? Claudio vor 11 Jahren 0
Ich beobachtete kontinuierlich den Netzwerkdurchbruch. Es war kein Netzwerkengpass. Dies geschah auch, wenn ich ein MP3-Audio streame ... Nun, ein MP3-Streaming verbraucht nicht mehr Bandbreite als 256 Kbit / s ... Übrigens, ich Unicasting Streams, nicht Multicasting ... Vineet Menon vor 11 Jahren 0
Haben Sie trotzdem versucht, die Kundennummer zu vergrößern? Vineet Menon vor 11 Jahren 0
Nun, wo ich arbeite, habe ich nicht genügend Arbeitsplätze, um es zu vergrößern. Ich habe aber mit Multicast experimentiert und es funktioniert, die Bandbreite außerhalb des Servers bleibt bei 1, 2 oder 3 Clients gleich, und bei Unicast steigt sie mit jeder neuen Verbindung an. Claudio vor 11 Jahren 0
Sie brauchen nicht so viele Maschinen ... Führen Sie einen vlc-Client mit vout = dummy, codec = dummy aus, damit die CPU nicht verbraucht wird. Jetzt können Sie mehrere Instanzen des vlc-clients auf derselben Maschine ausführen. Ich habe 20 Maschinen verwendet, um 100 Clients zu simulieren. Vlc nimmt den Stream, verwirft ihn jedoch, ohne ihn auf dem Bildschirm anzuzeigen Vineet Menon vor 11 Jahren 0