VLC
VLC ist eine Software die Multimedia Inhalte wiedergeben kann.
Codecs
Folgendes Metapaket installieren, damit die meisten Videos unterstützt werden.
sudo apt install ubuntu-restricted-extras
Streaming per http
Hier gebe ich ein Video, welches in h264 im mp4 Container transcodiert wird, direkt aus einer Webcam als HTTP-Stream aus.
Da ich hier auf ein Video-Device zugreife, muss natürlich der jew. Benutzer der diesen Befehl ausführt auch in der Gruppe „video“ sein.
Die URL in diesem Beispiel lautet: http://localhost:8080/cam
cvlc v4l2:///dev/vbi0 --no-audio :v4l2-input=1 v4l2-standard=ALL --sout #transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:8080/cam}' :sout-keep --ttl 12
Streaming per Playlist und Webserver
Hier wird ebenfalls das Video, aus der Webcam, in h264 transcodiert.
Auf einem beliebigen Webserver-Verzeichnis (hier /stream) werden nun laufend 5 Videos (delsegs=true,numsegs=) à 10 Sekunden (seglen=) abgelegt.
Der Befehl wird mit dem Benutzer „www-data“ ausgeführt, da dieser direkt den Schreibzugriff auf das Webserver-Verzeichnis hat. Ein anderer Benutzer kann aber auch gewählt werden.
Gleichzeitig wird eine Index-Datei, hier in Form einer m3u8 (m3u8= m3u Playlist mit UTF-8 Text) Playlist (hier: mystream.m3u8), angelegt, welche auch laufend aktualisiert wird.
Der Vorteil dieser Streaming-Methode ist, dass diese so für Mobile-Geräte genutzt werden kann, ohne einen besonderen Player installieren zu müssen.
Wenn keine Sequenzen gelöscht werden, dann kann im Stream problemlos hin und her gespult, aber auch pausiert werden.
Um diesen Stream zu öffnen, braucht man nur folgende URL: http://localhost/stream/mystream.m3u8
su -c "vlc v4l2:///dev/vbi0 --no-audio :v4l2-input=1 v4l2-standard=ALL vlc://quit --sout='#transcode{width=320,height=240,fps=25,vcodec=h264,vb=256,venc=x264{aud,profile=baseline,level=30,keyint=30,ref=1},acodec=mp3,ab=96}:std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=/var/www/stream/mystream.m3u8,index-url=http://128.53.1.23/stream/mystream-########.ts},mux=ts{use-key-frames},dst=/var/www/stream/mystream-########.ts}'" www-data
Mann kann für Mobile Geräte noch verschiedene Qualitäten vorhalgen, dies erfordert aber einen etwas leistungsstärkeren PC.
Dafür startet man einfach einen VLC welcher das Video per UDP bereitstellt
vlc v4l2:///dev/vbi0 --no-audio :v4l2-input=1 v4l2-standard=ALL --sout='#transcode{acodec=mpga,ab=128,vcodec=h264,vb=0}' ':standard{mux=ts,access=udp,dst=:1234}'
und startet danach div. VLCs mit den verschiedenen Qualitäten:
vlc udp: --sout '#standard{access=http,mux=ogg,dst=:8080}'
Ausgabepuffer
Sollten Videos beim Abspielen immer wieder stehen bleiben, muss der Ausgabepuffer erhöht werden
Einstellungen → Eingang/Codecs → Erweitert: Datei-Cachewert (ms) ⇒ 2000
Fenstergröße fixieren
Damit VLC die Fenstergröße nicht immer der nativen videogröße anpasst, sondern in einer kleineren größe startet, folgendes einstellen:
Einstellungen → Interface → Hauptinterfaces → Qt → Interface größe auf native Videogröße anpassen: haken raus
Einstellungen → Video → Fenstereigenschaften: Videobreite und Videohöhe einstellen z.B. auf 640×480