Я только начал использовать v4l2
(для Python 3
) на Ubuntu 16.04.
Код примера документации v4l2 как есть (с открытым как 'rw')?
Я пытаюсь запустить образец из документации v4l2 Python, а именно:
$ cat demo4SO.py
#!/usr/bin/env python3
import v4l2
import fcntl
vd = open('/dev/video0', 'rw')
#vd = open('/dev/video0', 'r')
cp = v4l2.v4l2_capability()
fcntl.ioctl(vd, v4l2.VIDIOC_QUERYCAP, cp)
print("driver:",cp.driver)
print("card:",cp.card)
Но я получаю:
$ python3 demo4SO.py
Traceback (most recent call last):
File "demo4SO.py", line 6, in <module>
vd = open('/dev/video0', 'rw')
ValueError: must have exactly one of create/read/write/append mode
У меня такая же ошибка, даже при работе с sudo.
Попытка открыть с «ш +» (или «г +»), я получаю:
$ python3 demo4SO.py
Traceback (most recent call last):
File "demo4SO.py", line 8, in <module>
vd = open('/dev/video0', "w+")
io.UnsupportedOperation: File or stream is not seekable.
Если я изменяю «Rw» (или «ш +» или «г +») на «г», код работает ожидается.
$ cat demo4SO.py
#!/usr/bin/env python3
import v4l2
import fcntl
#vd = open('/dev/video0', 'rw')
vd = open('/dev/video0', 'r')
cp = v4l2.v4l2_capability()
fcntl.ioctl(vd, v4l2.VIDIOC_QUERYCAP, cp)
print("driver:",cp.driver)
print("card:",cp.card)
$ python3 demo4SO.py
driver: b'uvcvideo'
card: b'Intel(R) RealSense(TM) 410'
Мое имя пользователя принадлежит к группе видеоустройства, так что проблема не кажется, связана с правами доступа:
$ groups
openstack root sudo video staff
$ ls -ls /dev/video0
0 crw-rw----+ 1 root video 81, 0 פבר 14 11:31 /dev/video0
Любая идея, почему я не могу запустить образец кода в документации по как это (с «rw»)?