ubuntuusers.de

Problem mit gphoto2, gestreamer & v4l2

Status: Ungelöst | Ubuntu-Version: Ubuntu GNOME 16.10 (Yakkety Yak)
Antworten |

FreddyGreve

Avatar von FreddyGreve

Anmeldungsdatum:
12. Oktober 2009

Beiträge: 260

Wohnort: Freiburg

Hallo ihr Lieben,

ich möchte meine Canon EOS 600D (DSLR) als Webcam am PC nutzen. Mit gphoto sollte das kein Problem sein. Ich kann über gphoto Fotos und Videos aufnehmen. Allerdings gelingt es mir nicht, die Kamera als Webcam einzubinden. Laut Netz sollte es mit diesen zwei Befehlen funktionieren:

1
2
modprobe v4l2loopback
gphoto2 --stdout --capture-movie | gst-launch-0.10 fdsrc ! decodebin2 name=dec ! queue ! ffmpegcolorspace ! v4l2sink device=/dev/video0

modprobe läuft ohne Probleme. Beim zweiten Kommando gibt er mir:

ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: »/dev/video0« ist kein Wiedergabegerät.
Additional debug info:
v4l2_calls.c(514): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:
Capabilities: 0x85200001
Setting pipeline to NULL ...
Freeing pipeline ...
Nehme Vorschaubilder als Film in 'stdout' auf. Drücke Ctrl-C zum abbrechen.

Wenn ich es mit /dev/video1 versuche bekomme ich:

Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Abfrage der Attribute der Eingabe »0« im Gerät »/dev/video1« schlug fehl
Additional debug info:
v4l2_calls.c(134): gst_v4l2_fill_lists (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:
Failed to get 0 in input enumeration for /dev/video1. (25 - Unpassender IOCTL (I/O-Control) für das Gerät)
Setting pipeline to NULL ...
Freeing pipeline ...
Nehme Vorschaubilder als Film in 'stdout' auf. Drücke Ctrl-C zum abbrechen.

Leider konnte ich bisher keine Lösung finden. Freue mich über Hilfe.

LG Freddy

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

fred-frog schrieb:

Allerdings gelingt es mir nicht, die Kamera als Webcam einzubinden.

Was meinst du hier mit "einbinden"?

Laut Netz sollte es mit diesen zwei Befehlen funktionieren:

1
2
modprobe v4l2loopback
gphoto2 --stdout --capture-movie | gst-launch-0.10 fdsrc ! decodebin2 name=dec ! queue ! ffmpegcolorspace ! v4l2sink device=/dev/video0

Beim zweiten Befehl versuchst du mit gstreamer das Videosignal nach /dev/video0 zu senden.

ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: »/dev/video0« ist kein Wiedergabegerät.
Additional debug info:
v4l2_calls.c(514): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:
Capabilities: 0x85200001
Setting pipeline to NULL ...
Freeing pipeline ...
Nehme Vorschaubilder als Film in 'stdout' auf. Drücke Ctrl-C zum abbrechen.

Aber gstreamer meint, das waere kein Wiedergabegeraet. Wenn du das Video erstmal nur anzeigen willst, kannst du als letztes Element in der gstreamer-pipeline xvimagesink angeben, dann wissen wir, ob der Rest der Pipeline funktioniert. Eventuell noch ein videoconvert davor, immer mit ! getrennt.

Hier habe ich einen aehnlichen Bugreport gefunden: https://github.com/umlaeute/v4l2loopback/issues/97 Die Loesung dort war modprobe v4l2loopback exclusive_caps=0 zu verwenden. Kannst du das mal probieren?

Antworten |