Abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Jetzt anmelden und Teil der Community werden!

Sony-Kameras als Webcam unter Linux nutzen (HowTo)

profile.country.DE.title
csiegel94
Vielschreiber
Vielschreiber
13.460 Aufrufe

Hallo Community,

 

die Zahl der Linux-Nutzer ist zwar überschaubar, aber so ist es auch die Zahl deutscher Tutorials zum Thema "Unterstützung von Sony-Kameras" und "Nutzung von Sony-Kameras als Webcam".  Dieser Umstand ist gerade für Ein- und Umsteiger häufig ein Problem.

Während der Import von Mediendateien ohne viel Zutun funktioniert, muss für die Nutzung als Webcam und für das Tethering die Kommandozeile bemüht werden. Für Windows gibt es inzwischen ein Tool. Dieses ist unter Linux jedoch völlig undbrauchbar und man muss die Kommandozeile bemühen - bis jemand ein Tool schreibt, was die folgenden Schritte vereint.

 

Das folgende Tutorial basiert auf dieser englischen Anleitung. Ich ergänze lediglich um das eine oder andere Troubleshooting. Ich beziehe mich auf debianbasierte Betriebssysteme (Ubuntu, Mint uvm.) mit der Paketverwaltung apt. Unter Berücksichtigung, dass die Pakete und Paketmanager anders heißen, funktioniert die Anleitung auch unter anderen Distributionen wie Arch oder RHEL/Fedora und OpenSUSE. (siehe Quelle:dieser)

 

Ich habe für die Einrichtung mit Fehlersuche etwa 20min gebraucht.

 

Einstellungen an der Kamera (a7 III)

 

Strg. mit Smartphone -> aus

PC-Fernbedienungn     -> an

USB-Einstellung             -> PC-Fernbedienung

 

Der Modus ist egal. Ich habe aus allen Modi saubere Bilder beziehen können. Wichtig ist allerdings, dass die Stromversorgung über USB nicht gewährleistet ist. Es empfiehlt sich der Anschluss eines Netzteils, falls möglich. 

 

Vorbereitungen/benötigte Software

 

Es werden ffmpeg, v4l2loopback-dkms v4l2loopback-utils gphoto2 benötigt. Es empfiehlt sich eine Software bereit zu haben, die zum Testen der Kamera dient. Dafür eignen sich sowohl diverse Messenger (Skype) als auch vlc. 

 

Man öffne ein Terminal (Strg+Alt+T unter Ubuntu) und gebe ein:

 

 

 

sudo apt install ffmpeg gphoto2 v4l2loopback-dkms v4l2loopback-utils

 

 

 

Im Anschluss werden die zu installierenden Pakete samt ihrer Abhängigkeiten angezeigt. Man bestätige mit Enter. Installation läuft von allein.

 

Es kann nun die Kamera angesteckt werden. Ob diese auch erkannt wird, verrät ein 

 

 

lsusb

 

 

mit z.B. folgenden Outputs:

Terminaloutput von lsusb der angesteckten a7iiiTerminaloutput von lsusb der angesteckten a7iii

Dass die a7iii und vermutlich die meisten anderen Kameras im Lademodus als a6000 erkannt werden, spricht dafür, dass Sony hier kaum Entwicklungen gemacht hat. Wichtig ist ohnehin eher der zweite Output der a7III im PC-Fernbedienungsmodus. Die Kamera wird also ordnungsgemäß erkannt.

 

Konfiguration

Um den Treiber der Kamera in der laufenden Umgebung nutzbar zu machen, gibt man folgenden Befehl ein:

 

 

$ sudo modprobe v4l2loopback exclusive_caps=1 max_buffers=2

 

 

 Dies aktiviert das Kernelmodul jedoch nur für die aktuelle Sitzung. Wird der Rechner ausgeschaltet, wird beim Reboot das Modul nicht geladen.

Um das zu ändern, müssen ein paar Dateien konfiguriert werden.

Man öffne die Datei /etc/modules mit root-Rechten in einem Editor (z.B. gedit oder vim; Bsp: sudo gedit /etc/moduels) und füge folgende Zeile an Ende der Datei ein:

 

 

dslr-webcam

 

 

 dslr-webcam ist vollkommen willkürlich gewählt und könnte auch Horst heißen. 

 

