Difference between revisions of "VLC mosaic config"

From Hackerspace ACKspace
Jump to: navigation, search
(More compatibility issues fixed)
(Changed info to working setup of 35C3 with 8 SD streams)
Line 1: Line 1:
 
=== VLC config files ===
 
=== VLC config files ===
Note: these configuration files are from the [[31C3]] event.
 
 
 
Note: apparently VLC >= 3.x has issues with HLS streams, VLC >= 2.2 has issues with creating the mosaic. It's best to use VLC < 2.2 to make this work.
 
Note: apparently VLC >= 3.x has issues with HLS streams, VLC >= 2.2 has issues with creating the mosaic. It's best to use VLC < 2.2 to make this work.
 
==== broadcast.conf ====
 
==== broadcast.conf ====
Line 10: Line 8:
  
 
new channel1 broadcast enabled
 
new channel1 broadcast enabled
#setup channel1 input "http://hls.stream.c3voc.de/hls/s1_native.m3u8"
+
#setup channel1 input "https://cdn.c3voc.de/hls/s1_native_hd.m3u8"
setup channel1 input "http://hls.stream.c3voc.de/hls/s1_native_sd.m3u8"
+
setup channel1 input "https://cdn.c3voc.de/hls/s1_native_sd.m3u8"
setup channel1 output #rtp{mux=ts,dst=239.255.255.42,port=9001,sdp=sap://,name="Saal 1"}
+
setup channel1 output #rtp{mux=ts,dst=239.255.255.42,port=9001,sdp=sap://,name="Saal Adams"}
  
 
new channel2 broadcast enabled
 
new channel2 broadcast enabled
#setup channel2 input "http://hls.stream.c3voc.de/hls/s2_native.m3u8"
+
#setup channel1 input "https://cdn.c3voc.de/hls/s2_native_hd.m3u8"
setup channel2 input "http://hls.stream.c3voc.de/hls/s2_native_sd.m3u8"
+
setup channel2 input "https://cdn.c3voc.de/hls/s2_native_sd.m3u8"
setup channel2 output #rtp{mux=ts,dst=239.255.255.42,port=9002,sdp=sap://,name="Saal 2"}
+
setup channel2 output #rtp{mux=ts,dst=239.255.255.42,port=9002,sdp=sap://,name="Saal Borg"}
  
 
new channel3 broadcast enabled
 
new channel3 broadcast enabled
#setup channel3 input "http://hls.stream.c3voc.de/hls/s3_native.m3u8"
+
#setup channel1 input "https://cdn.c3voc.de/hls/s3_native_hd.m3u8"
setup channel3 input "http://hls.stream.c3voc.de/hls/s3_native_sd.m3u8"
+
setup channel3 input "https://cdn.c3voc.de/hls/s3_native_sd.m3u8"
setup channel3 output #rtp{mux=ts,dst=239.255.255.42,port=9003,sdp=sap://,name="Saal G"}
+
setup channel3 output #rtp{mux=ts,dst=239.255.255.42,port=9003,sdp=sap://,name="Saal Clarke"}
  
 
new channel4 broadcast enabled
 
new channel4 broadcast enabled
#setup channel4 input "http://hls.stream.c3voc.de/hls/s4_native.m3u8"
+
#setup channel1 input "https://cdn.c3voc.de/hls/s4_native_hd.m3u8"
setup channel4 input "http://hls.stream.c3voc.de/hls/s4_native_sd.m3u8"
+
setup channel4 input "https://cdn.c3voc.de/hls/s4_native_sd.m3u8"
setup channel4 output #rtp{mux=ts,dst=239.255.255.42,port=9004,sdp=sap://,name="Saal 6"}
+
setup channel4 output #rtp{mux=ts,dst=239.255.255.42,port=9004,sdp=sap://,name="Saal Dijkstra"}
 +
 
 +
new channel5 broadcast enabled
 +
#setup channel1 input "https://cdn.c3voc.de/hls/s5_native_hd.m3u8"
 +
