0

私は EYE に 2 つの Web カメラを使用するロボット プロジェクトを行っています。

/dev/video0 と /dev/video1 を作成する USB で PC に 2 つの Web カメラを接続していますが、問題は、カメラが Skype などのソフトウェアで使用されている場合に失敗することがあります。Linux 自体の製造元のドライバーが /dev/video0 または /dev/video1 を非表示にする問題になる可能性があるため (手動で物理的にプラグを抜き差ししない限り、場合によっては、リモート/ロボティクス プロジェクトなどで不可能な場合があります。目として使用するには、100% のカメラの可用性が必要です)。

それを修正するために、スクリプトを実行しました:

### Logitech camera lost
target="/dev/video99"
foundon="none"
warn="[WARNING]:"
ok="[OK]:"
for i in 0 1 2 3 4
do
tmp="/dev/video$i"
if [ -e $tmp ]
then
  foundon="/dev/video$i"
else
  echo "no $i"
fi
done

b="none"
if [ "$foundon" = "$b" ]
then
  echo "$warn No camera is found"
  echo "$warn Auto restarting /var/tmp/runme.sh"
  /var/tmp/runme.sh &
else
  echo "$ok ln -s $foundon $target"
  echo password | sudo -S ln -sf $foundon $target
  echo password | sudo -S chmod -R 777 $target
fi
ls /dev/vid*

/dev/video9 に永続的に配置される仮想 1 イメージまたは空のイメージ ベースのダミー ビデオ デバイス インターフェイスを作成する必要があります。ダミー ビデオ デバイスを取得したら、元のカメラが突然失われる原因をデバッグ/特定できます。

Q. アプリケーションがビデオ ソース入力として使用するときに、1 つの jpeg またはビデオ クリップを表示するカメラ ソースとして実際に機能する仮想 /dev/video9 を作成するにはどうすればよいですか? (例: スカイプまたはその他..)

4

1 に答える 1

0

できます!

ステップ1:

$ apt-get install linux-headers-3.5.0-17-generic

$ apt-get install v4l2loopback-dkms
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  module-assistant v4l-utils
Use 'apt-get autoremove' to remove them.
Suggested packages:
  v4l2loopback-utils
The following NEW packages will be installed:
  v4l2loopback-dkms
0 upgraded, 1 newly installed, 0 to remove and 506 not upgraded.
Need to get 0 B/24.7 kB of archives.
After this operation, 115 kB of additional disk space will be used.
Selecting previously unselected package v4l2loopback-dkms.
(Reading database ... 201818 files and directories currently installed.)
Unpacking v4l2loopback-dkms (from .../v4l2loopback-dkms_0.6.1-1_all.deb) ...
Setting up v4l2loopback-dkms (0.6.1-1) ...
Loading new v4l2loopback-0.6.1 DKMS files...
First Installation: checking all kernels...
Building only for 3.5.0-17-generic
Building initial module for 3.5.0-17-generic
Done.

v4l2loopback:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/3.5.0-17-generic/updates/dkms/

depmod....

DKMS: install completed.

root@sun-M14xR2:~# modprobe v4l2loopback video_nr=5
or
echo "v4l2loopback video_nr=0" >> /etc/modules

root@sun-M14xR2:~# v4l2-sysfs-path
Video device: video0
Video device: video3
Alsa playback device(s): hw:1,3 hw:0,0 hw:0,3

ステップ2:

#!/bin/bash
while true
do
    target="/dev/video99"
    foundon="none"
    warn="[WARNING]:"
    ok="[OK]:"
    for i in 1 2 3 4
    do
        tmp="/dev/video$i"
        if [ -e $tmp ]
        then
          foundon="/dev/video$i"
        else
          echo "no $i"
        fi
    done

    b="none"
    if [ "$foundon" = "$b" ]
    then
        echo "$warn No camera is found"
        echo "$warn Auto restarting /var/tmp/runme.sh"
        pp=$(ps aux | grep "sink" | grep -v "grep" | awk '{print $2}')
        if [ -z "$pp" ]
        then
            export DISPLAY=:0.0 && sink device=/dev/video0 &
        fi
        echo pass | sudo -S ln -sf /dev/video0 /dev/video99
        echo pass | sudo -S chmod -R 777 /dev/video99
    else
        echo "$ok ln -s $foundon $target"
        ps aux | grep "sink" | grep -v "grep" | awk '{print $2}' | xargs kill -9;
        echo pass | sudo -S ln -sf $foundon $target
        echo pass | sudo -S chmod -R 777 $target
    fi

ls /dev/video*
sleep 1
done
于 2013-08-03T15:07:51.660 に答える