2017-02-14 11 views
0

Я только начал использовать 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»)?

ответ

1

Изменение

vd = open('/dev/video0', 'rw') 

в

vd = open('/dev/video0', 'rb+', buffering=0) 

позволяет открыть файл с правами O_RDWR.

 Смежные вопросы

  • Нет связанных вопросов^_^