ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
raiuns
Beiträge: 350
Registriert: 19.06.2013 12:51:34

ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Beitrag von raiuns » 02.12.2020 10:43:28

Hi Leute,

da ich 2 gleiche USB-Kameras an einem RasPi betreibe, habe ich mit Hilfe hier aus dem Forum 2 udev-Regeln erstellt, so dass die Zuordnung der Kameras beim Booten jetzt immer gleich sein sollte, siehe

viewtopic.php?f=12&t=179425

Die Regeln sehen so aus und liefern dieses Ergebnis:

Code: Alles auswählen

$ cat /etc/udev/rules.d/60-usbvideo.rules 
SUBSYSTEM=="video4linux", KERNELS=="1-1.4:1.0", SYMLINK+="cam0"
SUBSYSTEM=="video4linux", KERNELS=="1-1.5:1.0", SYMLINK+="cam2"

$ ls -la /dev/cam*
lrwxrwxrwx 1 root root 6 Dec  1 14:02 /dev/cam0 -> video0
lrwxrwxrwx 1 root root 6 Dec  1 14:02 /dev/cam2 -> video2
Leider funktioniert bei mir aber ffmpeg nicht mit den erzeugten Symlinks - weiß jemand, ob das geht?

Also von diesen 4 Beispielen (Video aufnehmen) funktionieren nur die ersten beiden, bei den letzteren erscheint "permission denied":

Code: Alles auswählen

$ ffmpeg -i /dev/video0 -t 8 -v "debug" video/test.mp4
$ ffmpeg -i /dev/video2 -t 8 -v "debug" video/test.mp4
$ ffmpeg -i /dev/cam0 -t 8 -v "debug" video/test.mp4
$ ffmpeg -i /dev/cam2 -t 8 -v "debug" video/test.mp4
ASRock ION 330 Nettop (Intel Atom N330 1.6GHz, 2GB RAM, 320GB HDD, nVidia 9400-Ion)

KP97
Beiträge: 3452
Registriert: 01.02.2013 15:07:36

Re: ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Beitrag von KP97 » 02.12.2020 14:37:47

Du könntest in 50-udev-default.rules die Berechtigungen erweitern.
In Zeile 33 für SUBSYSTEM=="video4linux", GROUP="video" zusätzlich MODE="0664" eintragen,
also so
SUBSYSTEM=="video4linux", GROUP="video", MODE="0664"
oder aber für usb in Zeile 49
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664"

Erstmal mit 664 probieren, sonst auf 666 gehen.
Neustart nicht vergessen.

Benutzeravatar
Tintom
Moderator
Beiträge: 3036
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Beitrag von Tintom » 02.12.2020 15:28:21

Bei den Jungs (und Mädels!) von Arch steht etwas interessantes zum Thema Symlink bei Videodevices:
https://wiki.archlinux.org/index.php/udev#Video_device hat geschrieben:Note: Using names other than /dev/video* will break preloading of v4l1compat.so and perhaps v4l2convert.so
Also wenn du anstelle von cam videocam verwendest, sollte es funktionieren.

raiuns
Beiträge: 350
Registriert: 19.06.2013 12:51:34

Re: ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Beitrag von raiuns » 02.12.2020 15:55:07

Wow - da muss man erst mal drauf kommen! Werde ich testen und berichten.
ASRock ION 330 Nettop (Intel Atom N330 1.6GHz, 2GB RAM, 320GB HDD, nVidia 9400-Ion)

raiuns
Beiträge: 350
Registriert: 19.06.2013 12:51:34

Re: ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Beitrag von raiuns » 02.12.2020 16:20:18

Also jetzt habe ich eine andere Fehlermeldung:

Code: Alles auswählen

$ ffmpeg -i /dev/videocam0 -t 2 -v "error" test.mp4
[video4linux2,v4l2 @ 0x18551c0] ioctl(VIDIOC_G_INPUT): Inappropriate ioctl for device
/dev/videocam0: Inappropriate ioctl for device
zugeordnet ist jetzt video1 und 2:

Code: Alles auswählen

$ ls -al /dev/vi*
crw-rw---- 1 root video 81,  0 Dec  2 15:15 /dev/video0
crw-rw---- 1 root video 81,  1 Dec  2 15:15 /dev/video1
crw-rw---- 1 root video 81,  4 Dec  2 15:15 /dev/video10
crw-rw---- 1 root video 81,  5 Dec  2 15:15 /dev/video11
crw-rw---- 1 root video 81, 10 Dec  2 15:15 /dev/video12
crw-rw---- 1 root video 81,  6 Dec  2 15:15 /dev/video13
crw-rw---- 1 root video 81,  7 Dec  2 15:15 /dev/video14
crw-rw---- 1 root video 81,  8 Dec  2 15:15 /dev/video15
crw-rw---- 1 root video 81,  9 Dec  2 15:15 /dev/video16
crw-rw---- 1 root video 81,  2 Dec  2 15:15 /dev/video2
crw-rw---- 1 root video 81,  3 Dec  2 15:15 /dev/video3
lrwxrwxrwx 1 root root       6 Dec  2 15:15 /dev/videocam0 -> video1
lrwxrwxrwx 1 root root       6 Dec  2 15:15 /dev/videocam2 -> video2
ASRock ION 330 Nettop (Intel Atom N330 1.6GHz, 2GB RAM, 320GB HDD, nVidia 9400-Ion)