Zurück im Terminal wird dann eine neue Datei angelegt:

 

 

sudo touch /etc/modprobe.d/dslr-webcam.conf

 

 

(Horst.conf, wichtig ist lediglich, dass der Name mit dem Eintrag in modules übereinstimmt!)

 

Man öffne die soeben angelegte Datei im Editor mit root-Rechten und copy-paste folgendes in die leere Datei:

 

 

# Module options for Video4Linux, needed for our DSLR Webcam
alias dslr-webcam v4l2loopback
options v4l2loopback exclusive_caps=1 max_buffers=2

 

 

 

Damit ist das Konfigurieren des Ladens der Kernel-Module für die Nutzung der Kameras abgeschlossen.

Auch ohne diese Schritte wäre die Kamera bereits nutzbar. 

Es folgt nun das Testen.

 

Testphase

 

 

gphoto2 --auto-detect

 

 

listet die erkannten Kameras auf. Wird die Kamera erkannt, kann man weitere Informationen mit gphoto2 erhalten, doch darauf gehe ich jetzt nicht weiter ein. Weitere Informationen werden in der Originalanleitung bereitgestellt.

 

Ein erstes Testbild kann mittels 

 

 

gphoto2 --capture-image-and-download

 

 

gemacht werden. Dabei triggert der Befehl den Auslöser und berücksichtigt jedoch alle weiteren Einstellungen wie z.B. die Zeiteinstellung des Selbstauslöser. Steht dieser auf 10s, dauert es auch 10s (inklusive roter Lampe!), bis das Bild gemacht wird. Das Bild wird dann abgelegt und auf den Rechner geladen. Anschließend wird es von der Kamera gelöscht. 

Die Bildbezeichnung ist eine andere als auf der Kamera und folgt dem Format captXXXX.arw, wobei das erste Bild capt0000.arw heißt.

 

Um nun den Output der Kamera als Webcam-Bild zu nutzen, muss dieser in ein virtuelles Videogerät geleitet werden. Ubuntu hat bei meinem Setup exakt drei. /de/video0, /dev/video1 und /dev/video2, wobei für mich das letzte Device ohne Fehlermeldung funktioniert.

Folgender Befehl leitet den Stream in das virtuelle Device:

 

 

gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

 

 

Wer eine dedizierte Graphikkarte hat, nutzt diesen Befehl:

 

 

gphoto2 --stdout --capture-movie | ffmpeg -hwaccel nvdec -c:v mjpeg_cuvid -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

 

 

Dabei wird das Codieren von der GraKa übernommen und entlastet somit den Prozessor.

 

Damit nimmt die Kamera bereits auf. Öffnet man nun Skype oder vlc und stellt das entsprechende Video-Device als Quelle ein, kann man die Aufnahme der Kamera sehen. Die Auflösung ist hier noch Standardmäßig bei 1024x576 Pixel. Das kann jedoch auch anders konfiguriert werden. Je nach Leistung des Systems kommt es zu einem kleinen Delay zwischen Aktion und Anzeige.

 

Hinweis: Das Terminal sollte nach Eingabe der letzten Befehle nicht geschlossen werden, da sonst der Prozess beendet wird.

 

Troubleshooting

Sieht die Ausgabe aus dem Terminal so aus:

Fehlgeschlagene Aktivierung des VideostreamsFehlgeschlagene Aktivierung des Videostreams

 

Ist die Aktivierung des Streams fehlgeschlagen. Ich konnte das Problem lösen, indem ich von /dev/video0 auf /dev/video2 wechselte. Die Ausgabe sieht dann so aus:

Terminaloutput, wenn der Stream funktioniert.Terminaloutput, wenn der Stream funktioniert.

 

Es ist noch viel Optimierungsspielraum vorhanden. Aber immerhin bedeutet dieses Lösung, dass man sich unter Linux keinen Camlink kaufen muss. Man hat also eine Alternative und auch, wenn die Community hier nicht all zu viele Linux-User haben dürfte, so kann das dennoch ein Anlaufpunkt sein. 

Ich hoffe, das hilft hier irgendjemanden. Bei Fragen und Anregungen stehe ich zur Verfügung.

 

Viele Grüße

Christian

5 Kommentare