Monday, March 06, 2006

Live-Video mit DSL

Phil hat mir das Wochenende versaut. Denn ich hatte zuerst eine Webcam am Laufen mit Standbildupload via webcam . Und Phil hat gesagt, er will ein echtes Video sehen. Nunja, damit begannen lange Stunden der Webcambastelei.
Als erstes, was sind die Grundlagen, die man benötigt um eine normale Webcam unter Ubuntu-Linux zum laufen zu bringen.
  • eine Webcam, die von Linux so weit unterstützt wird, das sie einen funktionsfähigen Eintrag /dev/video0 erzeugt (mann kann sich z.B. mit xawtv davon überzeugen, läuft aber nur mit X)
  • einen halbwegs schnellen Prozessor (Pentium II 300)
  • möglichst viel Upstream des DSL-Anschlusses
Jetzt kanns auch schon losgehen.
  1. Wir besorgen uns via sudo aptitude install vlc erstmal die Pakete für den VideoLanClient
  2. als nächstes probieren wir mal die Befehlszeile für den VLC aus.
  3. vlc -I http v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/null" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching=300 :v4l-chroma="" :v4l-fps=-1,000000 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=0 :v4l-height=0 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 --no-sout-audio --sout '#transcode{vcodec=WMV2,vb=120,scale=1,acodec=mp3,ab=32,channels=2}:std{access=mmsh,mux=asfh,url=:1234}
  4. Der rote Bereich ist möglicherweise anders für Eure Webcam, am Besten ist es, diesen Teil entweder zu übernehmen wenn er läuft oder ihn aus einem VLC mit einer grafischen Benutzeroberfläche zu übernehmen, indem man dort auf Datei/Aufnahmegerät öffnen klickt. Wenn das funktioniert, kann man die Befehlszeile des Media Resource Locators oben übernehmen und hier als ersten Teil nehmen.
    Der Codec sowie der Container müssen zusammenpassen, Infos dazu gibts hier . Für den Anfang sind WMV2 und asfh schonmal ganz gut, da man diese Kombination auch mit einigermaßen aktuellen Windows Mediaplayern ganz gut wiedergeben kann. Der Audiocodec interessiert uns wegen der Option --no-sout-audio nicht, wenn ihr Sound mitstreamen wollt diese Option natürlich weglassen. Besonders wichtig ist die Angabe vb=120, diese ist entscheidend über die Bitrate in kbit/s. Dazu ein paar Worte. Es handelt sich um eine Zielbitrate, d.h. der Transcoder wird sich bemühen, diese Bitrate hinzubekommen mit dem ihm zur Verfügung gestellten Codec. Das geht jedoch nur in gewissen Grenzen was die Ursprungsbildgröße sowie die Anzahl der Bilder pro Sekunde angeht. Wenn ihr also die Bitrate zu niedrig wählt wird je nach Codec diese entweder nicht erreicht oder der Transcoder erzeug Unsinn. Wenn das passiert, im Manual von VLC unbedingt die Transcode-Optionen überprüfen. Die Video- und Audiobitrate sollten natürlich dem Ziel angepasst sein, fürs Internet darf die Summe den Upstream nicht übersteigen (DSL 1000: 128 kbit/s; DSL 2000: 192 kbit/s).
    Der URL-Parameter stellt ein, auf welchem Port und ggf. welchem Interface auf eingehende Verbindungen gehorcht werden soll. url=ip-adresse:1234 ist der Syntax und wenn man ip-adresse weglässt, wird auf allen Interfaces gehorcht.
  5. Um jetzt die Verbindung zu testen, entweder den Windows Mediaplayer oder VLC anwerfen und versuchen zu connecten. Die URLs dafür sind:
    für Windows Mediaplayer
    mms://ip-adresse:1234
    für VLC mmsh://ip-adresse:1234
    Es sollte eine Weile dauern bis der Puffer voll ist und dann sollte der Stream funktionieren.

der Pinguin ist erwacht

So, viel Spass wünsche ich Euch bei meinem neuen "Server"-Blog. Ich möchte hier ein paar Dinge vorstellen, die ich interessant finde und aufschreiben, wie man soetwas macht.