- Offizieller Beitrag
Hallo Axel,
ich habe mir das aktuelle Beispielscript (Siehe #13) genommen und für eine Netzwerkverteilung angepasst. Auf dem Server werden vier VLC-Instanzen gestartet. Jede der vier VLC-Instanzen transcodiert das gleiche Beispielvideo und beschneidet es mit den angepassten --croppadd Parametern in vier verschiedene Bildbereiche.
Es werden vier http-Streams mit der gleichen IP-Adresse aber unterschiedlichen IP-Ports vom Server im Netzwerk erstellt und verteilt.
Damit können die Clients bzw. Wiedergabegeräte sich jeweils anhand des IP-Ports den jeweiligen Bildbereich ("oben links" Port:8080/, "oben rechts" Port:8081/, "unten links" Port:8082/ und "unten rechts" Port:8083/) aussuchen. Das Beispielscript füge ich im Anhang zum herunterladen hinzu. Bitte die *.txt Dateiendung nach dem Herunterladen löschen.
@echo off
start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=310 --netsync-master --no-video-deco --no-embedded-video --qt-start-minimized --no-video-title-show "C:\Temp\Life-is-a-dance.mp4" :sout=#transcode{vcodec=h264,vb=3500,vfilter=croppadd{cropright=960,cropbottom=540},scale=0.5}:http{mux=ffmpeg{mux=flv},dst=:8080/} :sout-keep
start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --no-video-deco --no-embedded-video --qt-start-minimized --no-video-title-show "C:\Temp\Life-is-a-dance.mp4" :sout=#transcode{vcodec=h264,vb=3500,vfilter=croppadd{cropleft=960,cropbottom=540},scale=0.5}:http{mux=ffmpeg{mux=flv},dst=:8081/} :sout-keep
start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --no-video-deco --no-embedded-video --qt-start-minimized --no-video-title-show "C:\Temp\Life-is-a-dance.mp4" :sout=#transcode{vcodec=h264,vb=3500,vfilter=croppadd{cropright=960,croptop=540},scale=0.5}:http{mux=ffmpeg{mux=flv},dst=:8082/} :sout-keep
start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" :file-caching=300 --no-video-deco --no-embedded-video --qt-start-minimized --no-video-title-show "C:\Temp\Life-is-a-dance.mp4" :sout=#transcode{vcodec=h264,vb=3500,vfilter=croppadd{cropleft=960,croptop=540},scale=0.5}:http{mux=ffmpeg{mux=flv},dst=:8083/} :sout-keep
In einer html-Datei kann man die vier IP-Streams mit den unterschiedlichen Bildbereichen als gemeinsames Mosaic im Webbrowser "Mozilla Firefox" v51, v52 ESR oder "Internet Explorer" zusammen wiedergeben. Das VLC-Webplugin wird in den aktuellen Versionen des Mozilla Internetbrowsers nicht mehr unterstützt.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
</head>
<body bgcolor="black">
<h2 align="center">Croppadd - Mosaic</h2>
<table border="0" align="center">
<tr>
<td>
<p align="right">Croppadd - oben links</p>
<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab"
width="960" height="540">
<param name="Src" value="http://127.0.0.1:8080/" />
<param name="AutoLoop" value="False" />
<param name="AutoPlay" value="True" />
<embed id="vlcEmb" type="application/x-vlc-plugin" autoplay="yes" loop="no" mute="true" width="960" height="540"
target="http://127.0.0.1:8080/"></embed>
</OBJECT>
</td>
<td>
<p>Croppadd - oben rechts</p>
<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab"
width="960" height="540">
<param name="Src" value="http://127.0.0.1:8081/" />
<param name="AutoLoop" value="False" />
<param name="AutoPlay" value="True" />
<embed id="vlcEmb" type="application/x-vlc-plugin" autoplay="yes" loop="no" mute="true" width="960" height="540"
target="http://127.0.0.1:8081/"></embed>
</OBJECT>
</td>
</tr>
<tr>
<td>
<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab"
width="960" height="540">
<param name="Src" value="http://127.0.0.1:8082/" />
<param name="AutoLoop" value="False" />
<param name="AutoPlay" value="True" />
<embed id="vlcEmb" type="application/x-vlc-plugin" autoplay="yes" loop="no" mute="true" width="960" height="540"
target="http://127.0.0.1:8082/"></embed>
</OBJECT>
<p align="right">Croppadd - unten links</p>
</td>
<td>
<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab"
width="960" height="540">
<param name="Src" value="http://127.0.0.1:8083/" />
<param name="AutoLoop" value="False" />
<param name="AutoPlay" value="True" />
<embed id="vlcEmb" type="application/x-vlc-plugin" autoplay="yes" loop="no" mute="true" width="960" height="540"
target="http://127.0.0.1:8083/"></embed>
</OBJECT>
<p>Croppadd - unten rechts</p>
</td>
</tr>
</table>
</body>
</html>
Alles anzeigen
Die IP-Adressen http://127.0.0.1:808x/ in der html-Datei (für die lokale Wiedergabe) müssen gegen die IP-Adresse des VLC-Servers ausgetauscht werden, um die Streams auf einem zweiten Computer im lokalen Netzwerk als html-Mosaic abzuspielen. Im Anhang füge ich das html-Mosaic zum herunterladen hinzu. Nach dem Herunterladen bitte die Dateiendung *.txt entfernen.
Um auch die Netzwerksynchronisierung auf den Clients zu nutzen, sollten die einzelnen Batch-Dateien (eine von vier auf jedem Computer) verwendet werden.
@echo off
start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --netsync-master-ip=127.0.0.1:8080/ "http://127.0.0.1:8080/" --http-reconnect :sout-keep
@echo off
start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --netsync-master-ip=127.0.0.1:8080/ "http://127.0.0.1:8081/" --http-reconnect :sout-keep
@echo off
start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --netsync-master-ip=127.0.0.1:8080/ "http://127.0.0.1:8082/" --http-reconnect :sout-keep
@echo off
start "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --netsync-master-ip=127.0.0.1:8080/ "http://127.0.0.1:8083/" --http-reconnect :sout-keep
Ich bin mir nicht sicher ob man für die netzwerksynchronisierung den Parameter --netsync-master-ip=127.0.0.1:8080/ mit der IP-Adresse des VLC-Servers ohne oder mit Port angeben soll. In den Scriptbeispielen muss die IP-Adresse 127.0.0.1:808x/ gegen die des VLC-Servers ausgetauscht werden. Der Parameter --http-reconnect veranlasst den VLC-Player auf dem Client nach einem http-Stream zu warten und abzuspielen.
Für die automatische Vollbildwiedergabe auf den Clients kann man den Parameter --fullscreen im Script ergänzen. Jeweils ein Leerzeichen muss vor und nach dem Parameter im Script enthalten sein.
MfG
Thomas