Inhaltsverzeichnis

Streaming-Server

Für Maturaball

Vorbereitungen

zypper ar -f http://packman.inode.at/suse/11.3 packman
zypper in ffmpeg vlc mplayer flash-player x11vnc xawtv
/etc/init.d/boot.local
  modprobe bttv card=54

Bild testen

xawtv

LIVE Video und Audio

view.sh
#!/bin/bash
mplayer tv:// -tv fps=25:buffersize=64:driver=v4l2:width=800:height=600:device=/dev/video0:forceaudio:adevice=/dev/dsp:norm=pal:input=2 -vo x11

Video und Audio aufnehmen

view.sh
#!/bin/bash
 
# Aufnahme 1:1 (große Dateien!)
# -ovc copy
# -oac pcm
 
nice -n 20 mencoder tv://  \
-tv fps=25:buffersize=64:driver=v4l2:width=800:height=600:device=/dev/video0:forceaudio:adevice=/dev/dsp:amode=1:norm=pal:input=2 \ 
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4000:vhq:vqmin=2:vqmax=31 \
-oac mp3lame -lameopts cbr:br=256:q=0:aq=0:mode=0 \ 
-o filename.avi

Streamen

stream.sh
#!/bin/bash
cvlc v4l2:// :v4l2-dev="/dev/video0" :v4l2-input=2 :v4l2-adev=/dev/dsp :input-slave=alsa:// \
--sout '#transcode{vcodec=wmv2,vb=800,scale=0.5,acodec=mpga,ab=512,samplerate=44100,channels=1}:duplicate{dst=std{access=http{mime=video/x-ms-wmv},mux=asf,dst=:8080}}' \
:no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep
 
#cvlc final.wmv  \
#--sout '#transcode{vcodec=mp1v,vb=2600,scale=0.75}:duplicate{dst=std{access=http{mime=video/x-ms-wmv},mux=asf,dst=:8080}}' \
#:no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep  --no-sout-audio

Bildschirm freigeben über das Netzwerk

x11.sh
#!/bin/bash
x11vnc -display :0 -ncache 10 -viewonly

Streaming-Server (alt)

Port 31337
BindAddress 0.0.0.0
MaxClients 1000
MaxBandwidth 100000
# Comment the following, on production use
NoDaemon

<Feed feed1.ffm>
    File /tmp/feed1.ffm
    FileMaxSize 100M
    #Launch ffmpeg -y -v 9 -f video4linux2 -vc 2 -tvstd PAL -s 480x384 -b 512000 -r 10 -an -i /dev/video0 
    Launch ffmpeg -y -v 9 -f video4linux2 -vc 2 -tvstd PAL -s 480x384 -b 256000 -r 15 -an -i /dev/video0
    #Launch ffmpeg -r 10 -s 320x240 -f video4linux2 -i /dev/video0 -vcodec flv http://localhost:31337/feed1.ffm
</Feed>

#<Stream stream.flv>
#    Feed feed1.ffm
#    Format flv
#    VideoCodec flv
#    VideoFrameRate 2
#    VideoBufferSize 80000
#    VideoBitRate 256
#    VideoQMin 1
#    VideoQMax 5
#    VideoSize 480x384
#    PreRoll 0
#    Noaudio
#</Stream>

## SWF output
#<Stream stream.swf>
#    Feed feed1.ffm
#    Format swf
#    VideoCodec flv
#    VideoFrameRate 15
#    VideoBitRate 200
#    VideoQMin 5
#    VideoQMin 5
#    VideoSize 320x240
#    PreRoll 0
#    Noaudio
#</Stream>

# ASF compatible
<Stream stream.asf>
Feed feed1.ffm
Format asf
VideoFrameRate 15
VideoSize 352x240
VideoBitRate 256
VideoBufferSize 40
VideoGopSize 30
AudioBitRate 64
StartSendOnKey
Noaudio
</Stream>


# SWF output
<Stream stream.swf>
    Feed feed1.ffm
    Format swf
    VideoCodec flv
    VideoFrameRate 15
    VideoBitRate 512
    VideoQMin 5
    VideoQMax 9
    VideoSize 480x384
    PreRoll 0
    Noaudio
</Stream>
ffserver &
killall ffserver

EINSTEIN

<html><head>
<title>Live-Streaming</title>
<meta http-equiv="refresh" content="1200" /> 
<link rel="stylesheet" href="../style.css" />
</head>
<body style="background-color: #000000; text-align: center">

<h1 style="color: #ffffff;">Flash Live Stream</h1>

<p><a href="/">zur&uuml;ck</a></p>
<p><a href="http://193.170.221.1:31337/stream.asf">Windows Media Player Stream</a></p>
<p>

<object classid="CLSID:D27CDB6E-AE6D-11cf-96B8-444553540000" width="480" height="384"
         codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0">
    <param name="movie" value="http://193.170.221.1:31337/stream.swf">
    <embed src="http://193.170.221.1:31337/stream.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" width="480" height="384">
    </embed>
