Videostreaming: Unterschied zwischen den Versionen

Aus TippvomTibb
Zur Navigation springen Zur Suche springen
Zeile 78: Zeile 78:
  
 
  gst-launch-1.0 v4l2src device=/dev/video0  ! queue ! x264enc ! mp4mux ! filesink location=video.mp4
 
  gst-launch-1.0 v4l2src device=/dev/video0  ! queue ! x264enc ! mp4mux ! filesink location=video.mp4
 +
 +
 +
==6==
 +
ffmpegcolorspace wurde durch videoconvert ersetzt.
 +
 +
gst-launch-1.0 v4l2src ! videoconvert ! jpegenc ! avimux ! filesink location=output.avi

Version vom 5. März 2023, 17:21 Uhr

Allgemeines

Wie selbstvestaendlich benutzt man Videostreaming von Youtube, Prime, ....

Irgendwie werde ich das Gefuehl aber nicht los, sobald die Anforderung zu simpel wird kommen einem nicht geahnte Schwierigkeiten in die Quere. Da spielt der Liebingsplayer eine Video nicht ab, weil der passende Codec nicht lizenziert oder installiert ist, die Latenzen machen das fluessige schauen unmoeglich, die Rechenleistung des Rechners reicht nicht aus um die Anforderungen eines Codec zu bedienen und und und ...

Der Ausloeser fuer diesen Beitrag ist die Moeglichkeit zu schaffen, von einem System geringer Leistung (RasPi,NAO...) mit angeschlossener Kamera, das Videobild ueber eine Netzwerkverbindung moeglichst in einem Browser, oder Viewer-Marke-Eigenbau fluessig anzuzeigen.

Dateiformate

Auch Videodateitypen, oder auch Datei-Container. Ein Container enthält das Video, Audiodaten und ggf. weitere Informationen wie Untertitel oder Metadaten. [1] Fuer mich nach wie vor von Interesse MPEG-1 und MPEG-2 (m2p, mpg, mpeg, ts) MPEG-4 (mp4, m4v) Matroska (mkv) HTML5 (WebM)

Instagram

   Videoformat: MP4 oder MOV
   Audio: AAC
   Video-Codec: H.264
   Framerate: maximal 30 Bilder pro Sekunde (fps)
   Maximale Dateigröße: 15 MB

YouTube

   Videoformat: MP4
   Audio: AAC-LC
   Video-Codec: H.264
   Framerate: selbe Framerate wie bei der Aufnahme, gängig sind 24, 25, 30, 48, 50 und 60 Bilder pro Sekunde
   Maximale Dateigröße: 256 GB

WhatsApp

TODO


Um mich der Sache zu naehern, hier eine Sammlung der ausprobierten Befehle.

Versuch und Irrtum

1

gst-launch-1.0 v4l2src device="/dev/video0" ! autovideoconvert ! autovideosink sync=false

Das sync=false am Ende laesst das Video erst fluessig erscheinen.

2

gst-launch-1.0 v4l2src device="/dev/video0" ! videoconvert ! clockoverlay ! x264enc tune=zerolatency ! mpegtsmux ! hlssink playlist-root=http://192.168.178.10/gstreamer/hlstest location=/mnt/SERVER/WWW/gstreamer/hlstest/segment_%05d.ts target-duration=5 max-files=5


Ein HTML5 Player gibt diesen Stream nicht wieder.

Es gibt in HTML5 folgende Einschraenkung, .ts ist da nicht dabei. .mp4 = H.264 + AAC .ogg/.ogv = Theora + Vorbis .webm = VP8 + Vorbis


3

gst-launch-1.0 webmmux name=mux ! filesink location=test.webm            \
  videotestsrc num-buffers=250 ! video/x-raw,framerate=25/1 ! videoconvert ! vp8enc ! queue ! mux.video_0 \
  audiotestsrc samplesperbuffer=44100 num-buffers=10 ! audio/x-raw,rate=44100 ! vorbisenc ! queue ! mux.audio_0

Zum Probieren ganz hilfreich, da "Fehler" bei der Quelle(nangabe) wegfallen.

4

gst-launch-1.0 webmmux name=mux ! filesink location=test.webm   v4l2src device=/dev/video0 ! videoconvert ! vp8enc ! queue ! mux.video_0 

Video war mit deutlicher Verzoegerung im Browser zu sehen. Der Name mux wird dann ganz am Ende als Referenz benutzt mux.video oder mux.audio. Damit erklaert sich auch die hier "falsche" Reihenfolge der Pipe.


5

gst-launch-1.0 v4l2src device=/dev/video0  ! queue ! x264enc ! mp4mux ! filesink location=video.mp4


6

ffmpegcolorspace wurde durch videoconvert ersetzt.

gst-launch-1.0 v4l2src ! videoconvert ! jpegenc ! avimux ! filesink location=output.avi