Benutzer-Werkzeuge

Webseiten-Werkzeuge


streaming-server

Streaming-Server

  • Maxdata silber, Intel P4
  • openSUSE 11.3 32-Bit
    • Benutzer: stream (wichtig für vlc!!!)
  • 40 GB HDD
  • 2GB RAM

Für Maturaball

  • Videokammerl: Raum 114, Netzwerkdose auf A gepatcht
  • Strom für Kamera: Steckdose hinter Scheinwerfer 1. OG auf Höhe Chemiekammerl
    • Anschaffung für Maturaball 2012: 1 langes Kabel!!!

Vorbereitungen

  • Packman-Repository
zypper ar -f http://packman.inode.at/suse/11.3 packman
  • Software
zypper in ffmpeg vlc mplayer flash-player x11vnc xawtv
  • Canon Kamera
  • Ausgang Canon-Klinke ↔ Cinch (RCA) ↔ S-Video
  • Medion TV Karte
/etc/init.d/boot.local
  modprobe bttv card=54
  • Audio über Line-in der Onboard Soundkarte
    • alsamixer zum Aktivieren von Line-in

Bild testen

xawtv
  • Beim ersten Mal funktioniert xawtv nie, mit q beenden. Dann beim zweiten Mal die Videoquelle und das Bildformat umstellen (rechte Maustaste, PAL, S-Video)

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

  • Extern ins Internet: vlc → Netzwerkstream öffnen → http://bgweiz.at:31337
    • Auf Einstein Port-Forwarding aktivieren, siehe /etc/init.d/iptables.sh
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

  • x11vnc
x11.sh
#!/bin/bash
x11vnc -display :0 -ncache 10 -viewonly
  • Alternativ: Bildschirm der Clients anzeigen
    • Am Client TightVNC Server installieren
    • Zusätzlich Remote-Desktop erlauben

Streaming-Server (alt)

  • Aktuelle ffmpeg Version von Packman: ffmpeg-0.5.21000svn-0.pm.1.5.i586
  • /etc/ffserver.conf
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>
  • Zum Starten:
ffserver &
  • Zum Stoppen:
killall ffserver

EINSTEIN

  • /srv/www/htdocs/ball.bgweiz.at/live/index.php
<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

  • openSUSE 11.1
  • root, uS….
  • Kartenname: Bt878
  • Treiber bttv
  • Soundkarte: Intel ICH6
dmesg | grep bttv => card=54

rmmod bt878 bttv
modprobe bttv card=54
  • /etc/modprobe.d/tv_bttv
options bttv card=54

Video Kanäle

  • 0 = Television
  • 1 = Composite
  • 2 = s-video

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)

  • /etc/modules.autoload.d/kernel-2.6
bttv card=54
  • ffmpeg installieren:
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>
  • ffserver starten
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

  • ffmpeg und Download müssen mehr oder weniger gleichzeitig gestartet werden:
  • ffserver und ffmpeg ganz normal wie oben erwähnt ausführen
  • In den Ordner wechseln, in den man den Stream speichern will
w3m http://localhost:8090/stat.html
  • stream.swf mit ENTER auswählen, Download starten

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>
  • ffserver starten und laufen lassen
nb02:/etc # ffserver
  • ffmpeg starten und laufen lassen
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)

  • vlc → Medien → Streaming → Aufnahmegerät öffnen (Einstellungen durchführen) → Stream →
    • Outputs: Lokal wiedergeben, HTTP: ip-adresse PORT: 8080
    • Profil: windows (wmv,asf)
    • Stream (bzw. ALT+S)
  • Anschauen etwa mit:
mplayer http://ip-adresse:8080
  • oder im Internet in HTML eingebunden:
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>
streaming-server.txt · Zuletzt geändert: 2011/06/09 13:12 von admin