SuexecUserGroup telecaster telecaster
- ErrorLog /var/log/apache2/error.log
+ ErrorLog /var/log/apache2/telecaster_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
- CustomLog /var/log/apache2/access.log combined
+ CustomLog /var/log/apache2/telecaster_access.log combined
ServerSignature On
<Directory /var/www/>
USER=telecaster
# Options to pass to jackd
-OPTIONS="-dalsa -r44100 -p4096 -n3 -D -Chw:1,1 -Phw:1,0"
+OPTIONS="-dalsa -r44100 -p1024 -n3 -Chw:3,1 -Phw:3,0"
--- /dev/null
+# Set to "yes" to start stream-m at boot
+START_DAEMON=yes
+
+# The jackd process will run under this user
+USER=telecaster
+
+# Options to pass to jackd
+OPTIONS="/etc/stream-m/server.conf"
+
--- /dev/null
+<icecast>
+ <limits>
+ <clients>100</clients>
+ <sources>20</sources>
+ <threadpool>16</threadpool>
+ <queue-size>524288</queue-size>
+ <client-timeout>30</client-timeout>
+ <header-timeout>15</header-timeout>
+ <source-timeout>10</source-timeout>
+ <!-- If enabled, this will provide a burst of data when a client
+ first connects, thereby significantly reducing the startup
+ time for listeners that do substantial buffering. However,
+ it also significantly increases latency between the source
+ client and listening client. For low-latency setups, you
+ might want to disable this. -->
+ <burst-on-connect>1</burst-on-connect>
+ <!-- same as burst-on-connect, but this allows for being more
+ specific on how much to burst. Most people won't need to
+ change from the default 64k. Applies to all mountpoints -->
+ <burst-size>65536</burst-size>
+ </limits>
+
+ <authentication>
+ <!-- Sources log in with username 'source' -->
+ <source-password>source2parisson</source-password>
+ <!-- Relays log in username 'relay' -->
+ <relay-password>hackme</relay-password>
+
+ <!-- Admin logs in with the username given below -->
+ <admin-user>admin</admin-user>
+ <admin-password>hackme</admin-password>
+ </authentication>
+
+ <!-- set the mountpoint for a shoutcast source to use, the default if not
+ specified is /stream but you can change it here if an alternative is
+ wanted or an extension is required
+ <shoutcast-mount>/live.nsv</shoutcast-mount>
+ -->
+
+ <!-- Uncomment this if you want directory listings -->
+ <!--
+ <directory>
+ <yp-url-timeout>15</yp-url-timeout>
+ <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
+ </directory>
+ -->
+
+ <!-- This is the hostname other people will use to connect to your server.
+ It affects mainly the urls generated by Icecast for playlists and yp
+ listings. -->
+ <hostname>127.0.0.1</hostname>
+
+ <!-- You may have multiple <listener> elements -->
+ <listen-socket>
+ <port>8000</port>
+ <!-- <bind-address>127.0.0.1</bind-address> -->
+ <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
+ </listen-socket>
+ <!--
+ <listen-socket>
+ <port>8001</port>
+ </listen-socket>
+ -->
+
+ <!--<master-server>127.0.0.1</master-server>-->
+ <!--<master-server-port>8001</master-server-port>-->
+ <!--<master-update-interval>120</master-update-interval>-->
+ <!--<master-password>hackme</master-password>-->
+
+ <!-- setting this makes all relays on-demand unless overridden, this is
+ useful for master relays which do not have <relay> definitions here.
+ The default is 0 -->
+ <!--<relays-on-demand>1</relays-on-demand>-->
+
+ <!--
+ <relay>
+ <server>127.0.0.1</server>
+ <port>8001</port>
+ <mount>/example.ogg</mount>
+ <local-mount>/different.ogg</local-mount>
+ <on-demand>0</on-demand>
+
+ <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
+ </relay>
+ -->
+
+ <!-- Only define a <mount> section if you want to use advanced options,
+ like alternative usernames or passwords
+ <mount>
+ <mount-name>/example-complex.ogg</mount-name>
+
+ <username>othersource</username>
+ <password>hackmemore</password>
+
+ <max-listeners>1</max-listeners>
+ <dump-file>/tmp/dump-example1.ogg</dump-file>
+ <burst-size>65536</burst-size>
+ <fallback-mount>/example2.ogg</fallback-mount>
+ <fallback-override>1</fallback-override>
+ <fallback-when-full>1</fallback-when-full>
+ <intro>/example_intro.ogg</intro>
+ <hidden>1</hidden>
+ <no-yp>1</no-yp>
+ <authentication type="htpasswd">
+ <option name="filename" value="myauth"/>
+ <option name="allow_duplicate_users" value="0"/>
+ </authentication>
+ <on-connect>/home/icecast/bin/stream-start</on-connect>
+ <on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
+ </mount>
+
+ <mount>
+ <mount-name>/auth_example.ogg</mount-name>
+ <authentication type="url">
+ <option name="mount_add" value="http://myauthserver.net/notify_mount.php"/>
+ <option name="mount_remove" value="http://myauthserver.net/notify_mount.php"/>
+ <option name="listener_add" value="http://myauthserver.net/notify_listener.php"/>
+ <option name="listener_remove" value="http://myauthserver.net/notify_listener.php"/>
+ </authentication>
+ </mount>
+
+ -->
+
+ <fileserve>1</fileserve>
+
+ <paths>
+ <!-- basedir is only used if chroot is enabled -->
+ <basedir>/usr/share/icecast2</basedir>
+
+ <!-- Note that if <chroot> is turned on below, these paths must both
+ be relative to the new root, not the original root -->
+ <logdir>/var/log/icecast2</logdir>
+ <webroot>/usr/share/icecast2/web</webroot>
+ <adminroot>/usr/share/icecast2/admin</adminroot>
+ <!-- <pidfile>/usr/share/icecast2/icecast.pid</pidfile> -->
+
+ <!-- Aliases: treat requests for 'source' path as being for 'dest' path
+ May be made specific to a port or bound address using the "port"
+ and "bind-address" attributes.
+ -->
+ <!--
+ <alias source="/foo" dest="/bar"/>
+ -->
+ <!-- Aliases: can also be used for simple redirections as well,
+ this example will redirect all requests for http://server:port/ to
+ the status page
+ -->
+ <alias source="/" dest="/status.xsl"/>
+ </paths>
+
+ <logging>
+ <accesslog>access.log</accesslog>
+ <errorlog>error.log</errorlog>
+ <!-- <playlistlog>playlist.log</playlistlog> -->
+ <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
+ <logsize>10000</logsize> <!-- Max size of a logfile -->
+ <!-- If logarchive is enabled (1), then when logsize is reached
+ the logfile will be moved to [error|access|playlist].log.DATESTAMP,
+ otherwise it will be moved to [error|access|playlist].log.old.
+ Default is non-archive mode (i.e. overwrite)
+ -->
+ <!-- <logarchive>1</logarchive> -->
+ </logging>
+
+ <security>
+ <chroot>0</chroot>
+ <!--
+ <changeowner>
+ <user>nobody</user>
+ <group>nogroup</group>
+ </changeowner>
+ -->
+ </security>
+</icecast>
DAEMON=/usr/bin/jackd
-USER=
+USER=""
OPTIONS=""
LOG=/var/log/jackd.log
PIDFILE=/var/run/jackd.pid
--- /dev/null
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: stream-m
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: init-Script for system wide fetchmail daemon
+### END INIT INFO
+
+DAEMON=/usr/local/bin/stream-m
+USER=""
+CONF="/etc/stream-m/server.conf"
+LOG=/var/log/stream-m.log
+PIDFILE=/var/run/stream-m.pid
+
+test -f /etc/default/stream-m || exit 0
+. /etc/default/stream-m
+
+STREAMMHOME=/home/$USER
+
+if [ ! "x$START_DAEMON" = "xyes" -a ! "$1" = "stop" ]; then
+ echo "Edit /etc/default/stream-m to start stream-m"
+ exit 0
+fi
+
+test -f $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start)
+ log_begin_msg "Starting stream-m video server:" "stream-m"
+ echo $DAEMON $CONF ' &' > $STREAMMHOME/.stream-m-init
+ chmod +x $STREAMMHOME/.stream-m-init
+ su -c $STREAMMHOME/.stream-m-init $USER > ${LOG}
+ sleep 2
+ pid=`pgrep -u ${USER} stream-m`
+ if [ pid = '' ]; then
+ log_failure_msg "Stream-m daemon can't be started! Check logfile: ${LOG}"
+ else
+ echo $pid > $PIDFILE
+ fi
+
+ ;;
+ stop)
+ log_begin_msg "Stopping stream-m video server:" "stream-m"
+ pid=`cat $PIDFILE | sed -e 's/\s.*//'|head -n1`
+ if [ ! pid = '' ]; then
+ kill -9 $pid
+ pkill -9 -f 'stream-m'
+ log_end_msg 0
+ else
+ log_end_msg 1
+ exit 1
+ fi
+ rm $PIDFILE
+ ;;
+ try-restart)
+ if test -e $PIDFILE ; then
+ pid=`cat $PIDFILE | sed -e 's/\s.*//'|head -n1`
+ PIDDIR=/proc/$pid
+ if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
+ $0 restart
+ exit 0
+ fi
+ fi
+ test -f /etc/rc`/sbin/runlevel | cut -d' ' -f2`.d/S*stream-m* && $0 start
+ ;;
+
+ *)
+ log_warning_msg "Usage: /etc/init.d/stream-m {start|stop|restart|force-reload|awaken|debug-run}"
+ log_warning_msg " start - starts system-wide stream-m service"
+ log_warning_msg " stop - stops system-wide stream-m service"
+ log_warning_msg " restart, force-reload - starts a new system-wide stream-m service"
+ log_warning_msg " awaken - tell system-wide stream-m to start a poll cycle immediately"
+ log_warning_msg " debug-run [strace [strace options...]] - start a debug run of the"
+ log_warning_msg " system-wide stream-m service, optionally running it under strace"
+ exit 1
+ ;;
+esac
+
+exit 0
log_begin_msg "Stopping vncserver audio server:" "vncserver"
pid=`cat $PIDFILE | sed -e 's/\s.*//'|head -n1`
if [ ! pid = '' ]; then
- su -c "pkill -9 -f \"deefuzzer /etc/telecaster/deefuzzer_safe.xml\" "
- su -c "pkill -9 edcast_jack" $USER
+ su -c "pkill -9 -f \"deefuzzer /etc/telecaster/deefuzzer_audio_safe.xml\" "
+ su -c "pkill -9 -f \"deefuzzer /etc/telecaster/deefuzzer_video_safe.xml\" "
+ su -c "pkill -9 edcast_jack" $USER
+ su -c "pkill -9 gst-launch-0.10" $USER
sleep 1
su -c "vncserver -kill :$PORT" $USER
log_end_msg 0
--- /dev/null
+#! /bin/sh
+
+# This script puts the TeleCaster services to
+# suspend before going to sleep. Otherwise it may be in a weird state
+# after wakeup, namely everything looks fine from various AT commands,
+# the modem is registered to the cell network and reports a suitable
+# signal strength, but attempting to dial out by atdt*99# or, it seems,
+# any other number and the modem just responds instantly with NO CARRIER.
+
+
+#if [ ! -x /sys/bus/usb/devices/${BUS}-${DEVICE}/power/level ]; then
+# exit 0
+#fi
+
+case $1 in
+ suspend|suspend_hybrid|hibernate)
+ /etc/init.d/vncserver stop
+ sleep 1
+ /etc/init.d/jackd stop
+ ;;
+ resume|thaw)
+ /etc/init.d/jackd start
+ /etc/init.d/vncserver start
+ ;;
+esac
--- /dev/null
+#\r
+# Sample configuration file\r
+# Empty lines and lines starting with # and ; are ignored.\r
+# Format: <key> = <value>\r
+# Syntactic elements (words) can be separated by linear whitepace.\r
+#\r
+\r
+# server.port\r
+# listening port\r
+server.port = 8080\r
+\r
+# stream.<streamname>\r
+# if defined then a stream can be started with this name\r
+streams.safe = true\r
+\r
+# stream.<streamname>.password\r
+# determines the password to accept the stream\r
+streams.safe.password = source2parisson\r
+\r
+# stream.<streamname>.limit\r
+# maximum number of clients for this stream\r
+streams.safe.limit = 10\r
<deefuzzer>
- <log>/var/log/deefuzzer/telecaster.log</log>
- <m3u>/var/www/m3u/telecaster.m3u</m3u>
+ <log>/var/log/deefuzzer/telecaster_safe.log</log>
+ <m3u>/var/www/m3u/telecaster_safe.m3u</m3u>
<station>
<infos>
- <short_name>telecaster_local</short_name>
- <name>TeleCaster Localhost</name>
- <description>TeleCaster local audio streaming</description>
+ <short_name>telecaster_live_safe</short_name>
+ <name>TeleCaster Localhost Live Safe Recorder</name>
+ <description>TeleCaster safe local live audio record</description>
<url>http://parisson.com</url>
<genre>Vocal</genre>
</infos>
<server>
+ <type>icecast</type>
<host>127.0.0.1</host>
<port>8000</port>
<sourcepassword>source2parisson</sourcepassword>
<public>0</public>
</server>
<media>
- <dir>/path/to/ogg</dir>
- <format>ogg</format>
- <bitrate>64</bitrate>
- <ogg_quality>4</ogg_quality>
+ <dir>/home/telecaster/media/mp3</dir>
+ <format>mp3</format>
+ <bitrate>96</bitrate>
+ <ogg_quality>7</ogg_quality>
<samplerate>44100</samplerate>
- <voices>1</voices>
- <shuffle>0</shuffle>
+ <voices>2</voices>
+ <shuffle>1</shuffle>
</media>
<rss>
<dir>/var/www/rss</dir>
</control>
<relay>
<mode>1</mode>
- <url>http://127.0.0.1:8000/telecaster_live.ogg</url>
+ <url>http://127.0.0.1:8000/telecaster_live.mp3</url>
<author>Parisson</author>
</relay>
<record>
<mode>1</mode>
- <dir>/path/to/archives</dir>
+ <dir>/home/telecaster/trash</dir>
</record>
</station>
-
<station>
<infos>
- <short_name>telecaster</short_name>
- <name>TeleCaster Remote</name>
- <description>TeleCaster Remote</description>
+ <short_name>telecaster_live_safe</short_name>
+ <name>TeleCaster Localhost Live Safe Recorder</name>
+ <description>TeleCaster safe local live audio record</description>
<url>http://parisson.com</url>
- <genre>School</genre>
+ <genre>Vocal</genre>
</infos>
<server>
- <host>stream.parisson.com</host>
+ <type>icecast</type>
+ <host>parisson.com</host>
<port>8000</port>
<sourcepassword>source2parisson</sourcepassword>
<public>0</public>
</server>
<media>
- <dir>/path/to/ogg</dir>
- <format>ogg</format>
+ <dir>/home/telecaster/media/mp3</dir>
+ <format>mp3</format>
<bitrate>96</bitrate>
- <ogg_quality>4</ogg_quality>
+ <ogg_quality>7</ogg_quality>
<samplerate>44100</samplerate>
- <voices>1</voices>
- <shuffle>0</shuffle>
+ <voices>2</voices>
+ <shuffle>1</shuffle>
</media>
<rss>
<dir>/var/www/rss</dir>
<shuffle>1</shuffle>
</jingles>
<control>
- <mode>0</mode>
+ <mode>1</mode>
<port>1235</port>
</control>
<relay>
<mode>1</mode>
- <url>http://127.0.0.1:8000/telecaster_live.ogg</url>
+ <url>http://127.0.0.1:8000/telecaster_live.mp3</url>
<author>Parisson</author>
</relay>
<record>
<mode>0</mode>
- <dir>/path/to/archives</dir>
+ <dir>/home/telecaster/trash</dir>
</record>
</station>
+
</deefuzzer>
--- /dev/null
+<deefuzzer>
+ <log>/var/log/deefuzzer/telecaster_audio_safe.log</log>
+ <m3u>/var/www/m3u/telecaster_audio_safe.m3u</m3u>
+
+ <station>
+ <control>
+ <mode>0</mode>
+ <port>1236</port>
+ </control>
+ <relay>
+ <url>http://127.0.0.1:8000/telecaster_live.mp3</url>
+ <mode>1</mode>
+ <author>Inconnu</author>
+ </relay>
+ <media>
+ <shuffle>0</shuffle>
+ <format>mp3</format>
+ <voices>1</voices>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>48000</samplerate>
+ <bitrate>64</bitrate>
+ <dir>/home/telecaster/media/mp3</dir>
+ </media>
+ <twitter>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <tags>bla bla</tags>
+ </twitter>
+ <server>
+ <type>icecast</type>
+ <host>127.0.0.1</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <record>
+ <mode>1</mode>
+ <dir>/home/telecaster/trash/mp3</dir>
+ </record>
+ <jingles>
+ <shuffle>1</shuffle>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ </jingles>
+ <infos>
+ <url>http://parisson.com.com</url>
+ <genre>Vocal</genre>
+ <name>telecaster_audio_safe</name>
+ <short_name>telecaster_audio_safe</short_name>
+ <description>TeleCaster safe audio stream</description>
+ </infos>
+ <rss>
+ <enclosure>0</enclosure>
+ <dir>/var/www/rss</dir>
+ <media_url>http://my.domain.com/rss/</media_url>
+ </rss>
+ </station>
+
+</deefuzzer>
+
+
</rss>
<twitter>
<mode>0</mode>
- <user>my_twitter_user</user>
- <pass>my_twitter_password</pass>
+ <key>my_twitter_user</key>
+ <secret>my_twitter_password</secret>
<tags>bla bla</tags>
</twitter>
<jingles>
</rss>
<twitter>
<mode>0</mode>
- <user>my_twitter_user</user>
- <pass>my_twitter_password</pass>
+ <key>my_twitter_user</key>
+ <secret>my_twitter_password</secret>
<tags>bla bla</tags>
</twitter>
<jingles>
--- /dev/null
+<deefuzzer>
+ <log>/var/log/deefuzzer/telecaster.log</log>
+ <m3u>/var/www/m3u/telecaster.m3u</m3u>
+
+ <station>
+ <infos>
+ <short_name>telecaster_local</short_name>
+ <name>TeleCaster Localhost</name>
+ <description>TeleCaster local audio streaming</description>
+ <url>http://parisson.com</url>
+ <genre>Vocal</genre>
+ </infos>
+ <server>
+ <host>127.0.0.1</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <media>
+ <dir>/path/to/ogg</dir>
+ <format>ogg</format>
+ <bitrate>64</bitrate>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>44100</samplerate>
+ <voices>1</voices>
+ <shuffle>0</shuffle>
+ </media>
+ <rss>
+ <dir>/var/www/rss</dir>
+ <enclosure>0</enclosure>
+ </rss>
+ <twitter>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <tags>bla bla</tags>
+ </twitter>
+ <jingles>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ <shuffle>1</shuffle>
+ </jingles>
+ <control>
+ <mode>1</mode>
+ <port>1234</port>
+ </control>
+ <relay>
+ <mode>1</mode>
+ <url>http://127.0.0.1:8000/telecaster_live.ogg</url>
+ <author>Parisson</author>
+ </relay>
+ <record>
+ <mode>1</mode>
+ <dir>/path/to/archives</dir>
+ </record>
+ </station>
+
+
+ <station>
+ <infos>
+ <short_name>telecaster</short_name>
+ <name>TeleCaster Remote</name>
+ <description>TeleCaster Remote</description>
+ <url>http://parisson.com</url>
+ <genre>School</genre>
+ </infos>
+ <server>
+ <host>stream.parisson.com</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <media>
+ <dir>/path/to/ogg</dir>
+ <format>ogg</format>
+ <bitrate>96</bitrate>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>44100</samplerate>
+ <voices>1</voices>
+ <shuffle>0</shuffle>
+ </media>
+ <rss>
+ <dir>/var/www/rss</dir>
+ <enclosure>0</enclosure>
+ </rss>
+ <twitter>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <tags>bla bla</tags>
+ </twitter>
+ <jingles>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ <shuffle>1</shuffle>
+ </jingles>
+ <control>
+ <mode>0</mode>
+ <port>1235</port>
+ </control>
+ <relay>
+ <mode>1</mode>
+ <url>http://127.0.0.1:8000/telecaster_live.ogg</url>
+ <author>Parisson</author>
+ </relay>
+ <record>
+ <mode>0</mode>
+ <dir>/path/to/archives</dir>
+ </record>
+ </station>
+
+
+ <station>
+ <infos>
+ <short_name>telecaster</short_name>
+ <name>TeleCaster Remote</name>
+ <description>TeleCaster Remote</description>
+ <url>http://parisson.com</url>
+ <genre>School</genre>
+ </infos>
+ <server>
+ <host>stream.parisson.com</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <media>
+ <dir>/path/to/ogg</dir>
+ <format>ogg</format>
+ <bitrate>96</bitrate>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>44100</samplerate>
+ <voices>1</voices>
+ <shuffle>0</shuffle>
+ </media>
+ <rss>
+ <dir>/var/www/rss</dir>
+ <enclosure>0</enclosure>
+ </rss>
+ <twitter>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <tags>bla bla</tags>
+ </twitter>
+ <jingles>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ <shuffle>1</shuffle>
+ </jingles>
+ <control>
+ <mode>0</mode>
+ <port>1235</port>
+ </control>
+ <relay>
+ <mode>1</mode>
+ <url>http://127.0.0.1:8000/telecaster_live.ogg</url>
+ <author>Parisson</author>
+ </relay>
+ <record>
+ <mode>0</mode>
+ <dir>/path/to/archives</dir>
+ </record>
+ </station>
+
+ <station>
+ <infos>
+ <short_name>telecaster_video</short_name>
+ <name>TeleCaster Video Localhost</name>
+ <description>TeleCaster local video streaming</description>
+ <url>http://parisson.com</url>
+ <genre>Vocal</genre>
+ </infos>
+ <server>
+ <host>127.0.0.1</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <media>
+ <dir>/path/to/ogg</dir>
+ <format>ogg</format>
+ <bitrate>64</bitrate>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>44100</samplerate>
+ <voices>1</voices>
+ <shuffle>0</shuffle>
+ </media>
+ <rss>
+ <dir>/var/www/rss</dir>
+ <enclosure>0</enclosure>
+ </rss>
+ <twitter>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <tags>bla bla</tags>
+ </twitter>
+ <jingles>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ <shuffle>1</shuffle>
+ </jingles>
+ <control>
+ <mode>1</mode>
+ <port>1235</port>
+ </control>
+ <relay>
+ <mode>1</mode>
+ <url>http://127.0.0.1:8000/telecaster_live_video.ogg</url>
+ <author>Parisson</author>
+ </relay>
+ <record>
+ <mode>1</mode>
+ <dir>/path/to/archives</dir>
+ </record>
+ </station>
+
+
+ <station>
+ <infos>
+ <short_name>telecaster_video</short_name>
+ <name>TeleCaster Video Remote</name>
+ <description>TeleCaster Video Remote</description>
+ <url>http://parisson.com</url>
+ <genre>School</genre>
+ </infos>
+ <server>
+ <host>stream.parisson.com</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <media>
+ <dir>/path/to/ogg</dir>
+ <format>ogg</format>
+ <bitrate>96</bitrate>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>44100</samplerate>
+ <voices>1</voices>
+ <shuffle>0</shuffle>
+ </media>
+ <rss>
+ <dir>/var/www/rss</dir>
+ <enclosure>0</enclosure>
+ </rss>
+ <twitter>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <tags>bla bla</tags>
+ </twitter>
+ <jingles>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ <shuffle>1</shuffle>
+ </jingles>
+ <control>
+ <mode>0</mode>
+ <port>1235</port>
+ </control>
+ <relay>
+ <mode>1</mode>
+ <url>http://127.0.0.1:8000/telecaster_live_video.ogg</url>
+ <author>Parisson</author>
+ </relay>
+ <record>
+ <mode>0</mode>
+ <dir>/path/to/archives</dir>
+ </record>
+ </station>
+
+
+ <station>
+ <infos>
+ <short_name>telecaster</short_name>
+ <name>TeleCaster Remote</name>
+ <description>TeleCaster Remote</description>
+ <url>http://parisson.com</url>
+ <genre>School</genre>
+ </infos>
+ <server>
+ <host>stream.parisson.com</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <media>
+ <dir>/path/to/ogg</dir>
+ <format>ogg</format>
+ <bitrate>96</bitrate>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>44100</samplerate>
+ <voices>1</voices>
+ <shuffle>0</shuffle>
+ </media>
+ <rss>
+ <dir>/var/www/rss</dir>
+ <enclosure>0</enclosure>
+ </rss>
+ <twitter>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <tags>bla bla</tags>
+ </twitter>
+ <jingles>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ <shuffle>1</shuffle>
+ </jingles>
+ <control>
+ <mode>0</mode>
+ <port>1235</port>
+ </control>
+ <relay>
+ <mode>1</mode>
+ <url>http://127.0.0.1:8000/telecaster_live_video.ogg</url>
+ <author>Parisson</author>
+ </relay>
+ <record>
+ <mode>0</mode>
+ <dir>/path/to/archives</dir>
+ </record>
+ </station>
+
+</deefuzzer>
+
+
--- /dev/null
+<deefuzzer>
+ <log>/var/log/deefuzzer/telecaster.log</log>
+ <m3u>/var/www/m3u/telecaster.m3u</m3u>
+
+ <station>
+ <infos>
+ <short_name>telecaster_video</short_name>
+ <name>TeleCaster Video Localhost</name>
+ <description>TeleCaster local video streaming</description>
+ <url>http://parisson.com</url>
+ <genre>Vocal</genre>
+ </infos>
+ <server>
+ <host>127.0.0.1</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <media>
+ <dir>/home/telecaster/media/ogg</dir>
+ <format>ogg</format>
+ <bitrate>64</bitrate>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>44100</samplerate>
+ <voices>1</voices>
+ <shuffle>0</shuffle>
+ </media>
+ <rss>
+ <dir>/var/www/rss</dir>
+ <enclosure>0</enclosure>
+ </rss>
+ <twitter>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <tags>bla bla</tags>
+ </twitter>
+ <jingles>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ <shuffle>1</shuffle>
+ </jingles>
+ <control>
+ <mode>1</mode>
+ <port>1234</port>
+ </control>
+ <relay>
+ <mode>1</mode>
+ <url>http://127.0.0.1:8000/telecaster_live_video.ogg</url>
+ <author>Parisson</author>
+ </relay>
+ <record>
+ <mode>1</mode>
+ <dir>/path/to/archives</dir>
+ </record>
+ </station>
+
+ <station>
+ <infos>
+ <short_name>telecaster_video</short_name>
+ <name>TeleCaster Video Localhost</name>
+ <description>TeleCaster local video streaming</description>
+ <url>http://parisson.com</url>
+ <genre>Vocal</genre>
+ </infos>
+ <server>
+ <host>stream.parisson.com</host>
+ <port>8000</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <media>
+ <dir>/home/telecaster/media/ogg</dir>
+ <format>ogg</format>
+ <bitrate>64</bitrate>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>44100</samplerate>
+ <voices>1</voices>
+ <shuffle>0</shuffle>
+ </media>
+ <rss>
+ <dir>/var/www/rss</dir>
+ <enclosure>0</enclosure>
+ </rss>
+ <twitter>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <tags>bla bla</tags>
+ </twitter>
+ <jingles>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ <shuffle>1</shuffle>
+ </jingles>
+ <control>
+ <mode>0</mode>
+ <port>1234</port>
+ </control>
+ <relay>
+ <mode>1</mode>
+ <url>http://127.0.0.1:8000/telecaster_live_video.ogg</url>
+ <author>Parisson</author>
+ </relay>
+ <record>
+ <mode>0</mode>
+ <dir>/path/to/archives</dir>
+ </record>
+ </station>
+
+</deefuzzer>
+
+
--- /dev/null
+<deefuzzer>
+ <log>/var/log/deefuzzer/telecaster_video_safe.log</log>
+ <m3u>/var/www/m3u/telecaster_video_safe.m3u</m3u>
+
+ <station>
+ <control>
+ <mode>0</mode>
+ <port>1235</port>
+ </control>
+ <relay>
+ <url>http://127.0.0.1:9000/</url>
+ <mode>1</mode>
+ <author>TeleCaster</author>
+ </relay>
+ <media>
+ <shuffle>0</shuffle>
+ <format>webm</format>
+ <voices>1</voices>
+ <ogg_quality>4</ogg_quality>
+ <samplerate>48000</samplerate>
+ <bitrate>64</bitrate>
+ <dir>/home/telecaster/media/webm</dir>
+ </media>
+ <twitter>
+ <secret>4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4</secret>
+ <mode>0</mode>
+ <key>76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE</key>
+ <tags>bla bla</tags>
+ </twitter>
+ <server>
+ <type>stream-m</type>
+ <host>127.0.0.1</host>
+ <port>8080</port>
+ <sourcepassword>source2parisson</sourcepassword>
+ <public>0</public>
+ </server>
+ <record>
+ <mode>1</mode>
+ <dir>/home/telecaster/trash/webm</dir>
+ </record>
+ <jingles>
+ <shuffle>1</shuffle>
+ <mode>0</mode>
+ <dir>/path/to/jingles</dir>
+ </jingles>
+ <infos>
+ <url>http://parisson.com.com</url>
+ <genre>Vocal</genre>
+ <name>safe</name>
+ <short_name>safe</short_name>
+ <description>TeleCaster safe video stream</description>
+ </infos>
+ <rss>
+ <enclosure>0</enclosure>
+ <dir>/var/www/rss</dir>
+ <media_url>http://my.domain.com/rss/</media_url>
+ </rss>
+ </station>
+
+</deefuzzer>
+
+
Server=localhost
Port=8000
ServerPassword=source2parisson
-ServerMountpoint=/telecaster_live.ogg
+ServerMountpoint=/telecaster_live.mp3
# YP (Stream Directory) Settings
ServerPublic=0
ServerIRC=
AutomaticReconnectSecs=10
AutoConnect=1
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)
-Encode=OggVorbis
+Encode=MP3
# General settings (non-codec related). Note : NumberChannels = 1 for MONO, 2 for STEREO
NumberChannels=1
-Samplerate=44100
+Samplerate=48000
BitrateNominal=64
BitrateMin=32
BitrateMax=96
SaveAsWAV=0
#
# Ogg Vorbis specific settings. Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)
-OggQuality=4
+OggQuality=3
OggBitrateQualityFlag=Quality
# LAME specific settings. Note: Setting the low/highpass freq to 0 will disable them.
LameCBRFlag=0
</deefuzzer>
<media>
<record>true</record>
- <play_dir>/home/telecaster/media/ogg</play_dir>
+ <play_dir>/home/telecaster/media/mp3</play_dir>
<rec_dir>/home/telecaster/archives</rec_dir>
- <format>ogg</format>
+ <format>mp3</format>
<bitrate>64</bitrate>
<channels>1</channels>
<ogg_quality>4</ogg_quality>
- <samplerate>44100</samplerate>
+ <samplerate>48000</samplerate>
</media>
<jack>
<input>
<short_name>Pre-Barreau</short_name>
<name>Pre-Barreau</name>
<description>La preparation au Barreau de Paris</description>
- <url>telecaster-04.parisson.com</url>
+ <url>augustins.pre-barreau.com</url>
<genre>Vocal</genre>
</infos>
- <log>/tmp/telecaster.log</log>
+ <log>/var/log/telecaster/telecaster.log</log>
<deefuzzer>
<conf>/etc/telecaster/deefuzzer.xml</conf>
</deefuzzer>
<media>
<record>true</record>
- <play_dir>/home/prebarreau/media</play_dir>
- <rec_dir>/home/prebarreau/archives</rec_dir>
+ <play_dir>/home/pre-barreau/media/mp3</play_dir>
+ <rec_dir>/home/pre-barreau/archives</rec_dir>
<format>mp3</format>
<bitrate>96</bitrate>
<channels>1</channels>
<ogg_quality>3</ogg_quality>
- <samplerate>44100</samplerate>
+ <samplerate>48000</samplerate>
</media>
<jack>
<input>
</input>
</jack>
-<department>
+ <department>
<name>CRFPA</name>
<conferences>
<conference>
<conference>
<name>Oral-Procedures_communautaires</name>
</conference>
- <conference>
+ <conference>
<name>Oral-Voies_d_ex</name>
</conference>
<conference>
<conference>
<name>Oral-Finances_publiques</name>
</conference>
+ <conference>
+ <name>Conference-actualisation-septembre</name>
+ </conference>
<conference>
<name>TEST</name>
</conference>
<comment><text>13e_sem</text></comment>
<comment><text>14e_sem</text></comment>
<comment><text>15e_sem</text></comment>
- <comment><text>16e_sem</text></comment>
+ <comment><text>16e_sem</text></comment>
+
</telecaster>
#!/bin/sh
-pid=`pgrep jack-rack`
-
-if [ ! $pid = "" ]; then
- sleep 1
-else
- jack-rack -n /etc/telecaster/eq_comp_limit_02.rack > /dev/null &
- sleep 10
- jack_connect system:capture_1 jack_rack:in_1
- jack_connect system:capture_2 jack_rack:in_2
-fi
-
-qjackctl &
-
-edcast_jack -c /etc/telecaster/edcast_jack_local.cfg -n LIVE -p jack_rack > /dev/null &
-sleep 3
-
-# MONO setup
-jack_disconnect jack_rack:out_2 LIVE:in_2
-jack_connect jack_rack:out_1 LIVE:in_1
-jack_connect jack_rack:out_1 LIVE:in_2
-jack_connect jack_rack:out_1 system:playback_1
-jack_connect jack_rack:out_1 system:playback_2
-
-
-# STEREO setup
-#jack_connect jack_rack:out_1 LIVE:in_1
-#jack_connect jack_rack:out_2 LIVE:in_2
-#jack_connect jack_rack:out_1 system:playback_1
-#jack_connect jack_rack:out_2 system:playback_2
-
-# Start safe DeeFuzzer
-deefuzzer /etc/telecaster/deefuzzer_safe.xml > /dev/null &
+sh ~/.fluxbox/tc_audio_start.sh &
+sh ~/.fluxbox/tc_video_start.sh &
-session.screen0.iconbar.mode: {static groups} (workspace)
-session.screen0.tab.placement: Top
-session.screen0.tab.width: 64
-session.screen0.tab.height: 16
-session.screen0.tabs.usePixmap: false
-session.screen0.toolbar.onTop: False
-session.screen0.toolbar.autoHide: False
-session.screen0.toolbar.placement: BottomCenter
-session.screen0.toolbar.widthPercent: 66
-session.screen0.slit.placement: RightBottom
-session.screen0.slit.direction: Vertical
-session.screen0.slit.onTop: False
-session.screen0.slit.autoHide: False
-session.screen0.edgeSnapThreshold: 0
-session.screen0.strftimeFormat: %k:%M
-session.screen0.colPlacementDirection: TopToBottom
-session.screen0.showwindowposition: true
-session.screen0.rowPlacementDirection: LeftToRight
-session.screen0.focusNewWindows: True
-session.screen0.windowPlacement: RowSmartPlacement
-session.screen0.rootCommand: sh ~/.fluxbox/autostart.sh
-session.screen0.workspaces: 4
-session.screen0.focusModel: ClickToFocus
-session.screen0.focusLastWindow: True
-session.screen0.workspaceNames: one,two,three,four
-session.screen0.fullMaximization: False
-session.colorsPerChannel: 4
session.menuFile: ~/.fluxbox/menu
-session.configVersion: 10
-session.doubleClickInterval: 250
-session.cacheLife: 5
-session.cacheMax: 200
-session.opaqueMove: False
-session.styleFile: /usr/share/fluxbox/styles/BlueNight
session.keyFile: ~/.fluxbox/keys
-session.autoRaiseDelay: 250
-session.imageDither: True
+session.configVersion: 13
sleep 1
{
-pid=`pgrep jack-rack`
-if [ ! $pid = "" ]; then
- sleep 1
-else
- jack-rack -n /etc/telecaster/eq_comp_limit_02.rack > /dev/null &
- sleep 10
- jack_connect system:capture_1 jack_rack:in_1
- jack_connect system:capture_2 jack_rack:in_2
-fi
-
-qjackctl &
-
-edcast_jack -c /etc/telecaster/edcast_jack_local.cfg -n LIVE -p jack_rack > /dev/null &
-sleep 3
-
-# MONO setup
-jack_disconnect jack_rack:out_2 LIVE:in_2
-jack_connect jack_rack:out_1 LIVE:in_1
-jack_connect jack_rack:out_1 LIVE:in_2
-
-# STEREO setup
-#jack_connect jack_rack:out_1 LIVE:in_1
-#jack_connect jack_rack:out_2 LIVE:in_2
-
-# Start safe DeeFuzzer
-deefuzzer /etc/telecaster/deefuzzer_safe.xml > /dev/null &
+sh ~/.fluxbox/autostart.sh
} &
--- /dev/null
+#!/bin/sh
+
+pid=`pgrep jack-rack`
+
+# Audio channel
+
+if [ ! $pid = "" ]; then
+ sleep 1
+else
+ jack-rack -n /etc/telecaster/eq_comp_limit_02.rack > /dev/null &
+ sleep 6
+ jack_connect system:capture_1 jack_rack:in_1
+ jack_connect system:capture_2 jack_rack:in_2
+fi
+
+qjackctl &
+
+edcast_jack -c /etc/telecaster/edcast_jack_local.cfg -n LIVE -p jack_rack > /dev/null &
+
+sleep 3
+
+# MONO setup
+jack_disconnect jack_rack:out_2 LIVE:in_2
+jack_connect jack_rack:out_1 LIVE:in_1
+jack_connect jack_rack:out_1 LIVE:in_2
+#jack_connect jack_rack:out_1 system:playback_1
+#jack_connect jack_rack:out_1 system:playback_2
+
+# STEREO setup
+#jack_connect jack_rack:out_1 LIVE:in_1
+#jack_connect jack_rack:out_2 LIVE:in_2
+#jack_connect jack_rack:out_1 system:playback_1
+#jack_connect jack_rack:out_2 system:playback_2
+
+# Start safe DeeFuzzer
+deefuzzer /etc/telecaster/deefuzzer_audio_safe.xml > /dev/null &
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+/home/telecaster/.fluxbox/telecaster/tc_video_simple_webm_stream.sh > /dev/null &
+
+sleep 3
+
+jack_disconnect system:capture_1 gst-launch-0.10:in_jackaudiosrc0_1
+jack_connect jack_rack:out_1 gst-launch-0.10:in_jackaudiosrc0_1
+
+deefuzzer /etc/telecaster/deefuzzer_video_safe.xml > /dev/null &
--- /dev/null
+#!/bin/bash
+
+set -e
+
+case "$1" in
+ start)
+ fifo=/tmp/video_fifo
+ if [ ! -e $fifo ]; then
+ mkfifo $fifo
+ fi
+
+ dir=/mnt/data1/video_tests
+ now=`date -R`
+
+ dvgrab -buffers 1 - | ffmpeg -f dv -i - -f jack -i ffmpeg -vcodec libtheora -s 480x320 -aspect 16:9 -acodec libvorbis -b 300k -f ogg -y $fifo -map 0.0 -map 1.0 &
+
+ sleep 5
+ jack_connect jack_rack:out_1 ffmpeg:input_1
+ jack_connect jack_rack:out_2 ffmpeg:input_2
+ #jack_connect jack_rack:out_1 ffmpeg:input_1
+ #jack_connect jack_rack:out_2 ffmpeg:input_2
+
+ sleep 1
+ cat $fifo | tee "$dir/Pre-Barreau_-_Augustins_-_Video_Live_-_$now.ogg" | oggfwd -d "pb_video_live" -g "Teaching" -n "pb_video_live" localhost 8000 source2parisson /pb_video_live.ogg &
+ ;;
+
+ stop)
+ jack_disconnect jack_rack:out_1 ffmpeg:input_1
+ jack_disconnect jack_rack:out_2 ffmpeg:input_2
+ pkill ffmpeg
+ ;;
+esac
+
+
+
+
+
--- /dev/null
+#!/bin/bash
+
+ set -e
+
+case "$1" in
+ start)
+ fifo=/tmp/video_fifo2
+ if [ ! -e $fifo ]; then
+ mkfifo $fifo
+ fi
+
+ dir=$HOME/archives/2011
+ now=`date -R`
+ file=$dir/video_test2.ogg
+
+ ffmpeg -f video4linux2 -i /dev/video0 -f jack -i ffmpeg -itsoffset 00:00:00.8 -r 20 -f ogg -vcodec libtheora -s 320x240 -b 380k -acodec libvorbis -ab 64k -ar 44100 -ac 1 -y $file -map 0.0 -map 1.0 &
+
+ sleep 3
+ jack_connect jack_rack:out_1 ffmpeg:input_1
+ #jack_connect jack_rack:out_1 ffmpeg:input_2
+
+ sleep 2
+ cat $file | tee $file.ogg | oggfwd -d "TeleCaster Live Video Services" -g "Vocal" -n "TeleCaster Live Video" localhost 8000 source2parisson /telecaster_live_video.ogg &
+ ;;
+
+ stop)
+ jack_disconnect jack_rack:out_1 ffmpeg:input_1
+# jack_disconnect jack_rack:out_1 ffmpeg:input_2
+ pkill -9 ffmpeg
+ ;;
+esac
+
+
+
+
+
+# http://www.kkoncepts.net/node/69
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+gst-launch-0.10 dv1394src ! queue ! dvdemux name=d ! queue ! dvdec \
+ ! queue ! videoscale ! video/x-raw-yuv, width=480, height=368 \
+ ! queue ! ffmpegcolorspace ! theoraenc bitrate=500 ! muxout. \
+ oggmux name=muxout \
+ ! queue ! shout2send mount=/telecaster_live_video.ogg port=8000 password=source2parisson ip=127.0.0.1 \
--- /dev/null
+#!/bin/bash
+
+gst-launch v4l2src device=/dev/video0 ! videoscale ! video/x-raw-yuv, width=160, height=120 ! videomixer name=mix sink_1::xpos=20 sink_1::ypos=20 sink_1::alpha=0.9 ! queue ! ffmpegcolorspace ! theoraenc quality=40 ! muxout. jackaudiosrc connect=1 ! audioconvert ! audio/x-raw-int,rate=44100,channels=1,width=16 ! queue ! audioconvert ! vorbisenc ! queue ! muxout. oggmux name=muxout ! tee name=t ! queue ! filesink location="video_test.ogg" t. ! queue ! shout2send mount=/telecaster_live_video.ogg port=8000 password=source2parisson ip=127.0.0.1 v4l2src device=/dev/video1 ! videoscale ! video/x-raw-yuv, width=480, height=270 ! mix.
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=480
+HEIGHT=270
+
+gst-launch v4l2src device=/dev/video0 ! queue ! videoscale ! video/x-raw-yuv, width=160, height=120 \
+ ! queue ! videorate ! video/x-raw-yuv,framerate=25/1 \
+ ! queue ! videomixer name=mix sink_1::xpos=0 sink_1::ypos=0 sink_1::alpha=0.9 \
+ ! queue ! ffmpegcolorspace ! queue ! theoraenc quality=25 ! muxout. \
+ jackaudiosrc connect=1 ! audioconvert ! audio/x-raw-int,rate=44100,channels=1,width=16 \
+ ! queue ! audioconvert ! vorbisenc ! queue ! muxout. \
+ oggmux name=muxout ! queue ! shout2send mount=/telecaster_live_video.ogg port=8000 password=source2parisson ip=127.0.0.1 \
+ v4l2src device=/dev/video1 ! queue ! videoscale ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! videorate ! video/x-raw-yuv,framerate=25/1 ! mix. \
+ > /dev/null &
+
+sleep 2
+
+jack_disconnect system:capture_1 gst-launch-0.10:in_jackaudiosrc0_1
+jack_connect jack_rack:out_1 gst-launch-0.10:in_jackaudiosrc0_1
+
--- /dev/null
+#!/bin/bash
+
+set -e
+
+case "$1" in
+ start)
+ dir=/home/$USER/trash
+ dat=`date '+%y-%m-%d-%H:%M:%S'`
+ file=$dir/video_test_$dat.ogg
+
+ gst-launch-0.10 v4l2src device=/dev/video0 ! queue ! videorate ! video/x-raw-yuv,width=320 ! queue ! theoraenc quality=60 ! queue ! muxout. jackaudiosrc connect=1 ! audioconvert ! audio/x-raw-int,rate=44100,channels=1,width=16 ! queue ! audioconvert ! vorbisenc ! queue ! muxout. oggmux name=muxout ! filesink location=$file sync=true &
+
+# gst-launch v4l2src ! queue ! videorate ! video/x-raw-yuv,fps=30,width=320 ! queue ! theoraenc quality=60 ! queue ! muxout. jackaudiosrc connect=1 ! audioconvert ! audio/x-raw-int,rate=44100,channels=1,width=16 ! queue ! audioconvert ! vorbisenc ! queue ! muxout. oggmux name=muxout ! shout2send mount=/telecaster_live_video.ogg port=8000 password=source2parisson ip=127.0.0.1 &
+
+#
+ sleep 10
+ cat $file | oggfwd -d "TeleCaster Live Video Services" -g "Vocal" -n "TeleCaster Live Video" localhost 8000 source2parisson /telecaster_live_video.ogg &
+ ;;
+
+ stop)
+ pkill -9 oggfwd
+ pkill -9 gst-launch-0.10
+ ;;
+esac
--- /dev/null
+#!/bin/bash
+
+set -e
+
+case "$1" in
+ start)
+ dir=/home/$USER/trash
+ dat=`date '+%y-%m-%d-%H:%M:%S'`
+ file=$dir/video_test_$dat.ogg
+
+# gst-launch-0.10 v4l2src device=/dev/video0 ! queue ! videorate ! video/x-raw-yuv,width=320 ! queue ! theoraenc quality=60 ! queue ! muxout. jackaudiosrc connect=1 ! audioconvert ! audio/x-raw-int,rate=44100,channels=1,width=16 ! queue ! audioconvert ! vorbisenc ! queue ! muxout. oggmux name=muxout ! filesink location=$file sync=true &
+
+ gst-launch-0.10 v4l2src ! queue ! videorate ! video/x-raw-yuv,fps=30,width=320 ! queue ! theoraenc quality=60 ! queue ! muxout. jackaudiosrc connect=1 ! audioconvert ! audio/x-raw-int,rate=44100,channels=1,width=16 ! queue ! audioconvert ! vorbisenc ! queue ! muxout. oggmux name=muxout ! shout2send mount=/telecaster_live_video.ogg port=8000 password=source2parisson ip=127.0.0.1 &
+
+#
+# sleep 10
+# cat $file | oggfwd -d "TeleCaster Live Video Services" -g "Vocal" -n "TeleCaster Live Video" localhost 8000 source2parisson /telecaster_live_video.ogg &
+ ;;
+
+ stop)
+ pkill -9 oggfwd
+ pkill -9 gst-launch-0.10
+ ;;
+esac
--- /dev/null
+#!/bin/bash
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv,width=640, height=480 \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! theoraenc quality=20 ! mux. \
+ alsasrc device=hw:0,0 ! audio/x-raw-int,rate=44100,channels=2,depth=16 \
+ ! queue ! audioconvert ! audio/x-raw-float,rate=44100,channels=2,depth=16 ! queue ! vorbisenc ! mux. \
+ oggmux name=mux ! filesink location=/var/www/test/test.ogg \
+
+# ! queue ! videorate ! video/x-raw-yuv, framerate=25/1 \
+#jackaudiosrc connect=1 ! queue ! audioconvert ! audio/x-raw-int,rate=44100,channels=1,width=16
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv,width=640, height=480 \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! theoraenc quality=25 ! mux. \
+ jackaudiosrc connect=1 ! queue ! audioconvert ! queue ! vorbisenc ! mux. \
+ oggmux name=mux ! filesink location=/var/www/test/test.ogg \
+
+# ! queue ! videorate ! video/x-raw-yuv, framerate=25/1 \
--- /dev/null
+#!/bin/bash
+
+gst-launch v4l2src device=/dev/video0 ! queue ! videoscale ! video/x-raw-yuv, width=160, height=120 \
+ ! queue ! ffmpegcolorspace ! video/x-raw-rgb \
+ ! queue ! videomixer name=mix \
+ sink_1::xpos=40 sink_1::ypos=60 sink_1::alpha=0.9 sink_2::xpos=40 sink_2::ypos=180 sink_2::alpha=0.9 \
+ ! queue ! videoscale ! video/x-raw-rgb, width=480, height=270 \
+ ! queue ! ffmpegcolorspace ! theoraenc quality=10 ! oggmux name=muxout \
+ ! queue ! shout2send mount=/telecaster_live_video.ogg port=8000 password=source2parisson ip=127.0.0.1 \
+ ximagesrc ! queue ! videorate ! video/x-raw-rgb, framerate=30/1 ! videoscale ! video/x-raw-rgb, width=160, height=120 ! mix. \
+ v4l2src device=/dev/video1 ! queue ! ffmpegcolorspace ! video/x-raw-rgb ! videoscale ! video/x-raw-rgb, width=640, height=360 ! mix. \
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=640
+HEIGHT=360
+#WIDTH=1024
+#HEIGHT=576
+
+
+pipe="v4l2src device=/dev/video0 \
+ ! vp8-encoder ! muxout. \
+ jackaudiosrc ! vorbis-encoder ! muxout. \
+ webmmux streamable=true name=muxout"
+
+flumotion-launch pipeline-producer pipeline=$pipe ! http-streamer port=8800
+
+sleep 2
+
+jack_disconnect system:capture_1 flumotion-launch:in_jackaudiosrc0_1
+jack_connect jack_rack:out_1 flumotion-launch:in_jackaudiosrc0_1
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=432
+HEIGHT=240
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! theoraenc bitrate=400 speed-level=0 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc ! queue ! muxout. \
+ oggmux name=muxout ! filesink location=/home/telecaster/archives/test.ogg \
+ > /dev/null &
+
+sleep 2
+
+jack_disconnect system:capture_1 gst-launch-0.10:in_jackaudiosrc0_1
+jack_connect jack_rack:out_1 gst-launch-0.10:in_jackaudiosrc0_1
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=640
+HEIGHT=360
+#WIDTH=1024
+#HEIGHT=576
+
+gst-launch v4l2src device=/dev/video1 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! videoflip method=rotate-180 \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=2 quality=5 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=3 ! queue ! muxout. \
+ webmmux streamable=true name=muxout ! filesink location=/home/telecaster/trash/test.webm \
+ > /dev/null &
+
+sleep 2
+
+jack_disconnect system:capture_1 gst-launch-0.10:in_jackaudiosrc0_1
+jack_connect jack_rack:out_1 gst-launch-0.10:in_jackaudiosrc0_1
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=432
+HEIGHT=240
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! theoraenc quality=10 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=3 ! queue ! muxout. \
+ oggmux name=muxout ! shout2send mount=/telecaster_live_video.ogg port=8000 password=source2parisson ip=127.0.0.1 \
+ > /dev/null &
+
+sleep 2
+
+jack_disconnect system:capture_1 gst-launch-0.10:in_jackaudiosrc0_1
+jack_connect jack_rack:out_1 gst-launch-0.10:in_jackaudiosrc0_1
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=320
+HEIGHT=240
+#WIDTH=1024
+#HEIGHT=576
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=2 quality=9.0 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=0.3 ! queue ! muxout. \
+ webmmux streamable=true name=muxout \
+ ! queue ! tcpserversink host=127.0.0.1 port=9000 protocol=none \
+ > /dev/null
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=1024
+HEIGHT=576
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! videoflip method=rotate-180 \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=2 quality=5 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=3 ! queue ! muxout. \
+ webmmux streamable=true name=muxout \
+ ! tee name=t ! queue ! tcpserversink host=127.0.0.1 port=9000 \
+ t. ! queue ! filesink location=/home/telecaster/trash/test.webm \
+ > /dev/null &
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=1280
+HEIGHT=720
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=1 quality=9.0 ! queue ! muxout. \
+ alsasrc \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=0.3 ! queue ! muxout. \
+ webmmux streamable=true name=muxout \
+ ! queue ! tcpserversink host=127.0.0.1 port=9000 protocol=none
+
+
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=1280
+HEIGHT=720
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=4 quality=9.0 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=0.3 ! queue ! muxout. \
+ webmmux streamable=true name=muxout \
+ ! queue ! tcpserversink host=127.0.0.1 port=9000 protocol=none
+
+
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=1280
+HEIGHT=720
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=4 quality=9.0 \
+ ! queue ! webmmux streamable=true name=muxout \
+ ! queue ! tcpserversink host=127.0.0.1 port=9000 protocol=none
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=640
+HEIGHT=360
+#WIDTH=1024
+#HEIGHT=576
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! videoflip method=rotate-180 \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=2 quality=5 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=3 ! queue ! muxout. \
+ webmmux streamable=true name=muxout \
+ ! tee name=t ! queue ! multifdsink name=sink sync=false recover-policy=3 \
+ t. ! queue ! filesink location=/home/telecaster/trash/test.webm \
+ > /dev/null &
+
+sleep 2
+
+jack_disconnect system:capture_1 gst-launch-0.10:in_jackaudiosrc0_1
+jack_connect jack_rack:out_1 gst-launch-0.10:in_jackaudiosrc0_1
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=800
+HEIGHT=600
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=4 quality=9.0 \
+ ! queue ! webmmux streamable=true name=muxout \
+ ! queue ! tcpserversink host=127.0.0.1 port=9000 protocol=none
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+WIDTH=640
+HEIGHT=360
+#WIDTH=1024
+#HEIGHT=576
+
+gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv, width=$WIDTH, height=$HEIGHT \
+ ! queue ! videoflip method=rotate-180 \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=2 quality=9.0 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=0.3 ! queue ! muxout. \
+ webmmux streamable=true name=muxout \
+ ! tee name=t ! queue ! tcpserversink host=127.0.0.1 port=9000 protocol=none \
+ t. ! queue ! filesink location=/home/telecaster/trash/test.webm \
+ > /dev/null &
+
+sleep 4
+
+jack_disconnect system:capture_1 gst-launch-0.10:in_jackaudiosrc0_1
+jack_connect jack_rack:out_1 gst-launch-0.10:in_jackaudiosrc0_1
+
--- /dev/null
+#!/bin/sh
+
+# Start TeleCaster video channel
+
+gst-launch ximagesrc ! video/x-raw-rgb,framerate=30/1 \
+ ! queue ! ffmpegcolorspace \
+ ! queue ! vp8enc speed=2 threads=2 quality=9.0 ! queue ! muxout. \
+ jackaudiosrc connect=1 \
+ ! queue ! audioconvert ! queue ! vorbisenc quality=0.3 ! queue ! muxout. \
+ webmmux streamable=true name=muxout \
+ ! queue ! filesink location=/home/momo/tmp/desktop.webm
+
+
--- /dev/null
+#!/bin/bash
+
+xrandrout="$(xrandr)"
+
+case $xrandrout in
+ *1024x600+0+0\ inverted\ \(* ) rotate=0; invert=0;;
+ *1024x600+0+0\ \(* ) rotate=2; invert=1;;
+esac
+
+xrandr -o $rotate
+xinput --set-prop 11 "Evdev Axis Inversion" $invert, $invert
+
--- /dev/null
+[Desktop Entry]
+Name=Rotate Desktop
+Exec=/usr/local/bin/rotate_desktop
+Icon=preferences-desktop-rotate
+Type=Application
+Comment=Rotate Desktop for 180 degrees with the touchscreen
+GenericName=Rotate Desktop
+Categories=Utility;Accessibility;
+Terminal=false
+
refresh();
setInterval(refresh,d);
}
- catch(err){
- setInterval(refresh,d);
+ finally{
+
}
};
server_status_callback();
## Luc Sorgue <luc.sorgue@laposte.net> and
## Rds <rds@rdsarts.com> and
## Guillaume Pellerin <yomguy@parisson.com>
-## All rights reserved.
+## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions
## notice, this list of conditions and the following disclaimer in the
## documentation and/or other materials provided with the distribution.
## 3. The name of the author may not be used to endorse or promote products
-## derived from this software without specific prior written permission.
+## derived from this software without specific prior written permission.
##
## THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
## IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
class Acpi:
"""Interface class for ACPI"""
-
+
def __init__(self):
res = sys.platform
if res.find("freebsd4") > -1:
elif res.find("netbsd1") > -1:
self.acpi = None #throw exception
raise AcpiError, ERR_NOT_IMPLEMENTED
-
+
elif res.find("linux2") > -1:
self.acpi = AcpiLinux()
-
+
elif res.find("linux") > -1:
#some systems return linux instead of linux2. We should
#show a warning or check by ourselves for Linux2
self.acpi = AcpiLinux()
-
+
else:
self.acpi = None #throw exception (os unknown)
raise AcpiError, ERR_NOT_IMPLEMENTED
-
+
def identity(self):
"""Returns the identity of this module"""
return "acpi.py"
-
+
def version(self):
"""Returns the version of this module"""
return VERSION
-
+
def update(self):
"""Updates the ACPI state"""
self.acpi.update()
def charging_state(self):
"""Returns ac state (off-/online/charging)"""
return self.acpi.charging_state()
-
+
def estimated_lifetime(self):
"""Returns Estimated Lifetime as real number"""
return self.acpi.estimated_lifetime()
"""init ACPI class and check for any ACPI features in /proc/acpi/"""
#we read all acpi stuff from here
- self.proc_acpi_dir = "/proc/acpi"
- #self.proc_acpi_dir = "/home/riemer/main/ACPI/proc/acpi"
-
+ dirs = ['/proc/acpi/ibm']
+ for dir in dirs:
+ if os.path.exists(dir):
+ self.proc_acpi_dir = dir
+ break
+
self.init_batteries()
self.init_fans()
#self.init_processors()
self.init_temperatures()
-
+
self.update()
except OSError:
self.ac_line_state = ONLINE # no batteries: we assume that a cable is plugged in ;-)
return #nothing more to do
-
+
try:
for i in battery_dir_entries:
# the batteries which we could stat
# because the appended dirs should be okay we do not return here
pass
-
+
self.ac_line_state = OFFLINE
#later: the newer acpi versions seems to generate always two BAT dirs...
#print self.proc_battery_dir + "/" + i + "/info"
info_file = open(self.proc_battery_dir + "/" + i + "/info")
line = info_file.readline()
-
+
while len(line) != 0:
if line.find("last full capacity:") == 0:
cap = line.split(":")[1].strip()
except ValueError:
#no value --> conversion to int failed
self.design_capacity[i] = 0
-
+
line = info_file.readline()
info_file.close()
except IOError:
else:
self.ac_line_state = ONLINE
- # Read the present energy consumption to
- # estimate life time
+ # Read the present energy consumption to
+ # estimate life time
if line.find("present rate:") == 0:
try:
pr_rate = float(line.split(":")[1].strip().split("m")[0].strip())
except ValueError:
pr_rate = 0
-
+
self.present_rate[i] = pr_rate
line = state_file.readline()
state_file.close()
except IOError:
- raise AcpiError, ERR_CONFIGURATION_CHANGED
+ raise AcpiError, ERR_CONFIGURATION_CHANGED
# maybe we should restart init_batteries instead of generating an error ?
# the user may have unplugged the battery.
# I prefer raising an exception because we would run into a recursion of
# member funcs what is not a good idea.
# the case that this error occurs should be very rare
-
+
def init_temperatures(self):
"""Initializes temperature stuff"""
- self.proc_thermal_dir = self.proc_acpi_dir + "/thermal_zone"
+ self.proc_thermal_dir = self.proc_acpi_dir
# empty list implies no thermal feature supported
self.temperatures = {}
try:
for i in thermal_dir_entries:
- mode = os.stat(self.proc_thermal_dir + "/" + i)[stat.ST_MODE]
- if stat.S_ISDIR(mode):
+ if i == 'thermal':
self.thermal_dir_entries.append(i)
except OSError:
# the thermal module is not correctly loaded, or is broken.
try:
for i in self.thermal_dir_entries:
- file = open(self.proc_thermal_dir + "/" + i + "/temperature")
+ file = open(self.proc_thermal_dir + "/" + i)
line = file.readline()
while len(line) != 0:
if line.find("temperature") == 0:
- self.temperatures[i] = line.split(":")[1].strip()
+ self.temperatures[i] = line.split(":")[1].strip().split(' ')[0]
line = file.readline()
file.close()
except IOError:
raise AcpiError,ERR_CONFIGURATION_CHANGED
-
+
def init_fans(self):
"""Initialize fans"""
# the fan module is not correctly loaded, or is broken.
# because the appended dirs should be okay we do not return here
pass
-
+
def update_fans(self):
"""Read current state of fans"""
-
+
try:
for i in self.fan_dir_entries:
file = open(self.proc_fan_dir + "/" + i + "/state")
self.processor_dir_entries = []
self.perf_states = {} #reset list --> should we throw an exception? No!
return
-
+
def update_processors(self):
"""Read current state of processors"""
if design_capacity == 0:
return 0
-
+
# should we use try catch instead of the check above?
return (life_capacity * 100) / design_capacity
def nb_of_batteries(self):
#returns the number of batteries
- #if it returns 0, maybe ACPI is not available or
+ #if it returns 0, maybe ACPI is not available or
#battery driver is not loaded
return len(self.battery_dir_entries)
-
+
def charging_state(self):
return self.ac_line_state
# TODO: adapt it for multiple CPUs
def set_frequency(self, f):
#I think we should throw exceptions if someone goes wrong here
-
+
if self.perf_states.has_key(f):
state = self.perf_states[f]
try:
except OSError:
raise AcpiError, ERR_NOT_ALLOWED
- try:
+ try:
f = open("/proc/acpi/processor/"+pr+"/performance","w")
except IOError:
raise AcpiError, ERR_NOT_ALLOWED
-
+
f.write(state)
f.close()
else: