webstream an externen Webserver leiten

  • Hallo,

    Ich möchte gerne einen Webstream / Livestream vom Raspberry Pi an einen Webserver senden, dieser stellt einen Player bereit, damit User aus dem Internet sich das ganze anschauen können.

    Dabei habe ich mich an folgender Anleitung langgehangelt:
    https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=45368

    Kurzfassung:
    Ich verwende den jwplayer und habe auf meinem Webserver die im Artikel angegebene .html page als index.html gesetzt.

    Ich nutze auf dem Raspberry Pi den Befehl:
    raspivid -t -1 -w 960 -h 540 -fps 25 -b 500000 -vf -o - | ffmpeg -i - -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666

    Damit funktionert startet er den Stream (aber sendet ihn halt an sich selbst).

    Wenn ich hinten die IP des Webservers eingebe, kommt eine Fehlermeldung und der Stream kann nicht gestartet werden.
    Wohlgemerkt, befindet sich der Webserver im selben Netzwerk, ich hab ihn also an 192.168.2.102 geschickt, ohne einen Port anzugeben:

    Dies erzeugte:
    [tcp @ 0x21a2df0] Port missing in uri
    tcp://192.168.2.101: Invalid argument

    Dann habe ich einen Port eingegeben, dies erzeugte:
    av_interleaved_write_frame(): Broken pipe
    [flv @ 0x249bfd0] Failed to update header with correct duration.
    [flv @ 0x249bfd0] Failed to update header with correct filesize.
    Error writing trailer of tcp://192.168.2.101:81: Broken pipeframe= 52 fps=0.0 q=-1.0 Lsize=
    112kB time=00:00:02.04 bitrate= 448.8kbits/s speed=38.1x
    video:110kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.18962
    4%
    Conversion failed!


    Kann mir jemand helfen?


  • Hallo Verrain,

    Kleiner Denkanstoß: Der Player muß den Stream vom Raspberry Pi "abholen". Der Stream wird nich an einen bestimmten Clienten gesendet.

    Verdammt, dass ist ärgerlich, dann muss ich wohl doch noch eine VPN-Verbindung legen, da der Raspberry später in unterschiedlichen Netzwerken unterwegs sein wird.

    Heißt das, ich muss im angehängten Code, die Zeile
    , file:"rtmp://" + window.location.hostname + "/flvplayback/flv:myStream.flv"

    in:
    , file:"rtmp://<aktuelle IP samt Port des Pi> ändern?

    Aber wie sage ich ihm, dass er den Stream abholen soll?


    • Offizieller Beitrag

    Ich nutze weder crtmpserver noch jwplayer (sondern cvlc bzw. v4l2) und kann daher auch nur raten. Aber so wie ich das sehe ist das Streamen nicht das Problem, eher der Player.

    So würde ich es versuchen:
    Der Stream wie in der Anleitung beschrieben

    Code
    raspivid -t -1 -w 960 -h 540 -fps 25 -b 500000 -vf -o - | ffmpeg -i - -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666

    und im Player die Zeile

    Code
    , file:"rtmp://" + window.location.hostname + "/flvplayback/flv:myStream.flv"

    ändern in

    Code
    , file:"rtmp://RaspberryPi-IP-oder-Name/flvplayback/flv:myStream.flv"

    Kann man bei ffmpeg auch Username + Pass setzen? Das würde dir evtl. VPN ersparen.
    Aber sieh dir auch mal den Link von meigrafd an!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!