Ankündigung

Einklappen
Keine Ankündigung bisher.

TCP MPEG Stream als Video anzeigen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • TCP MPEG Stream als Video anzeigen

    Hallo,

    ich möchte ein Video, welches auf einem Embedded Linux aufgenommen wird in einem Webbrowser anzeigen. Das Linux ist von freescale in der Version 3.0.35. Für den Stream verwende ich gst-launch in der Version 0.10. Es ist leider nicht möglich neuere Versionen oder zusätzliche Plugins zu verwenden, da diese nicht vorhanden sind in diesem Linux.

    Zum streamen verwende ich folgenden Aufruf:


    Code:
    gst-launch mfw_v4lsrc ! vpuenc codec=12 ! multipartmux ! tcpserversink host=127.0.0.1 port=1234 sync=false
    Diesen Stream kann ich mit VLC einfach anschauen, in dem ich tcp://127.0.0.1:1234 aufrufe.

    Wenn ich in meinem Webbrowser http://127.0.0.1:1234 eingebe, dann wird eine HTML5 Seite angezeigt und es werden die Steuerelemente angezeigt. Jedoch kein Video.

    Daher bin ich nun auf die Idee gekommen den Stream mittels PHP und HTML als Video anzuzeigen. Für den Aufruf habe ich die stream_socket_client Funktion von PHP (PHP5) verwendet mit dem Beispiel, welches auf der PHP Homepage verfügbar ist.

    PHP-Code:
    <?php
    $fp 
    stream_socket_client("tcp://www.example.com:80"$errno$errstr30);
    if (!
    $fp) {
        echo 
    "$errstr ($errno)<br />\n";
    } else {
        
    fwrite($fp"GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
        while (!
    feof($fp)) {
            echo 
    fgets($fp1024);
        }
        
    fclose($fp);
    }
    ?>

    Das Problem ist, dass der Stream als einzelne Bytes ausgegeben wird. Ich weiß nicht wie ich den Stream nun als mpeg Video anzeigen kann. Ich habe bezüglich mpeg Codierung auch nichts gefunden. Wie kann ich diesen Stream als Video auf einer Webseite darstellen?

  • #2
    Zitat von user0009 Beitrag anzeigen
    Hallo,

    ich möchte ein Video, welches auf einem Embedded Linux aufgenommen wird in einem Webbrowser anzeigen. Das Linux ist von freescale in der Version 3.0.35. Für den Stream verwende ich gst-launch in der Version 0.10. Es ist leider nicht möglich neuere Versionen oder zusätzliche Plugins zu verwenden, da diese nicht vorhanden sind in diesem Linux.

    Zum streamen verwende ich folgenden Aufruf:


    Code:
    gst-launch mfw_v4lsrc ! vpuenc codec=12 ! multipartmux ! tcpserversink host=127.0.0.1 port=1234 sync=false
    Diesen Stream kann ich mit VLC einfach anschauen, in dem ich tcp://127.0.0.1:1234 aufrufe.

    Wenn ich in meinem Webbrowser http://127.0.0.1:1234 eingebe, dann wird eine HTML5 Seite angezeigt und es werden die Steuerelemente angezeigt. Jedoch kein Video.
    Wenn der Server den Stream nicht per HTTP bereitstellt, kann der Browser ihn auch nicht per http://-URL lesen. Allerdings stellt er etwas dar, was vermuten lässt, dass der Server möglicherweise auch per HTTP liefert. Wenn es hakt, kann es da viele Ursachen auf Server- und Client-Seite geben.

    Daher bin ich nun auf die Idee gekommen den Stream mittels PHP und HTML als Video anzuzeigen. Für den Aufruf habe ich die stream_socket_client Funktion von PHP (PHP5) verwendet mit dem Beispiel, welches auf der PHP Homepage verfügbar ist.

    PHP-Code:
    <?php
    $fp 
    stream_socket_client("tcp://www.example.com:80"$errno$errstr30);
    if (!
    $fp) {
        echo 
    "$errstr ($errno)<br />\n";
    } else {
        
    fwrite($fp"GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
        while (!
    feof($fp)) {
            echo 
    fgets($fp1024);
        }
        
    fclose($fp);
    }
    ?>
    Du öffnest eine TCP-Socket-Verbindung als Client zu einem Server, dann schickst du einen HTTP-Header und anschließend liest du die erhofften (binären) Video-Daten zeilenweise (also als Text) ein. Was erhoffst du dir als Resultat ...?

    Das Problem ist, dass der Stream als einzelne Bytes ausgegeben wird. Ich weiß nicht wie ich den Stream nun als mpeg Video anzeigen kann. Ich habe bezüglich mpeg Codierung auch nichts gefunden. Wie kann ich diesen Stream als Video auf einer Webseite darstellen?
    Mit einem serverseitig laufenden Script, das einen Streaming-Server emuliert. Es müsste sowohl den "HTML-Container" liefern als auch die Binärdaten, die dann die HTML-Datei auf dem Browser (Client) vom Server anfordert. Ich weiß nicht, ob es so etwas als Nur-PHP-Lösung gibt.
    Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

    Kommentar

    Lädt...
    X