raiuns
Beiträge: 350
Registriert: 19.06.2013 12:51:34

Re: ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Beitrag von raiuns » 02.12.2020 16:35:04

KP97 hat geschrieben: ↑ zum Beitrag ↑
02.12.2020 14:37:47
Du könntest in 50-udev-default.rules die Berechtigungen erweitern.
..
SUBSYSTEM=="video4linux", GROUP="video", MODE="0664"
..
dann sagt er

Code: Alles auswählen

$ffmpeg -i /dev/cam0 -t 2 -v "error" test.mp4
/dev/cam0: Invalid argument
egal ob 0664 oder 0666
ASRock ION 330 Nettop (Intel Atom N330 1.6GHz, 2GB RAM, 320GB HDD, nVidia 9400-Ion)

Benutzeravatar
Tintom
Moderator
Beiträge: 3036
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Beitrag von Tintom » 02.12.2020 19:29:45

raiuns hat geschrieben: ↑ zum Beitrag ↑
02.12.2020 16:20:18
Also jetzt habe ich eine andere Fehlermeldung:

Code: Alles auswählen

$ ffmpeg -i /dev/videocam0 -t 2 -v "error" test.mp4
[video4linux2,v4l2 @ 0x18551c0] ioctl(VIDIOC_G_INPUT): Inappropriate ioctl for device
/dev/videocam0: Inappropriate ioctl for device
Ich hab's hier gerade noch einmal nachvollzogen. Einige Videogeräte melden sich mit zwei Gerätedateien am System an:
$ ls -lh /dev/video*
crw-rw----+ 1 root video 81, 0 Dez 2 19:09 /dev/video0
crw-rw----+ 1 root video 81, 1 Dez 2 19:09 /dev/video1
lrwxrwxrwx 1 root root 6 Dez 2 19:09 /dev/videocam0 -> video0


/dev/video0 ist das eigentliche Gerät, /dev/video1 nimmt Steuersignale entgegen. Mit der udev Regel wird nur ein Gerät zugeordnert, das andere entfällt. Anders formuliert: Wenn du mpv /dev/videocam$n eingibst, erwartet mpv, dass ein Gerät unter /dev/videocam$(n+1) existiert. Das existiert aber nicht, daher scheitert die Wiedergabe. Es braucht also eine Variable (%n) und zwar wie folgt:

SUBSYSTEM=="video4linux", KERNELS=="1-1.4:1.0", SYMLINK+="videocam-usbport-rechts%n"
SUBSYSTEM=="video4linux", KERNELS=="1-1.5:1.0", SYMLINK+="videocam-usbport-links%n"

raiuns
Beiträge: 350
Registriert: 19.06.2013 12:51:34

Re: ffmpeg funktioniert nicht mit USB-Kamera udev symlinks

Beitrag von raiuns » 03.12.2020 08:25:36

Hurra, ich kann filmen! Deine Lösung mit dem %n hat funktioniert. Jetzt sieht die Zuordnung so aus:

Code: Alles auswählen

$ ls -al /dev/vi*
crw-rw---- 1 root video 81,  0 Dec  3 07:10 /dev/video0
crw-rw---- 1 root video 81,  1 Dec  3 07:10 /dev/video1
crw-rw---- 1 root video 81,  8 Dec  3 07:10 /dev/video10
crw-rw---- 1 root video 81,  9 Dec  3 07:10 /dev/video11
crw-rw---- 1 root video 81, 10 Dec  3 07:10 /dev/video12
crw-rw---- 1 root video 81,  4 Dec  3 07:10 /dev/video13
crw-rw---- 1 root video 81,  5 Dec  3 07:10 /dev/video14
crw-rw---- 1 root video 81,  6 Dec  3 07:10 /dev/video15
crw-rw---- 1 root video 81,  7 Dec  3 07:10 /dev/video16
crw-rw---- 1 root video 81,  2 Dec  3 07:10 /dev/video2
crw-rw---- 1 root video 81,  3 Dec  3 07:10 /dev/video3
lrwxrwxrwx 1 root root       6 Dec  3 07:10 /dev/videocam-usbport-links2 -> video2
lrwxrwxrwx 1 root root       6 Dec  3 07:10 /dev/videocam-usbport-links3 -> video3
lrwxrwxrwx 1 root root       6 Dec  3 07:10 /dev/videocam-usbport-rechts0 -> video0
lrwxrwxrwx 1 root root       6 Dec  3 07:10 /dev/videocam-usbport-rechts1 -> video1
und diese Befehle funktionieren

Code: Alles auswählen

$ffmpeg -i /dev/videocam-usbport-rechts0 -t 2 -v "error" test.mp4
$ffmpeg -i /dev/videocam-usbport-links2 -t 2 -v "error" test.mp4
Und Du meinst, die Gerätenamen / Zuordnung von /dev/videocam-usbport-rechts0 und /dev/videocam-usbport-links2 sollte jetzt immer gleich bleiben? Nicht dass sich das OS darunter eine andere Numerierung der Videodevices ausdenkt?

Danke jedenfalls auch für's Nachvollziehen.

PS. warum hab ich so viele Videogerätenummern, die es gar nicht gibt?
ASRock ION 330 Nettop (Intel Atom N330 1.6GHz, 2GB RAM, 320GB HDD, nVidia 9400-Ion)

Antworten