Ich habe da mal ein Video für euch, aber nicht weiter erzählen 😉
PVA: Cluster & Netflix & Streaming zusammen
Kleine Demo, was man mit PVA so alles machen kann:
Wir haben hier jetzt das Netflixplugin, das Clusterplugin und das Streamingplugin kombiniert.
Die Geräte waren alle in einer Videokonferenz versammelt, damit man das Ergebnis sehen konnte. Die „Küche“ war ein Intel ATOM Tablet, das Wohnzimmer ein alter Laptop. Die Latzenzen bis man etwas sieht, sind jetzt nicht dem Netzwerk geschuldet, sondern dem Umstand, daß wir Livestreaming über FFMPEG machen, wozu FFMPEG erstmal ein paar Sekunden braucht. Es sind aber natürlich andere Wege denkbar: Temporäre Filezugriffe von den Geräten auf einen Share, Netzwerkpipelines usw. da geht noch was 😉
Was ich Euch damit aber zeigen möchte ist, daß die Technik da ist. Baut Euch daraus die Wohnungs-KI, die ihr schon immer haben wolltet. KI? War da jetzt KI im Spiel? Nein, natürlich nicht, aber .. da wäre noch was …
KI, or not KI?
JETZT haben Ihr eine KI im Spiel 😀
Ihr merkt, daß ChatGPT hier im Freetalkmodus lief, weshalb alle Anfragen an Carola zu einem „Fehler“ geführt haben. Betreibt man das im Lückenfüllermodus, reagiert es nur auf den PVA Namen. Die Fehler in der Spracherkennung nerven, sind aber im Bereich des vertretbaren. ChatGPT holt da einiges richtig raus.
Teil 2 der Linux am Dienstag Mini-Serie zum Thema „2D in 3D umwandeln“ befasst sich mit FFMPEG und den verschiedenen Möglichkeiten, die sich daraus ergeben, und da gibt es einiges 😀
FFMPEG: 2D zu 3D in Echtzeit
Wer den ersten Beitrag noch nicht gelesen hat, sollte sich den vorher durchlesen, da diverse Rahmenbedingungen wie Framerate und Algorithmus auch für FFMPEG gelten, die ich aber nicht nochmal erklären werde 😉
Wer mit FFMPEG arbeitet weiß um die Myriaden von Dateiargumenten in der der Konsole, daher mache ich es Euch einfach: -vf stereo3d=al:arcc
Das ist der Stereo3D-Filter den wir allen FFMPEG Tools mitgeben können, damit wir rot-cyanblaue 3D Bilder bekommen. Das Format stereo3d=in:out könnt Ihr auch ändern, je nachdem was Ihr so machen wollt. Es gibt im Netz diverse Webseiten, die da helfen können:
Der erste Link sollte eigentlich reichen um das Prinzip zu erklären. Da wir die Angaben in allen FFMPEG-Werkzeugen benutzen können, muß man den Teil also nur einmal austüfteln.
Wenn man sich einen Film in 3D ansehen möchte, kann man dafür FFPLAY benutzen:
ffplay -vf stereo3d=al:arcc film.mp4
Da hier die soweit alles auf Anhieb funktioniert, eignet es sich hervorragend für einen NEMO/Nautilus Actionmenüeintrag, also zum Abspielen auf Klick im Dateimanager 😉
[Nemo Action]
Name=Play 3D Video
Comment=Spiele Videos in 3D ab.
Exec=<play3d.sh %F>
Icon-Name=soundconverter
Selection=Any
Separator=;
Extensions=m4a;mp4;avi;webm;ogg;ogv;oga;wav;mkv
und /home/<username>.local/share/nemo/actions/play3d.sh
#!/bin/bash
IN=$*
IFS=";" read -ra FILES <<< "$IN"
for i in "${FILES[@]}"; do
ffplay -vf stereo3d=al:arcc "$i" > /dev/null
done
Aber das ist natürlich nur der Anfang 😉 Kommen wir zur Abteilung „zu kalt für den Gefrierschrank“:
Zum Coolsein gehört v4l2loopback
Wer das auf seinem Rechner noch nicht drauf hat, sollte sich das v4l2loopback-Device nachinstallieren und dann kurz rebooten, damit der Kernel das korrekt verarbeiten kann. Für Fedora geht das so: dnf -y install v4l2loopback;reboot .
Wenn der PC wieder da ist, laden wir das Modul als normaler Benutzer: modprobe v4l2loopback
Ggf. dürft Ihr das auf Eurer Installation nicht, dann benutzt sudo dafür. Der Teil der jetzt kommt ist stark individuell von Eurer WebCam abhängig und wie Euer Kernel Lust hatte, mit dem V4L2 Videokram umzugehen.
Wenn meine Versionen der Befehle bei Euch nicht direkt funktionieren, dann gibt es diverse Gründe:
– die Kamera kann die Auflösung nicht => eine andere Auflösung benutzen – die Kamera kann das Bildformat ( „pixfmt“ ) nicht => einfach mal „rawvideo“ angeben, das sollten alle können. – ffmpeg kann das Videogerät nicht lesen (/dev/video0: Kein passendes Gerät gefunden) => video1 benutzen
Am besten die Fehlermeldungen sorgsam lesen, ist meistens recht einfach.
ja, richtig geraten, die WebCam liefert jetzt ein 3D Bild aus, aber nur wenn Ihr Euch auch bewegt 😀 Das Bild kann von Firefox oder Chromium ( nehmt den dafür, FF zickt noch rum ) z.b. im Rahmen einer Videokonferenz oder bei Matrixcalls verwendet werden. Ihr könnt es Euch natürlich auch per WebCam-Tool wie Camorama ansehen und mit lustigen Effekten versehen, es per OBS Streamen, was auch immer Ihr wollt \o/
Einlesen von einer WebCam mit dem Videocodec „mjpeg“ aka MotionJPEG mit 30 FPS und in FULLHD Auflösung. Wenn man hier kein mjpeg nimmt, bekommt man i.d.R. nur Ruckelvideo mit 5 FPS, egal was man anfordert. Falls Eure Cam das nicht kann, was wie aber wohl können wird, nehmt „rawvideo“ als Codec, das geht immer. Hinweis: 5 FPS reichen für 3D nicht!
Mit 30 FPS (-r) in FullHD(-video_size) als Rawvideo skaliert (-s) auf FullHD als Video4Linux2 (-f) WebCam an /dev/video0 schreiben. Ja, zweimal die Auflösung drin, einfach machen, es gibt unterschiedliche FFMPEG Versionen, so klappts am Ehesten und einer ist eh die Streaminfo für den, der die Kamera benutzen will 😉
Wie, das reicht Euch noch nicht?
Hmm… na gut, es will ja nicht jeder sein Bild in die Konferenz streamen 😀
Die FFMPEG Argumente habe ich oben in 3 Teile aufgeteilt, Teil 2 ist immer gleich, aber die Teile 1 und 3 könnt Ihr austauschen, z.B. mit …
Ja ja, wieso OBS nutzen zum Streamen, FFMPEG kann das auch solo 😀
Um da einen TON zu bekommen, muß im ersten Teil „-f pulse -i default“ eingefügt werden, nach dem Videoteil, aber vor Teil 2. Das greift das PulseAudio Default Sink ab und kodiert es in die Tonspur ein.