Forum: Mikrocontroller und Digitale Elektronik h264 video streaming ueber ethernet microconttoller an HTML5 Client


von weber (Gast)


Lesenswert?

Hallo zusammen,
Ich möchte h264 Video an html5 streamen
Das ganze will ich mit einem Ethernet microconttoller realisieren, der 
einfach stream weiter leiten soll.
Nun weiss ich nicht, wie man mit der html Datei des web servers umgehen 
soll.
Wie kann ich video tag für video streaming definieren?
Danke & viele grüße weber

von weber (Gast)


Lesenswert?

Hat jemand schon so was gemacht?

von Peter II (Gast)


Lesenswert?


von Simeon (Gast)


Lesenswert?

Dazu braucht man schon einen kleinen Computer.
Ich mache das mit einem Raspberry Pi.
Wenn du eine Kamera anschließen möchtest ist diese Anleitung sinnvoll zu 
lesen.
http://jankarres.de/2013/12/raspberry-pi-kamera-stream-broadcast-realisieren/
Das ist aber ohne HTML 5.
Das liegt daran, dass HTML 5 das Format nicht akzeptiert, dass der 
Raspberry pi aufnimmt. Zum Umwandeln fehlt die Leistung.

von Bernd K. (prof7bit)


Lesenswert?

weber schrieb:
> Hallo zusammen,
> Ich möchte h264 Video an html5 streamen
> Das ganze will ich mit einem Ethernet microconttoller realisieren, der
> einfach stream weiter leiten soll.

Du musst einen kleinen Webserver implementieren. Der muss mit mindestens 
2 HTTP-Anfragen klarkommen und entsprechend antworten können:

Die eine HTTP Anfrage ist die nach der HTML-Datei, die beantwortet er 
indem er eine html-Datei ausgibt die das video tag mit allen korrekten 
Attributen und was dazugehört enthält.

Wenn der Browser das sieht wird er darin den Verweis auf die Videodatei 
finden und eine zweite HTTP Anfrage nach der Videodatei schicken. Die 
beantwortest Du ebenfalls, und zwar indem Du die Daten schickst.

Natürlich ist HTTP nicht unbedingt das ideale Streamingprotokoll, wenn 
Du also in richtiges Streamingprotokoll implementieren willst wird es 
haarig. Du musst (in Schritt 1) zusätzlich zum HTML noch einen riesen 
Brocken JavaScript ausliefern der clientseitig im Browser das 
Streamingprotokoll implementiert (weil nativ können die alle nur HTTP 
soweit ich weiß, aber evtl hat sich das mittlerweile auch geändert wenn 
Du Glück hast) und auf dem Controller einen Server der dieses Protokoll 
spricht und die Daten ausliefern kann. HLS ist ganz nett, das geht on 
top of HTTP (Das Video wird in kurze Segmente zerteilt und in einzelnen 
Abfragen per ganz normalem HTTP vom Server geholt), das ist 
wahrscheinlich noch relativ simpel zu implementieren.

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Simeon schrieb:
> Das liegt daran, dass HTML 5 das Format nicht akzeptiert, dass der
> Raspberry pi aufnimmt. Zum Umwandeln fehlt die Leistung.

stimmt nicht.

Das Format vom Raspi ist H264 es muss nur in einen Container gesteckt 
werden, was keine CPU zeit braucht.

avconv erledigt das direkt als Stream.

von Simeon (Gast)


Lesenswert?

Ich habe hls mit dem ffmpeg segmentiert, die Dateien in den Ordner von 
lighttpd gespeichert. Das war leider nur mit dem VLC mediaplayer 
abspielbar.
In Firefox, Internetexplorer ging das mit HTML 5 nicht.

Wie funktioniert das mit aconf?

von Peter II (Gast)


Lesenswert?

Simeon schrieb:
> Wie funktioniert das mit aconf?

http://www.raspberrypi-spy.co.uk/2013/05/capturing-hd-video-with-the-pi-camera-module/

avconv -r 30 -i myvid.h264 -vcodec copy myvid.mp4

von Simeon (Gast)


Lesenswert?

Ich glaube, er meint live Übertragung. Die Beschreibung ist zu zu 
ungenau.

Ich bin mir sicher das es mit normalen Mikrocontrollern aus den anderen 
HTTP Server Projekten nicht funktioniert. Video ist wirklich eine sehr 
große Datenmenge.

Sogar bei dem Raspberry Pi ist das mit live das wirklich nicht ganz 
einfach.
Ich habe Sachen mit ffserver, hls Segmenter und webm ausprobiert, es hat 
aber nur mit wenigen Bildern pro Sekunde geklappt, sodass ich jetzt doch 
die flash Lösung von Jan Karres benutze.

von Peter II (Gast)


Lesenswert?

Simeon schrieb:
> Sogar bei dem Raspberry Pi ist das mit live das wirklich nicht ganz
> einfach

naja, sollte aber nicht an der Hardware liegen. Wegschreiben kann er es 
ja in Echtzeit, auch im passenden HTML5 Format.

HTML5 ist nicht wirklich für Echtzeitstreaming gemacht. Das fehlt 
einfach noch ein passenden projekt im Zusammenhang mit dem Raspi.

Man müsste den MP4 Header beim aufruf erzeugen und dann das aktuelle 
Bildmaterial.

Das es Einzeln geht, ist zumindest die Hardware nicht das Problem (wenn 
nicht gerade für 1000 Leute gestreamt werden soll)

von Peter II (Gast)


Lesenswert?

Nachtrag:

Ich habe schon selber geschafft, die Frames von der Kamera mit eine C 
Programm abzufragen.

Leider fehlte jetzt noch die Zeit mich mit MP4 zu beschäftigen, wie muss 
der Header aussehen usw. Irgendwie gibt es doch zu viele Standards die 
alle etwas gültig sind.

der Raspi liefert nur fertige mpeg-frames. Da fehlen noch die 
Zeitinformationen und so dinge wie Framerate. Diese müsste man noch 
dazubasteln.

von Simeon (Gast)


Lesenswert?

Ich wäre an einer Lösung interessiert, da ich mein stream auch benutzern 
von android verfügbarmachen möchte. Zurzeit benutze ich einen Computer 
und wandle alles in webm um.

Das Problem ist, dass man für Kompatibilität mit allen Browsern auch 
noch webm anbieten muss, das mit dem Raspberry PI schwer ist.

Wir kommen hier aber etwas vom Thema und der eigentlichen Frage ab.

von Peter II (Gast)


Lesenswert?

Simeon schrieb:
> Das Problem ist, dass man für Kompatibilität mit allen Browsern auch
> noch webm anbieten muss, das mit dem Raspberry PI schwer ist.

http://www.w3schools.com/html/html5_video.asp

für welchen Browser braucht man noch webm?

> Wir kommen hier aber etwas vom Thema und der eigentlichen Frage ab.
eigenen Thema aufmachen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.