веб-камера в VirtualBox

dangerr

Хочу пробросить камеру в гостевую систему.
Хост - Gentoo
Гость - Ubuntu 12.04
GuestAdditions поставил.
Подключаю веб-камеру к USB, проверяю на хосте: mplayer tv:///dev/video0 и вижу свою рожу, закрываю mplayer.
Далее выбираю внизу окна VirtualBox иконку usb и там ставлю галку напротив своей веб-камеры. На хосте устройство /dev/video0 пробадает, а в госте - появляется. Запускаю mplayer tv:///dev/video0 и вижу окно, равномерно залитое зелёным и периодически на этом зелёном возникают разные артефакты. 3D-ускорение не включал, поэтому vo используется x11. Попробовал для проверки включить - не помогло. 2D-видеоускорение помечено как неактивная опция и, судя по документации, доступно только для windows-гостей.
Куда копать?

Dimon89

В метод вывода mplayer'а, скорее всего. У меня в гостевой убунте 12.04 всё ок, но софт другой использую.

dangerr

Я ж использую x11, который не требует ускорения. То есть всё должно быть ок.
Софт другой используешь - это в смысле не virtualbox?

elenangel

попробуй через vlc открыть свою камеру

dangerr

вот такое выдаёт:

Your input can't be opened:
VLC is unable to open the MRL 'v4l2:///dev/video0'. Check the log for details.

Погуглил где этот лог находится, установил в окне messages verbosity на 2 (debug) и открыл ещё раз:


main debug: adding item `v4l2:///dev/video0' ( v4l2:///dev/video0 )
main debug: rebuilding array of current - root Playlist
main debug: rebuild done - 2 items, index 0
main debug: processing request item: v4l2:///dev/video0, node: null, skip: 0
main debug: resyncing on v4l2:///dev/video0
main debug: v4l2:///dev/video0 is at 1
main debug: starting playback of the new playlist item
main debug: resyncing on v4l2:///dev/video0
main debug: v4l2:///dev/video0 is at 1
main debug: creating new input thread
main debug: Creating an input for 'v4l2:///dev/video0'
main debug: TIMER input launching for 'v4l2:///dev/video0' : 206532.844 ms - Total 206532.844 ms / 1 intvls (Avg 206532.828 ms)
qt4 debug: Adding a new MRL to recent ones: v4l2:///dev/video0
main debug: using timeshift granularity of 50 MiB, in path '/tmp'
main debug: `v4l2:///dev/video0' gives access `v4l2' demux `' path `/dev/video0'
main debug: creating demux: access='v4l2' demux='' location='/dev/video0' file='/dev/video0'
main debug: looking for access_demux module: 1 candidate
v4l2 debug: opening device '/dev/video0'
v4l2 debug: trying kernel V4L2
v4l2 debug: device FaceCam 1020 using driver uvcvideo (version 3.2.24) on usb-0000:00:06.0-2
v4l2 debug: the device has the capabilities: 0x05000001
v4l2 debug: (X) Video Capture, ( ) Audio, ( ) Tuner, ( ) Radio
v4l2 debug: (X) Read/Write, (X) Streaming, ( ) Asynchronous
v4l2 debug: video input 0 (Camera 1) has type: External analog input *
v4l2 error: cannot set input 0: Device or resource busy
v4l2 debug: trying library V4L2
v4l2 debug: device FaceCam 1020 using driver uvcvideo (version 3.2.24) on usb-0000:00:06.0-2
v4l2 debug: the device has the capabilities: 0x05000001
v4l2 debug: (X) Video Capture, ( ) Audio, ( ) Tuner, ( ) Radio
v4l2 debug: (X) Read/Write, (X) Streaming, ( ) Asynchronous
v4l2 debug: video input 0 (Camera 1) has type: External analog input *
v4l2 error: cannot set input 0: Device or resource busy
main debug: no access_demux module matching "v4l2" could be loaded
main debug: TIMER module_need() : 4.571 ms - Total 4.571 ms / 1 intvls (Avg 4.571 ms)
main debug: creating access 'v4l2' location='/dev/video0', path='/dev/video0'
main debug: looking for access module: 1 candidate
v4l2 debug: opening device '/dev/video0'
v4l2 debug: trying kernel V4L2
v4l2 debug: device FaceCam 1020 using driver uvcvideo (version 3.2.24) on usb-0000:00:06.0-2
v4l2 debug: the device has the capabilities: 0x05000001
v4l2 debug: (X) Video Capture, ( ) Audio, ( ) Tuner, ( ) Radio
v4l2 debug: (X) Read/Write, (X) Streaming, ( ) Asynchronous
v4l2 debug: video input 0 (Camera 1) has type: External analog input *
v4l2 error: cannot set input 0: Device or resource busy
v4l2 debug: trying library V4L2
v4l2 debug: device FaceCam 1020 using driver uvcvideo (version 3.2.24) on usb-0000:00:06.0-2
v4l2 debug: the device has the capabilities: 0x05000001
v4l2 debug: (X) Video Capture, ( ) Audio, ( ) Tuner, ( ) Radio
v4l2 debug: (X) Read/Write, (X) Streaming, ( ) Asynchronous
v4l2 debug: video input 0 (Camera 1) has type: External analog input *
v4l2 error: cannot set input 0: Device or resource busy
main debug: no access module matching "v4l2" could be loaded
main debug: no fetch required for (null) (art currently (null))
main debug: TIMER module_need() : 28.152 ms - Total 28.152 ms / 1 intvls (Avg 28.152 ms)
main error: open of `v4l2:///dev/video0' failed
main debug: finished input
main debug: dead input
main debug: changing item without a request (current 1/2)
main debug: nothing to play

То есть типа моей камерой уже какой-то софт пользуется? Я сейчас всё делал со свежим запуском виртуалки только установил vlc и открыл камеру. То есть никаких приложений, которые бы могли занять камеру не запускал. Это, что, сама убунта гадит?

elenangel

я открывал через вот эту тычку:

через устройство захвата бывает не получается.
это во первых.
во вторых, ты virtual box puel или ose поставил?
надо первую и к ней плагин

Dimon89

Софт другой используешь - это в смысле не virtualbox?
VirtualBox, но не mplayer.

dangerr

1) Через эту тычку абсолютно то же самое.
2) Честно говоря, не уверен. Раньше в Gentoo были пакеты virtualbox-bin и virtualbox-ose, которые соответствовали puel и ose версиям. А сейчас есть просто virtualbox и он у меня стоит. В приведённом тобой меню плагинов не наблюдается. Вообще, насколько я понимаю, если бы этой самой поддержки usb бы не было, то не было бы такого меню в настройках конкретной виртуалки и не было бы значка USB внизу.
На всякий случай USE-флаги, с которыми поставлен vbox:
additions alsa opengl qt4 -doc -elibc_FreeBSD -extensions -headless -java -pam -pulseaudio -python -sdk -vboxwebsrv -vnc

serega1604

они вроде начиная где-то с 4.0 всю закрытую часть в плагины вынесли, так что теперь нет разделения на ose/bin, разница только в том, какие у тебя плагины стоят.

dangerr

Я, кажись, понял.
OSE версия, по всей видимост, тоже поддерживает USB, но только не 2.0, который, полагаю, моей камере необходим, поэтому-то значёк USB и присутствует.
Я переставил vbox с USE=extensions и появилось то, что на втором скрине у . Ещё стало возможным включить поддержку USB 2.0 в настройках конкретной машины.
Отлично! Включил, запустил, смотрю. Себя я, вроде как вижу, но при этом картинка как-то неправильно обновляется. То есть вместо того, чтобы начинать обновление с левого верхнего угла, каждый кадр или несколько кадров точка обновления рандомно перемещается в пределах окна. ну то есть я много раз вижу какие-то фрагменты изображения в по сути рандомных местах. Это, несомненно, лучше, чем зелёный экран, но совсем не то, что бы хотелось иметь.
Пробовал включать-выключать поддержку 3D, отключать эффекты в Ubuntu, которые автоматом запустились при включении поддержки 3D. Не помогает.
Оставить комментарий
Имя или ник:
Комментарий: