Ein ziemlich kranker Test von Flash-Video-Streaming: Unterschied zwischen den Versionen

Aus FeM Streaming Wiki
Wechseln zu: Navigation, Suche
K (Encodieren)
K (Das Encoding)
Zeile 37: Zeile 37:
 
Dann wird der mencoder gestartet<br>
 
Dann wird der mencoder gestartet<br>
 
<pre>
 
<pre>
mencoder http://vdr.greussen.eller-net.de/stream/11 -cache 1024 -o /tmp/stream.flv -ovc lavc -oac mp3lame -of lavf -lavcopts vcodec=flv:vmax_b_frames=0:vbitrate=500:turbo -aspect 16:9 -vf pp=flb,scale=384:288 -srate 44100 -lameopts mode=3:cbr=64:aq=1 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
+
mencoder http://vdr.greussen.eller-net.de/stream/11 -cache 1024 -o /tmp/stream.flv -ovc lavc -oac mp3lame \
 +
-of lavf -lavcopts vcodec=flv:vmax_b_frames=0:vbitrate=500:turbo -aspect 16:9 -vf pp=flb,scale=384:288 \
 +
-srate 44100 -lameopts mode=3:cbr=64:aq=1 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
 
</pre><br>
 
</pre><br>
 
Das ganze dauert ein paar Sekunden, da er selbst ersteinmal den stream vom VDR cachen muss.
 
Das ganze dauert ein paar Sekunden, da er selbst ersteinmal den stream vom VDR cachen muss.

Version vom 30. Juni 2007, 21:42 Uhr

Inhaltsverzeichnis

Ein paar Tests und Überlegungen zum Streamen in Form von Flash-Video (.flv)

Motivation

Es besteht die Anforderung zur FormulaStudent das Video-Streaming als Flash-Video durchzuführen.
Leider beschränken sich unsere Erfahrungen auf Windows-Media, da.
Das Encodieren in Flash-Video ist recht einfach, aber wie verteilt man das?

Encodieren

Encodieren kann man auf einfache Weise mit dem mencoder.
Die Kommandozeile für ein einfaches Encodieren:

mencoder eingabedatei.avi -cache 1024 -o ausgabeidatei.flv -ovc lavc -oac mp3lame \
-of lavf -lavcopts vcodec=flv:vmax_b_frames=0:vbitrate=500:turbo -vf pp=flb,scale=384:288 -srate 44100 \
-lameopts mode=3:cbr=64:aq=1 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames


Das encodiert eingabedatei.avi zu ausgabedatei.flv in einer Auflösung von 384x288 mit 500kbit. Es wird ein einfacher Deinterlacer verwendet (linear blend) (kann bei halbem PAL eigentlich weggelassen werden). Als audio-codec wird Lame (mp3) verwendet. Die Abtastrate ist 44,1 kHz und es wird mit einer konstante Bitrate von 64kbit encodiert. "mode=3" bedeutet Mono-Betrieb. Alles nachzulesen in der Manpage vom mencoder

Verteilen

Meines Wissens nach beziehen die einbettbaren Flashplayer ihre Daten per http://.
Daher wird auch hier http:// zum Verteilen zum Einsatz kommen.
Wie das im Detail geschehen wird muss noch evaluiert werden.

Erste Tests

Das Live-Video

Also Live-Quelle kommt beim test ein Stream (ebenfalls http://) von meinem VDR zum Einsatz. Dieser wird mit dem mencoder in eine fifo encodiert.

Das Encoding

Als erstes muss eine fifo erstellt werden:

mkfifo /tmp/stream.flv


Dann wird der mencoder gestartet

mencoder http://vdr.greussen.eller-net.de/stream/11 -cache 1024 -o /tmp/stream.flv -ovc lavc -oac mp3lame \
-of lavf -lavcopts vcodec=flv:vmax_b_frames=0:vbitrate=500:turbo -aspect 16:9 -vf pp=flb,scale=384:288 \
-srate 44100 -lameopts mode=3:cbr=64:aq=1 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames

Das ganze dauert ein paar Sekunden, da er selbst ersteinmal den stream vom VDR cachen muss.

ein Kleiner http-Server

Wir wollen im Player die Daten ja per http abrufen. Also bauen wir uns einen kleine httpd mittels netcat und einem shell-script


echo "HTTP/1.1 200 OK"
echo "Connection: close"
echo "Content-Type: video/flash"
echo
cat /tmp/stream.flv

Aufgerufen wird das dann folgendermaßen

/tmp/httpd | nc6 -l -p 8080

Auf meiner kleinen Testwebseite steht dann