setup channel5 input "https://cdn.c3voc.de/hls/s5_native_sd.m3u8"
 +
setup channel5 output #rtp{mux=ts,dst=239.255.255.42,port=9005,sdp=sap://,name="Saal Eliza"}
 +
 
 +
new channel6 broadcast enabled
 +
#setup channel1 input "https://cdn.c3voc.de/hls/s150_native_hd.m3u8"
 +
setup channel6 input "https://cdn.c3voc.de/hls/s150_native_sd.m3u8"
 +
setup channel6 output #rtp{mux=ts,dst=239.255.255.42,port=9006,sdp=sap://,name="Chaos West Buhne"}
  
 +
new channel7 broadcast enabled
 +
#setup channel1 input "https://cdn.c3voc.de/hls/s151_native_hd.m3u8"
 +
setup channel7 input "https://cdn.c3voc.de/hls/s151_native_sd.m3u8"
 +
setup channel7 output #rtp{mux=ts,dst=239.255.255.42,port=9007,sdp=sap://,name="WikiPakaWG Eszimmer"}
 +
 +
new channel8 broadcast enabled
 +
#setup channel1 input "https://cdn.c3voc.de/hls/soio_native_hd.m3u8"
 +
setup channel8 input "https://cdn.c3voc.de/hls/soio_native_sd.m3u8"
 +
setup channel8 output #rtp{mux=ts,dst=239.255.255.42,port=9008,sdp=sap://,name="OIO"}
  
 
control channel1 play
 
control channel1 play
Line 34: Line 51:
 
control channel3 play
 
control channel3 play
 
control channel4 play
 
control channel4 play
 +
control channel5 play
 +
control channel6 play
 +
control channel7 play
 +
control channel8 play
 
</pre>
 
</pre>
  
 
==== saal_mosaic.conf ====
 
==== saal_mosaic.conf ====
Pick up on the 4 multicast streams and put them in a mosaic
+
Pick up on the 8 multicast streams and put them in a mosaic
 
<pre>
 
<pre>
 
# run with
 
# run with
# cvlc --vlm-conf /home/xopr/Desktop/VLC/saal_mosaic.conf --mosaic-width 1280 --mosaic-order "1,2,3,4" --mosaic-height 720
+
# cvlc --vlm-conf /home/xopr/Desktop/VLC/saal_mosaic.conf --mosaic-width 1280 --mosaic-order "1,2,3,4,9,5,6,7,8" --mosaic-height 720
  
 
new channel1 broadcast enabled
 
new channel1 broadcast enabled
 
setup channel1 input "rtp://@239.255.255.42:9001"
 
setup channel1 input "rtp://@239.255.255.42:9001"
#setup channel1 output #mosaic-bridge{id=1,height=360,width=640}
+
setup channel1 output #duplicate{dst=mosaic-bridge{id=1},select=video,dst=mosaic-bridge{id=1},select=audio}
setup channel1 output #duplicate{dst=mosaic-bridge{id=1,height=360,width=640},select=video,dst=bridge-out{id=1},select=audio}
 
  
 
new channel2 broadcast enabled
 
new channel2 broadcast enabled
 
setup channel2 input "rtp://@239.255.255.42:9002"
 
setup channel2 input "rtp://@239.255.255.42:9002"
#setup channel2 output #mosaic-bridge{id=2,height=360,width=640}
+
setup channel2 output #duplicate{dst=mosaic-bridge{id=2},select=video,dst=mosaic-bridge{id=2},select=audio}
setup channel2 output #duplicate{dst=mosaic-bridge{id=2,height=360,width=640},select=video,dst=bridge-out{id=2},select=audio}
 
  
 
new channel3 broadcast enabled
 
new channel3 broadcast enabled
 
setup channel3 input "rtp://@239.255.255.42:9003"
 
setup channel3 input "rtp://@239.255.255.42:9003"
#setup channel3 output #mosaic-bridge{id=3,height=360,width=640}
+
setup channel3 output #duplicate{dst=mosaic-bridge{id=3},select=video,dst=mosaic-bridge{id=3},select=audio}
setup channel3 output #duplicate{dst=mosaic-bridge{id=3,height=360,width=640},select=video,dst=bridge-out{id=3},select=audio}
 
  
 
new channel4 broadcast enabled
 
new channel4 broadcast enabled
 
setup channel4 input "rtp://@239.255.255.42:9004"
 
setup channel4 input "rtp://@239.255.255.42:9004"
#setup channel4 output #mosaic-bridge{id=4,height=360,width=640}
+
setup channel4 output #duplicate{dst=mosaic-bridge{id=4},select=video,dst=mosaic-bridge{id=4},select=audio}
setup channel4 output #duplicate{dst=mosaic-bridge{id=4,height=360,width=640},select=video,dst=bridge-out{id=4},select=audio}
+
 
 +
new channel5 broadcast enabled
 +
setup channel5 input "rtp://@239.255.255.42:9005"
 +
setup channel5 output #duplicate{dst=mosaic-bridge{id=5},select=video,dst=mosaic-bridge{id=5},select=audio}
 +
 
 +
new channel6 broadcast enabled
 +
setup channel6 input "rtp://@239.255.255.42:9006"
 +
setup channel6 output #duplicate{dst=mosaic-bridge{id=6},select=video,dst=mosaic-bridge{id=6},select=audio}
 +
 
 +
new channel7 broadcast enabled
 +
setup channel7 input "rtp://@239.255.255.42:9007"
 +
setup channel7 output #duplicate{dst=mosaic-bridge{id=7},select=video,dst=mosaic-bridge{id=7},select=audio}
  
 +
new channel8 broadcast enabled
 +
setup channel8 input "rtp://@239.255.255.42:9008"
 +
setup channel8 output #duplicate{dst=mosaic-bridge{id=8},select=video,dst=mosaic-bridge{id=8},select=audio}
  
 
new mosaic broadcast enabled
 
new mosaic broadcast enabled
Line 67: Line 99:
 
setup mosaic option image-duration=-1
 
setup mosaic option image-duration=-1
 
setup mosaic option image-fps=24/1
 
setup mosaic option image-fps=24/1
setup mosaic option mosaic-rows=2
 
setup mosaic option mosaic-cols=2
 
 
setup mosaic option mosaic-position=1
 
setup mosaic option mosaic-position=1
 
setup mosaic output #transcode{sfilter=mosaic,vcodec=mp2v,vb=500,scale=1}:bridge-in{delay=400,id-offset=100}:rtp{mux=ts,dst=239.255.255.42,port=5004,sap,name="Mosaic"}
 
setup mosaic output #transcode{sfilter=mosaic,vcodec=mp2v,vb=500,scale=1}:bridge-in{delay=400,id-offset=100}:rtp{mux=ts,dst=239.255.255.42,port=5004,sap,name="Mosaic"}
Line 76: Line 106:
 
control channel3 play
 
control channel3 play
 
control channel4 play
 
control channel4 play
 +
control channel5 play
 +
control channel6 play
 +
control channel7 play
 +
control channel8 play
 
control mosaic play
 
control mosaic play
 
</pre>
 
</pre>
Line 81: Line 115:
 
=== files ===
 
=== files ===
 
<gallery>
 
<gallery>
 +
Image:mosaic_1280x720.png|mosaic_1280x720.png
 
Image:ACKbg-1280x720.jpg|ACKbg-1280x720.jpg
 
Image:ACKbg-1280x720.jpg|ACKbg-1280x720.jpg
 
Image:TSbg-1280x720.png|TSbg-1280x720.png
 
Image:TSbg-1280x720.png|TSbg-1280x720.png
Line 90: Line 125:
 
* the RTP stream seems to emit some type of timecode, so multiple streams are fairly in sync. Picking up on the RTP streams to create an RTP mosaic will off course delay that mosaic
 