</object>

<!--
<object class="playerpreview" type="application/x-shockwave-flash" data="player.swf" width="480" height="384">
 <param name="movie" value="player.swf" />
 <param name="allowFullScreen" value="true" />
 <param name="FlashVars" value="flv=http://193.170.221.1:31337/stream.flv&amp;width=480&amp;height=384&amp;showstop=1&amp;showvolume=1&amp;showtime=1&amp;showfullscreen=1&amp;bgcolor=003d7e&amp;bgcolor1=003d7e&amp;bgcolor2=003d7e&amp;autoplay=1" />
 <p>Bitt Flash installieren.</p>
</object>
-->

</p>

</body></html>

Client

mplayer http://193.170.221.1:31337/stream.asf

Servervoraussetzungen

dmesg | grep bttv => card=54

rmmod bt878 bttv
modprobe bttv card=54
options bttv card=54

Video Kanäle

Port-Weiterleitung

iptables.sh
#!/bin/bash
 
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
 
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F -t nat
iptables -t nat -A PREROUTING -p tcp --dport 31337 -j DNAT --to 192.168.100.40:31337
iptables -t nat -A POSTROUTING -j MASQUERADE

Alter Gentoo-Server (2008)

bttv card=54
emerge ffmpeg
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 1000
MaxClients 1000
MaxBandwidth 2000
CustomLog -
NoDaemon
 
##################################################################
 
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 50M
ACL allow 127.0.0.1
</Feed>
 
##################################################################
 
# JPEG
 
<Stream test.jpg>
Feed feed1.ffm
Format jpeg
VideoFrameRate 2
VideoIntraOnly
VideoSize 480x384
#NoAudio
Strict -1
</Stream>
 
#Flash
 
<Stream stream.swf>
Feed feed1.ffm
VideoBitRate 256
VideoFrameRate 25
VideoBufferSize 80000
Format swf
VideoFrameRate 25
VideoSize 480x384
VideoQMin 3
VideoQMax 5
VideoCodec flv
#NoAudio
PreRoll 0
</Stream>
 
##################################################################
# Special streams
 
# Server status
 
<Stream stat.html>
Format status
 
# Only allow local people to get the status
ACL allow localhost 192.168.100.0
#ACL allow 10.0.0.0 10.0.0.255
#ACL allow 0.0.0.0
 
#FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico
</Stream>
 
<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
ffmpeg -y -v 9 -f video4linux2 -vc 2 -tvstd PAL -s 480x384 -r 25 -i /dev/video0 -vcodec flv http://localhost:8090/feed1.ffm

Stream speichern

w3m http://localhost:8090/stat.html

Streaming mit ffmpeg (Ausgabe = Flash-Film = gute Qualität)

Port 31337
#8090
# bind to all IPs aliased or not
BindAddress 0.0.0.0
# max number of simultaneous clients
MaxClients 1000
# max bandwidth per-client (kb/s)
MaxBandwidth 10000
# Suppress that if you want to launch ffserver as a daemon.
NoDaemon
 
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 50M
</Feed>
 
<Stream stream.swf>
Feed feed1.ffm
Format swf
VideoCodec flv
VideoFrameRate 24
VideoBufferSize 80000
VideoBitRate 256
#VideoQMin 1
#VideoQMax 5
VideoSize 352x288
PreRoll 0
Noaudio
</Stream>
nb02:/etc # ffserver
nb02:/etc # ffmpeg -r 24 -s 352x288 -f video4linux2 -i /dev/video0 http://localhost:31337/feed1.ffm
stream.html
<file>
<html>
<head><title>Live-&Uuml;bertragung - Maturaball BG/BRG Weiz</title></head>
<body>
<embed src="http://84.119.8.108:31337/stream.swf" width=352 height=288 type="application/x-shockwave-flash"></embed>
</body>
</html>

Streaming mit VLC (Ausgabe = Windows Media Stream = Schlechtere Qualität)

mplayer http://ip-adresse:8080
stream.html
<html>
<head><title>Live-&Uuml;bertragung - Maturaball BG/BRG Weiz</title></head>
<body>
 
<object id="Player1" width="426" height="305" classid="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6" type="application/x-mplaye
r2">
<param name="url" value="http://localhost:8080" />
<param name="FileName" value="http://localhost:8080" />
<param name="ShowControls" value="1" />
<param name="ShowDisplay" value="0" />
<param name="ShowStatusBar" value="1" />
<param name="AutoSize" value="1" />
<param name="stretchToFit" value=0 />
<param name="AutoStart" value="1" />
<embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" 
src="http://localhost:8080" Name="NSPlayer1" ShowControls="1" ShowDisplay="0" ShowStatusBar="1" AutoSize="0" AutoStart="1" wi
dth="426" height="305" />
</object>
 
<a href="">Windows Media Player</a> bzw. <a href="">VLC</a> werden ben&ouml;tigt.
</body>
</html>