aboutsummaryrefslogtreecommitdiffstats
path: root/examples/tg16/streams
diff options
context:
space:
mode:
Diffstat (limited to 'examples/tg16/streams')
-rw-r--r--examples/tg16/streams/anakin/encode.sh7
-rw-r--r--examples/tg16/streams/cubemap/finn-cubemap.config150
-rw-r--r--examples/tg16/streams/cubemap/rey-cubemap.config150
-rw-r--r--examples/tg16/streams/encoder-install.sh42
-rw-r--r--examples/tg16/streams/han/encode.sh7
-rw-r--r--examples/tg16/streams/han/event-encode-mp4.sh5
-rw-r--r--examples/tg16/streams/han/event-sd.sh6
-rw-r--r--examples/tg16/streams/han/hls-creativia.sh6
-rw-r--r--examples/tg16/streams/han/hls-event.sh6
-rw-r--r--examples/tg16/streams/han/hls-game.sh6
-rw-r--r--examples/tg16/streams/han/hls-noc.sh6
-rw-r--r--examples/tg16/streams/han/hls-south.sh6
-rw-r--r--examples/tg16/streams/han/noc-reflect.sh9
-rw-r--r--examples/tg16/streams/han/south-encode-mp4.sh5
-rw-r--r--examples/tg16/streams/han/south-encode.sh10
-rw-r--r--examples/tg16/streams/han/south-reflect.sh9
-rw-r--r--examples/tg16/streams/leia/encode.sh7
-rw-r--r--examples/tg16/streams/luke/encode.sh7
-rw-r--r--examples/tg16/streams/luke/ffmpeg-deinterlace.sh6
-rw-r--r--examples/tg16/streams/luke/ffmpeg.sh5
-rw-r--r--examples/tg16/streams/padme/encode-mp4.sh8
-rw-r--r--examples/tg16/streams/padme/encode-webm.sh5
-rw-r--r--examples/tg16/streams/padme/encode.sh8
-rw-r--r--examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.pngbin0 -> 80103 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.pngbin0 -> 112740 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.pngbin0 -> 124723 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.pngbin0 -> 154658 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.pngbin0 -> 139200 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.pngbin0 -> 153803 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.pngbin0 -> 152859 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.pngbin0 -> 147600 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.pngbin0 -> 88365 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.pngbin0 -> 115733 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.pngbin0 -> 125824 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.pngbin0 -> 161218 bytes
-rw-r--r--examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.pngbin0 -> 150007 bytes
36 files changed, 476 insertions, 0 deletions
diff --git a/examples/tg16/streams/anakin/encode.sh b/examples/tg16/streams/anakin/encode.sh
new file mode 100644
index 0000000..4994b76
--- /dev/null
+++ b/examples/tg16/streams/anakin/encode.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-video-connection sdi \
+ --sout-x264-preset slow --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \
+ --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 4000 --sout-x264-vbv-bufsize 4000 --ttl 60 \
+ -v decklink:// vlc://quit \
+ --sout \
+'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/anakin.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/anakin.flv}'
diff --git a/examples/tg16/streams/cubemap/finn-cubemap.config b/examples/tg16/streams/cubemap/finn-cubemap.config
new file mode 100644
index 0000000..7faa9a6
--- /dev/null
+++ b/examples/tg16/streams/cubemap/finn-cubemap.config
@@ -0,0 +1,150 @@
+# Uncomment to run in the background. Note that in daemonized mode, all filenames
+# are relative to an undefined directory, so you should use absolute paths for
+# error_log, stats_file, etc.
+
+#daemonize
+
+# For low-traffic servers (less than a gigabit or two), num_servers 1 is fine.
+# For best performance in high-traffic situations, you want one for each CPU.
+num_servers 1
+
+#
+# All input ports are treated exactly the same, but you may use multiple ones nevertheless.
+#
+port 80
+# listen 127.0.0.1:9095
+# listen [::1]:9095
+
+stats_file /var/lib/cubemap/cubemap.stats
+stats_interval 60
+
+input_stats_file /var/lib/cubemap/cubemap-input.stats
+input_stats_interval 60
+
+# Logging of clients as they disconnect (and as such as no longer visible in the stats file).
+# You can only have zero or one of these.
+access_log /var/log/cubemap/access.log
+
+# Logging of various informational and error messages. You can have as many of these as you want.
+error_log type=file filename=/var/log/cubemap/cubemap.log
+error_log type=syslog
+error_log type=console
+
+#
+# Now the streams! There are two types of streams; stream (HTTP output)
+# and udpstream (UDP output). Let's take stream first.
+#
+
+# A basic form of stream, with HTTP input. Often, you will need no more than this.
+# The input must be Metacube framed (VLC can produce this with an option).
+#stream /test.flv src=http://gruessi.zrh.sesse.net:4013/test.flv
+
+# Streams can share the same input (the same is reused, no extra bandwidth needed).
+# force_prebuffer=<number of bytes> is a parameter where we don't start sending
+# any data to a newly connected client before we can do that many bytes at once.
+# This is useful for clients that don't properly buffer themselves before starting
+# playing, e.g., most web browsers and some Flash players when playing from HTTP
+# (e.g., JW Player).
+#stream /test-jwplayer.flv src=http://gruessi.zrh.sesse.net:4013/test.flv force_prebuffer=1500000
+
+# encoding=metacube means the _output_ will be Metacube framed. This is useful
+# for sending on to another Cubemap instance.
+#stream /test.flv.metacube src=http://gruessi.zrh.sesse.net:4013/test.flv encoding=metacube
+
+# UDP input. TS is the most common container to use over UDP (you cannot
+# take any arbitrary container and expect it to work).
+# backlog_size=<number of bytes> overrides the backlog, which is normally 10 MB.
+# If clients fall more behind than the backlog (plus the socket buffer),
+# they will drop data, so if you have extremely high-bitrate streams, you may want
+# to increase this. Or conversely, if you have little RAM and many streams
+# (or many servers) you can decrease it.
+#stream /udp.ts src=udp://@:1234 backlog_size=1048576
+
+# An example of IPv4 multicast input. Cubemap will subscribe to the given group
+# and wait for data sent by any sender to the given port.
+# pacing_rate_kbit=<number of kilobit/sec> will ask the kernel to hard-limit
+# the TCP transfer rate, including retransmits, to the given speed. (This is a
+# no-op if you do not use the sch_fq packet scheduler, which is not the default
+# but can be set in Linux 3.13 and newer using tc.) This is extremely
+# useful for reducing packet loss and thus including throughput, since it means
+# that packets arrive smoothly instead of in tight bursts, which will often
+# overload underbuffered routers and cause drops (imagine receiving a 100 kB
+# keyframe at 10gig speeds, and then having to meter it out over 5 Mbit ADSL).
+# The rate should be a bit higher than your stream bitrate to allow for retransmits.
+#stream /udp-multicast.ts src=udp://@233.252.0.2:1234 pacing_rate_kbit=2000
+
+# IPv6 SSM (Single Source Multicast) input. Subscribes to the given group and
+# waits for packets from the given sender only. SSM is nicer than ASM in that
+# it does not require a Rendezvous Point (RP) and other complexity, but is
+# often poorly supported in various network equipment.
+#stream /udp-multicast-ssmv6.ts src=udp://[2001:67c:29f4::32]@[ff3e::1000:0]:1234 pacing_rate_kbit=20000
+
+# udpstream takes src= inputs just like stream does, but instead of waiting
+# for TCP connections on ports, it immediately sends the packets out over UDP.
+# (As with UDP input, this probably only works well for TS mux.)
+#udpstream [2001:67c:29f4::50]:5000 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube
+
+# udpstream takes pacing_rate_kbit= just like stream. None of the other options
+# make sense.
+#udpstream 193.35.52.50:5001 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube pacing_rate_kbit=2000
+
+# IPv4 multicast output, to the given group. You can explicitly set the TTL
+# and/or multicast output interface, if the defaults do not suit you.
+#udpstream 233.252.0.1:5002 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube ttl=32 multicast_output_interface=eth1
+
+# A type of HTTP resource that is not a stream, but rather just a very simple
+# document that a HTTP 204 response and nothing else. allow_origin= is optional;
+# if it is set, the response will contain an Access-Control-Allow-Origin header
+# with the given value, allowing the ping response to be read (and
+# differentiated from an error) from a remote domain using XHR.
+#
+# If you have a stream and a gen204 endpoint with the same URL, the stream takes
+# precedence and the ping endpoint is silently ignored.
+gen204 /ping allow_origin=*
+
+# TG16
+
+# For viewers -- production feeds
+stream /event.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600
+stream /event.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600
+
+stream /eventsd.ts src=http://han.tg16.gathering.org:5009/eventsd.ts backlog_size=104857600
+stream /eventsd.flv src=http://han.tg16.gathering.org:5009/eventsd.flv backlog_size=104857600
+
+stream /game.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600
+stream /game.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600
+
+stream /creativia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600
+stream /creativia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600
+
+
+# Servers - direct feed
+stream /anakin.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600
+stream /anakin.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600
+
+stream /padme.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600
+stream /padme.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600
+
+stream /luke.ts src=http://luke.tg16.gathering.org:5004/luke.ts backlog_size=104857600
+stream /luke.flv src=http://luke.tg16.gathering.org:5004/luke.flv backlog_size=104857600
+
+stream /leia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600
+stream /leia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600
+
+#stream /han.ts src=http://han.tg16.gathering.org:5004/han.ts backlog_size=104857600
+#stream /han.flv src=http://han.tg16.gathering.org:5004/han.flv backlog_size=104857600
+
+# Webcams
+stream /southcam.ts src=http://han.tg16.gathering.org:5004/southcam.ts backlog_size=104857600
+stream /southcam.flv src=http://han.tg16.gathering.org:5004/southcam.flv backlog_size=104857600
+stream /southcamlb.ts src=http://han.tg16.gathering.org:5006/southcamlb.ts backlog_size=104857600
+stream /southcamlb.flv src=http://han.tg16.gathering.org:5006/southcamlb.flv backlog_size=104857600
+stream /noccam.ts src=http://han.tg16.gathering.org:5005/noccam.ts backlog_size=104857600
+stream /noccam.flv src=http://han.tg16.gathering.org:5005/noccam.flv backlog_size=104857600
+
+# Test
+#stream /test.ts src=udp://@:1234 backlog_size=1048576
+stream /event.mp4 src=http://han.tg16.gathering.org:1994/event.mp4 backlog_size=104857600 force_prebuffer=750000
+
+stream /udp.ts src=udp://@:1234 backlog_size=1048576
+
diff --git a/examples/tg16/streams/cubemap/rey-cubemap.config b/examples/tg16/streams/cubemap/rey-cubemap.config
new file mode 100644
index 0000000..7faa9a6
--- /dev/null
+++ b/examples/tg16/streams/cubemap/rey-cubemap.config
@@ -0,0 +1,150 @@
+# Uncomment to run in the background. Note that in daemonized mode, all filenames
+# are relative to an undefined directory, so you should use absolute paths for
+# error_log, stats_file, etc.
+
+#daemonize
+
+# For low-traffic servers (less than a gigabit or two), num_servers 1 is fine.
+# For best performance in high-traffic situations, you want one for each CPU.
+num_servers 1
+
+#
+# All input ports are treated exactly the same, but you may use multiple ones nevertheless.
+#
+port 80
+# listen 127.0.0.1:9095
+# listen [::1]:9095
+
+stats_file /var/lib/cubemap/cubemap.stats
+stats_interval 60
+
+input_stats_file /var/lib/cubemap/cubemap-input.stats
+input_stats_interval 60
+
+# Logging of clients as they disconnect (and as such as no longer visible in the stats file).
+# You can only have zero or one of these.
+access_log /var/log/cubemap/access.log
+
+# Logging of various informational and error messages. You can have as many of these as you want.
+error_log type=file filename=/var/log/cubemap/cubemap.log
+error_log type=syslog
+error_log type=console
+
+#
+# Now the streams! There are two types of streams; stream (HTTP output)
+# and udpstream (UDP output). Let's take stream first.
+#
+
+# A basic form of stream, with HTTP input. Often, you will need no more than this.
+# The input must be Metacube framed (VLC can produce this with an option).
+#stream /test.flv src=http://gruessi.zrh.sesse.net:4013/test.flv
+
+# Streams can share the same input (the same is reused, no extra bandwidth needed).
+# force_prebuffer=<number of bytes> is a parameter where we don't start sending
+# any data to a newly connected client before we can do that many bytes at once.
+# This is useful for clients that don't properly buffer themselves before starting
+# playing, e.g., most web browsers and some Flash players when playing from HTTP
+# (e.g., JW Player).
+#stream /test-jwplayer.flv src=http://gruessi.zrh.sesse.net:4013/test.flv force_prebuffer=1500000
+
+# encoding=metacube means the _output_ will be Metacube framed. This is useful
+# for sending on to another Cubemap instance.
+#stream /test.flv.metacube src=http://gruessi.zrh.sesse.net:4013/test.flv encoding=metacube
+
+# UDP input. TS is the most common container to use over UDP (you cannot
+# take any arbitrary container and expect it to work).
+# backlog_size=<number of bytes> overrides the backlog, which is normally 10 MB.
+# If clients fall more behind than the backlog (plus the socket buffer),
+# they will drop data, so if you have extremely high-bitrate streams, you may want
+# to increase this. Or conversely, if you have little RAM and many streams
+# (or many servers) you can decrease it.
+#stream /udp.ts src=udp://@:1234 backlog_size=1048576
+
+# An example of IPv4 multicast input. Cubemap will subscribe to the given group
+# and wait for data sent by any sender to the given port.
+# pacing_rate_kbit=<number of kilobit/sec> will ask the kernel to hard-limit
+# the TCP transfer rate, including retransmits, to the given speed. (This is a
+# no-op if you do not use the sch_fq packet scheduler, which is not the default
+# but can be set in Linux 3.13 and newer using tc.) This is extremely
+# useful for reducing packet loss and thus including throughput, since it means
+# that packets arrive smoothly instead of in tight bursts, which will often
+# overload underbuffered routers and cause drops (imagine receiving a 100 kB
+# keyframe at 10gig speeds, and then having to meter it out over 5 Mbit ADSL).
+# The rate should be a bit higher than your stream bitrate to allow for retransmits.
+#stream /udp-multicast.ts src=udp://@233.252.0.2:1234 pacing_rate_kbit=2000
+
+# IPv6 SSM (Single Source Multicast) input. Subscribes to the given group and
+# waits for packets from the given sender only. SSM is nicer than ASM in that
+# it does not require a Rendezvous Point (RP) and other complexity, but is
+# often poorly supported in various network equipment.
+#stream /udp-multicast-ssmv6.ts src=udp://[2001:67c:29f4::32]@[ff3e::1000:0]:1234 pacing_rate_kbit=20000
+
+# udpstream takes src= inputs just like stream does, but instead of waiting
+# for TCP connections on ports, it immediately sends the packets out over UDP.
+# (As with UDP input, this probably only works well for TS mux.)
+#udpstream [2001:67c:29f4::50]:5000 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube
+
+# udpstream takes pacing_rate_kbit= just like stream. None of the other options
+# make sense.
+#udpstream 193.35.52.50:5001 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube pacing_rate_kbit=2000
+
+# IPv4 multicast output, to the given group. You can explicitly set the TTL
+# and/or multicast output interface, if the defaults do not suit you.
+#udpstream 233.252.0.1:5002 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube ttl=32 multicast_output_interface=eth1
+
+# A type of HTTP resource that is not a stream, but rather just a very simple
+# document that a HTTP 204 response and nothing else. allow_origin= is optional;
+# if it is set, the response will contain an Access-Control-Allow-Origin header
+# with the given value, allowing the ping response to be read (and
+# differentiated from an error) from a remote domain using XHR.
+#
+# If you have a stream and a gen204 endpoint with the same URL, the stream takes
+# precedence and the ping endpoint is silently ignored.
+gen204 /ping allow_origin=*
+
+# TG16
+
+# For viewers -- production feeds
+stream /event.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600
+stream /event.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600
+
+stream /eventsd.ts src=http://han.tg16.gathering.org:5009/eventsd.ts backlog_size=104857600
+stream /eventsd.flv src=http://han.tg16.gathering.org:5009/eventsd.flv backlog_size=104857600
+
+stream /game.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600
+stream /game.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600
+
+stream /creativia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600
+stream /creativia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600
+
+
+# Servers - direct feed
+stream /anakin.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600
+stream /anakin.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600
+
+stream /padme.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600
+stream /padme.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600
+
+stream /luke.ts src=http://luke.tg16.gathering.org:5004/luke.ts backlog_size=104857600
+stream /luke.flv src=http://luke.tg16.gathering.org:5004/luke.flv backlog_size=104857600
+
+stream /leia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600
+stream /leia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600
+
+#stream /han.ts src=http://han.tg16.gathering.org:5004/han.ts backlog_size=104857600
+#stream /han.flv src=http://han.tg16.gathering.org:5004/han.flv backlog_size=104857600
+
+# Webcams
+stream /southcam.ts src=http://han.tg16.gathering.org:5004/southcam.ts backlog_size=104857600
+stream /southcam.flv src=http://han.tg16.gathering.org:5004/southcam.flv backlog_size=104857600
+stream /southcamlb.ts src=http://han.tg16.gathering.org:5006/southcamlb.ts backlog_size=104857600
+stream /southcamlb.flv src=http://han.tg16.gathering.org:5006/southcamlb.flv backlog_size=104857600
+stream /noccam.ts src=http://han.tg16.gathering.org:5005/noccam.ts backlog_size=104857600
+stream /noccam.flv src=http://han.tg16.gathering.org:5005/noccam.flv backlog_size=104857600
+
+# Test
+#stream /test.ts src=udp://@:1234 backlog_size=1048576
+stream /event.mp4 src=http://han.tg16.gathering.org:1994/event.mp4 backlog_size=104857600 force_prebuffer=750000
+
+stream /udp.ts src=udp://@:1234 backlog_size=1048576
+
diff --git a/examples/tg16/streams/encoder-install.sh b/examples/tg16/streams/encoder-install.sh
new file mode 100644
index 0000000..87da90f
--- /dev/null
+++ b/examples/tg16/streams/encoder-install.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+apt-get -y install build-essential git-core pkg-config libfaad-dev libdvbpsi-dev liblivemedia-dev libraw1394-dev libdc1394-22-dev libavc1394-dev libtool libtwolame-dev automake dkms libfontconfig1 libice6 libjpeg62 libmng1 libsm6 libtiff5 libxi6 libxrandr2 libxrender1 fontconfig libgl1-mesa-glx dh-autoreconf linux-headers-amd64 zlib1g-dev unzip libgcrypt-dev libvorbis-dev yasm sudo
+dpkg -i desktopvideo_10.6.2a3_amd64.deb
+
+cd libvpx
+./configure --enable-shared
+make -j20
+sudo make install
+sudo ldconfig
+cd ..
+
+cd x264
+./configure --enable-shared
+make -j20
+sudo make install
+sudo ldconfig
+cd ..
+
+cd fdk-aac
+libtoolize
+aclocal
+automake --add-missing
+autoconf
+./configure
+make -j20
+sudo make install
+sudo ldconfig
+cd ..
+
+cd ffmpeg
+./configure --enable-shared --enable-libx264 --disable-stripping --enable-gpl --enable-nonfree --enable-libvpx --enable-libvorbis --enable-libfdk-aac
+make -j20
+sudo make install
+sudo ldconfig
+cd ..
+
+cd vlc
+./bootstrap
+./configure --disable-dbus --disable-mad --disable-postproc --disable-a52 --disable-glx --disable-fribidi --disable-qt --disable-skins2 --enable-dvbpsi --enable-faad --disable-nls --disable-xcb --disable-sdl --disable-libgcrypt --disable-lua --disable-alsa --disable-v4l2 --enable-libgcrypt --enable-fdkaac --with-decklink-sdk=/root/decklink-sdk/Linux
+make -j20
+sudo make install
+sudo ldconfig
diff --git a/examples/tg16/streams/han/encode.sh b/examples/tg16/streams/han/encode.sh
new file mode 100644
index 0000000..34cda9f
--- /dev/null
+++ b/examples/tg16/streams/han/encode.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp60 --decklink-video-connection sdi --no-sub-autodetect-file --sub-source marq --marq-marquee 'Hello world! %t' \
+ --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \
+ --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \
+ -v decklink:// vlc://quit \
+ --sout \
+'#transcode{sfilter=logo{file="/home/tech/test.gif",position=10},vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/han.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/han.flv}'
diff --git a/examples/tg16/streams/han/event-encode-mp4.sh b/examples/tg16/streams/han/event-encode-mp4.sh
new file mode 100644
index 0000000..7cb202f
--- /dev/null
+++ b/examples/tg16/streams/han/event-encode-mp4.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+cvlc -I dummy --network-caching 5000 --live-caching 5000 -vvvv http://cubemap.tg16.gathering.org/event.ts vlc://quit \
+--sout-x264-preset medium --sout-x264-tune film --sout-mux-caching 5000 --sout-transcode-threads 8 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof}' --no-avcodec-dr --sout-x264-keyint 50 \
+--sout \
+'#transcode{vcodec=h264,vb=3500,acodec=mp4a,ab=128,channels=2}:std{mux=ffmpeg{mux=mp4},access=http{mime=video/mp4,metacube},dst=:1994/event.mp4}'
diff --git a/examples/tg16/streams/han/event-sd.sh b/examples/tg16/streams/han/event-sd.sh
new file mode 100644
index 0000000..9b927b3
--- /dev/null
+++ b/examples/tg16/streams/han/event-sd.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+cvlc -I dummy -vvvv --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 5 --no-sout-x264-interlaced --sout-mux-caching 5000 \
+ --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 2000 --sout-x264-vbv-bufsize 2000 --ttl 60 --live-caching 10000 --network-caching 10000 \
+ -v http://cubemap.tg16.gathering.org/anakin.ts vlc://quit \
+ --sout \
+'#transcode{vcodec=h264,vb=2000,acodec=mp4a,ab=128,channels=2,height=576}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5009/eventsd.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5009/eventsd.flv}'
diff --git a/examples/tg16/streams/han/hls-creativia.sh b/examples/tg16/streams/han/hls-creativia.sh
new file mode 100644
index 0000000..d07cbf7
--- /dev/null
+++ b/examples/tg16/streams/han/hls-creativia.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+while :; do
+ffmpeg -i http://cubemap.tg16.gathering.org/creativia.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/creativia;
+sleep 1
+done
+
diff --git a/examples/tg16/streams/han/hls-event.sh b/examples/tg16/streams/han/hls-event.sh
new file mode 100644
index 0000000..8050305
--- /dev/null
+++ b/examples/tg16/streams/han/hls-event.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+while :; do
+ffmpeg -i http://cubemap.tg16.gathering.org/event.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/event;
+sleep 1
+done
+
diff --git a/examples/tg16/streams/han/hls-game.sh b/examples/tg16/streams/han/hls-game.sh
new file mode 100644
index 0000000..3d2fef9
--- /dev/null
+++ b/examples/tg16/streams/han/hls-game.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+while :; do
+ffmpeg -i http://cubemap.tg16.gathering.org/game.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/game;
+sleep 1
+done
+
diff --git a/examples/tg16/streams/han/hls-noc.sh b/examples/tg16/streams/han/hls-noc.sh
new file mode 100644
index 0000000..f467fc4
--- /dev/null
+++ b/examples/tg16/streams/han/hls-noc.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+while :; do
+ffmpeg -thread_queue_size 16 -i http://cubemap.tg16.gathering.org/noccam.ts -f lavfi -i anullsrc -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/noccam;
+sleep 1
+done
+
diff --git a/examples/tg16/streams/han/hls-south.sh b/examples/tg16/streams/han/hls-south.sh
new file mode 100644
index 0000000..6966b59
--- /dev/null
+++ b/examples/tg16/streams/han/hls-south.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+while :; do
+ffmpeg -thread_queue_size 16 -i http://cubemap.tg16.gathering.org/southcam.ts -f lavfi -i anullsrc -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/southcam;
+sleep 1
+done
+
diff --git a/examples/tg16/streams/han/noc-reflect.sh b/examples/tg16/streams/han/noc-reflect.sh
new file mode 100644
index 0000000..a33c4e0
--- /dev/null
+++ b/examples/tg16/streams/han/noc-reflect.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+# reflecting purposes
+source="rtsp://185.110.150.85/live.sdp"
+
+while :; do
+vlc -I dummy -vv --network-caching 500 $source vlc://quit --sout '#duplicate{dst=std{access=http{metacube},mux=ts,dst=:5005/noccam.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5005/noccam.flv}'
+sleep 1
+done
+
diff --git a/examples/tg16/streams/han/south-encode-mp4.sh b/examples/tg16/streams/han/south-encode-mp4.sh
new file mode 100644
index 0000000..0face57
--- /dev/null
+++ b/examples/tg16/streams/han/south-encode-mp4.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+cvlc -I dummy -vvvv rtsp://88.92.61.10/live.sdp vlc://quit \
+--live-caching 5000 --network-caching 5000 --sout-x264-preset medium --sout-x264-tune film --sout-mux-caching 5000 --sout-transcode-threads 6 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof}' --no-avcodec-dr --sout-x264-keyint 50 \
+--sout \
+'#transcode{vcodec=h264,vb=3500,acodec=mp4a,ab=128,channels=2}:duplicate{dst=std{access=http{mime=video/mp4,metacube},mux=ffmpeg{mux=mp4},dst=:5006/southcamlb.mp4},dst=std{access=http{metacube},mux=ts,dst=:5006/southcamlb.ts}}' \
diff --git a/examples/tg16/streams/han/south-encode.sh b/examples/tg16/streams/han/south-encode.sh
new file mode 100644
index 0000000..9138736
--- /dev/null
+++ b/examples/tg16/streams/han/south-encode.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+while :; do
+cvlc -I dummy -vvvv \
+ --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 10 --no-sout-x264-interlaced --sout-mux-caching 5000 --network-caching 3000 \
+ --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 3000 --sout-x264-vbv-bufsize 3000 --ttl 60 \
+ -v rtsp://88.92.61.10/live.sdp vlc://quit \
+ --sout \
+'#transcode{vcodec=h264,vb=4500,acodec=null}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5006/southcamlb.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5006/southcamlb.flv}'
+sleep 1
+done
diff --git a/examples/tg16/streams/han/south-reflect.sh b/examples/tg16/streams/han/south-reflect.sh
new file mode 100644
index 0000000..cfeaeab
--- /dev/null
+++ b/examples/tg16/streams/han/south-reflect.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+# reflecting purposes
+source="rtsp://88.92.61.10/live.sdp"
+
+while :; do
+vlc -I dummy -vv --network-caching 500 $source vlc://quit --sout '#duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/southcam.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/southcam.flv}'
+sleep 1
+done
+
diff --git a/examples/tg16/streams/leia/encode.sh b/examples/tg16/streams/leia/encode.sh
new file mode 100644
index 0000000..239f411
--- /dev/null
+++ b/examples/tg16/streams/leia/encode.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \
+ --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \
+ --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \
+ -v decklink:// vlc://quit \
+ --sout \
+'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/leia.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/leia.flv}'
diff --git a/examples/tg16/streams/luke/encode.sh b/examples/tg16/streams/luke/encode.sh
new file mode 100644
index 0000000..70ea222
--- /dev/null
+++ b/examples/tg16/streams/luke/encode.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-mode Hp50 --decklink-aspect-ratio 16:9 --decklink-video-connection sdi \
+ --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 10000 \
+ --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 25000 --sout-x264-vbv-bufsize 25000 --ttl 60 \
+ -v decklink:// vlc://quit \
+ --sout \
+'#transcode{vcodec=h264,vb=25000,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/luke.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/luke.flv}'
diff --git a/examples/tg16/streams/luke/ffmpeg-deinterlace.sh b/examples/tg16/streams/luke/ffmpeg-deinterlace.sh
new file mode 100644
index 0000000..898cae4
--- /dev/null
+++ b/examples/tg16/streams/luke/ffmpeg-deinterlace.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+ffmpeg -y -f decklink -i 'DeckLink SDI 4K@8' -v verbose \
+-c:v libx264 -tune film -preset medium -x264opts keyint=50:rc-lookahead=70:vbv-maxrate=6500:vbv-bufsize=6500:bitrate=6500 \
+-c:a libfdk_aac -ac 2 -b:a 192k -threads 16 -f mpegts \
+-vf yadif=1 - | cvlc - --sout "#std{access=http{metacube},mux=ts,dst=:5004/luke.ts}" --live-caching 3000 --file-caching 3000
+#"udp://185.110.148.8:1234?pkt_size=1316&buffer_size=10485760&fifo_size=10485760&ttl=60"
diff --git a/examples/tg16/streams/luke/ffmpeg.sh b/examples/tg16/streams/luke/ffmpeg.sh
new file mode 100644
index 0000000..77cc18d
--- /dev/null
+++ b/examples/tg16/streams/luke/ffmpeg.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+ffmpeg -y -f decklink -i 'DeckLink SDI 4K@11' -v verbose \
+-c:v libx264 -tune film -preset medium -x264opts keyint=50:rc-lookahead=70:vbv-maxrate=15000:vbv-bufsize=15000:bitrate=15000 \
+-c:a libfdk_aac -ac 2 -b:a 192k -threads 16 -f mpegts - | cvlc - --sout "#std{access=http{metacube},mux=ts,dst=:5004/luke.ts}" --live-caching 3000 --file-caching 3000
+#"udp://185.110.148.8:1234?pkt_size=1316&buffer_size=10485760&fifo_size=10485760&ttl=60"
diff --git a/examples/tg16/streams/padme/encode-mp4.sh b/examples/tg16/streams/padme/encode-mp4.sh
new file mode 100644
index 0000000..8be1bbd
--- /dev/null
+++ b/examples/tg16/streams/padme/encode-mp4.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+#'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/padme.flv,dst=std{access=http{mime=video/mp4},mux=ffmpeg{mux=mp4},dst=:5004/stream.mp4}}'
+
+cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \
+-v decklink:// vlc://quit --sout \
+'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{mime=video/mp4,metacube},mux=ffmpeg{mux=mp4},dst=:5004/padme.mp4},dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts}}' \
+--sout-x264-preset slow --live-caching 3000 --sout-x264-tune film --sout-mux-caching 8000 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof,frag_interleave=5}' --no-avcodec-dr --sout-x264-keyint 50
+
diff --git a/examples/tg16/streams/padme/encode-webm.sh b/examples/tg16/streams/padme/encode-webm.sh
new file mode 100644
index 0000000..eaac329
--- /dev/null
+++ b/examples/tg16/streams/padme/encode-webm.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp60 --decklink-video-connection sdi \
+-v decklink:// vlc://quit --sout \
+'#transcode{vcodec=VP80,vb=3000,channels=2,samplerate=44100}:std{access=http{mime=video/webm},mux=webm,dst=:8080/stream.webm}' \
+--sout-mux-caching 5000
diff --git a/examples/tg16/streams/padme/encode.sh b/examples/tg16/streams/padme/encode.sh
new file mode 100644
index 0000000..b8f7204
--- /dev/null
+++ b/examples/tg16/streams/padme/encode.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \
+ --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \
+ --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \
+ -v decklink:// vlc://quit \
+ --sout \
+'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/padme.flv}'
+
diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png
new file mode 100644
index 0000000..791beab
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png
new file mode 100644
index 0000000..da7c967
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png
new file mode 100644
index 0000000..39484c9
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png
new file mode 100644
index 0000000..e6c8c16
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png
new file mode 100644
index 0000000..b2ce587
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png
new file mode 100644
index 0000000..8a91859
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png
new file mode 100644
index 0000000..2a86ba5
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png
new file mode 100644
index 0000000..c20128d
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png
new file mode 100644
index 0000000..6566c09
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png
new file mode 100644
index 0000000..204912c
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png
new file mode 100644
index 0000000..6368652
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png
new file mode 100644
index 0000000..41cef7a
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png
Binary files differ
diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png
new file mode 100644
index 0000000..ddd5e35
--- /dev/null
+++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png
Binary files differ