* the RTP stream seems to emit some type of timecode, so multiple streams are fairly in sync. Picking up on the RTP streams to create an RTP mosaic will off course delay that mosaic
 
* In 2013, [[User:Xopr|Xopr]] wrote an [[XBMC remote control script for streams]] to switch channels from within a console with just one keypress.
 
* In 2013, [[User:Xopr|Xopr]] wrote an [[XBMC remote control script for streams]] to switch channels from within a console with just one keypress.
* Multicast streams didn't work on wifi (as expected), but even worse: multicast broke the wifi networks
+
* Multicast streams didn't work on wifi (as expected), but even worse: multicast broke the wifi networks. You can start a multicast stream over wifi though.

Revision as of 11:59, 30 December 2018

VLC config files

Note: apparently VLC >= 3.x has issues with HLS streams, VLC >= 2.2 has issues with creating the mosaic. It's best to use VLC < 2.2 to make this work.

broadcast.conf

fetch 4 unicast streams and put them out as multicast

# cvlc --vlm-conf /home/xopr/Desktop/VLC/broadcast.conf
# vlc rtp://@239.255.255.42:5004

new channel1 broadcast enabled
#setup channel1 input "https://cdn.c3voc.de/hls/s1_native_hd.m3u8"
setup channel1 input "https://cdn.c3voc.de/hls/s1_native_sd.m3u8"
setup channel1 output #rtp{mux=ts,dst=239.255.255.42,port=9001,sdp=sap://,name="Saal Adams"}

new channel2 broadcast enabled
#setup channel1 input "https://cdn.c3voc.de/hls/s2_native_hd.m3u8"
setup channel2 input "https://cdn.c3voc.de/hls/s2_native_sd.m3u8"
setup channel2 output #rtp{mux=ts,dst=239.255.255.42,port=9002,sdp=sap://,name="Saal Borg"}

new channel3 broadcast enabled
#setup channel1 input "https://cdn.c3voc.de/hls/s3_native_hd.m3u8"
setup channel3 input "https://cdn.c3voc.de/hls/s3_native_sd.m3u8"
setup channel3 output #rtp{mux=ts,dst=239.255.255.42,port=9003,sdp=sap://,name="Saal Clarke"}

new channel4 broadcast enabled
#setup channel1 input "https://cdn.c3voc.de/hls/s4_native_hd.m3u8"
setup channel4 input "https://cdn.c3voc.de/hls/s4_native_sd.m3u8"
setup channel4 output #rtp{mux=ts,dst=239.255.255.42,port=9004,sdp=sap://,name="Saal Dijkstra"}

new channel5 broadcast enabled
#setup channel1 input "https://cdn.c3voc.de/hls/s5_native_hd.m3u8"
setup channel5 input "https://cdn.c3voc.de/hls/s5_native_sd.m3u8"
setup channel5 output #rtp{mux=ts,dst=239.255.255.42,port=9005,sdp=sap://,name="Saal Eliza"}

new channel6 broadcast enabled
#setup channel1 input "https://cdn.c3voc.de/hls/s150_native_hd.m3u8"
setup channel6 input "https://cdn.c3voc.de/hls/s150_native_sd.m3u8"
setup channel6 output #rtp{mux=ts,dst=239.255.255.42,port=9006,sdp=sap://,name="Chaos West Buhne"}

new channel7 broadcast enabled
#setup channel1 input "https://cdn.c3voc.de/hls/s151_native_hd.m3u8"
setup channel7 input "https://cdn.c3voc.de/hls/s151_native_sd.m3u8"
setup channel7 output #rtp{mux=ts,dst=239.255.255.42,port=9007,sdp=sap://,name="WikiPakaWG Eszimmer"}

new channel8 broadcast enabled
#setup channel1 input "https://cdn.c3voc.de/hls/soio_native_hd.m3u8"
setup channel8 input "https://cdn.c3voc.de/hls/soio_native_sd.m3u8"
setup channel8 output #rtp{mux=ts,dst=239.255.255.42,port=9008,sdp=sap://,name="OIO"}

control channel1 play
control channel2 play
control channel3 play
control channel4 play
control channel5 play
control channel6 play
control channel7 play
control channel8 play

saal_mosaic.conf

Pick up on the 8 multicast streams and put them in a mosaic

# run with
# cvlc --vlm-conf /home/xopr/Desktop/VLC/saal_mosaic.conf --mosaic-width 1280 --mosaic-order "1,2,3,4,9,5,6,7,8" --mosaic-height 720

new channel1 broadcast enabled
setup channel1 input "rtp://@239.255.255.42:9001"
setup channel1 output #duplicate{dst=mosaic-bridge{id=1},select=video,dst=mosaic-bridge{id=1},select=audio}

new channel2 broadcast enabled
setup channel2 input "rtp://@239.255.255.42:9002"
setup channel2 output #duplicate{dst=mosaic-bridge{id=2},select=video,dst=mosaic-bridge{id=2},select=audio}

new channel3 broadcast enabled
setup channel3 input "rtp://@239.255.255.42:9003"
setup channel3 output #duplicate{dst=mosaic-bridge{id=3},select=video,dst=mosaic-bridge{id=3},select=audio}

new channel4 broadcast enabled
setup channel4 input "rtp://@239.255.255.42:9004"
setup channel4 output #duplicate{dst=mosaic-bridge{id=4},select=video,dst=mosaic-bridge{id=4},select=audio}

new channel5 broadcast enabled
setup channel5 input "rtp://@239.255.255.42:9005"
setup channel5 output #duplicate{dst=mosaic-bridge{id=5},select=video,dst=mosaic-bridge{id=5},select=audio}

new channel6 broadcast enabled
setup channel6 input "rtp://@239.255.255.42:9006"
setup channel6 output #duplicate{dst=mosaic-bridge{id=6},select=video,dst=mosaic-bridge{id=6},select=audio}

new channel7 broadcast enabled
setup channel7 input "rtp://@239.255.255.42:9007"
setup channel7 output #duplicate{dst=mosaic-bridge{id=7},select=video,dst=mosaic-bridge{id=7},select=audio}

new channel8 broadcast enabled
setup channel8 input "rtp://@239.255.255.42:9008"
setup channel8 output #duplicate{dst=mosaic-bridge{id=8},select=video,dst=mosaic-bridge{id=8},select=audio}

new mosaic broadcast enabled
setup mosaic input "file:///home/xopr/Desktop/VLC/ACKbg-1280x720.jpg"
setup mosaic option image-duration=-1
setup mosaic option image-fps=24/1
setup mosaic option mosaic-position=1
setup mosaic output #transcode{sfilter=mosaic,vcodec=mp2v,vb=500,scale=1}:bridge-in{delay=400,id-offset=100}:rtp{mux=ts,dst=239.255.255.42,port=5004,sap,name="Mosaic"}

control channel1 play
control channel2 play
control channel3 play
control channel4 play
control channel5 play
control channel6 play
control channel7 play
control channel8 play
control mosaic play

files

notes and other info

  • 4 HD streams were too heavy for my dual core hyperthreaded 2.4GHz laptop: it would glitch into an unintelligible paint blob
  • using a VLM config file to open multiple streams with bandwith/cpu issues causes all streams to pause upon reconnecting a stream that went out of sync. Use a separate instance for each stream
  • the RTP stream seems to emit some type of timecode, so multiple streams are fairly in sync. Picking up on the RTP streams to create an RTP mosaic will off course delay that mosaic
  • In 2013, Xopr wrote an XBMC remote control script for streams to switch channels from within a console with just one keypress.
  • Multicast streams didn't work on wifi (as expected), but even worse: multicast broke the wifi networks. You can start a multicast stream over wifi though.