私は自分のPCでLogitech C720ウェブカメラを使用しています。これはDevuan Beowulf GNU/Linuxを実行します(〜= Debian 10バスターですが、systemdはありません)。
関連するがLinux固有ではない SuperUserに関する質問 では、Webカメラの電源周波数設定を変更する必要があることがわかりました。
しかし-私はそれを行う方法がわかりません。私のデスクトップ環境、Cinnamonには、[システム設定]ダイアログに項目がありません。では、どうすればこの設定を行うことができますか?
コマンドラインで、uvcvideo
ドライバーの電源周波数設定を50 Hzの値に設定できます。
v4l2-ctl --set-ctrl=power_line_frequency=1
Webカメラが/dev/video0
でない場合は、正しい番号を使用して-d /dev/videoN
オプションを追加します。 v4l2-ctl
コマンドは、少なくともDebianおよび関連ディストリビューションでは、パッケージv4l-utils
に入っています。
また、v4l2-ctl -L
には、ウェブカメラで使用できる設定のリストが表示されます。また、電源周波数などの設定で使用可能な選択肢についても説明します。あなたのウェブカメラは私のものとは異なる利用可能な設定のリストを持っているかもしれません。
電源周波数設定を永続的にするには、そのudevルールを作成する必要があります。これを行うには、次の内容で/etc/udev/rules.d/81-uvcvideo.rules
という名前のファイルを作成します。
# Set power line frequency to European
ACTION=="add", SUBSYSTEM=="video4linux", DRIVERS=="uvcvideo", RUN+="/usr/bin/v4l2-ctl --set-ctrl=power_line_frequency=1"
使用しているアプリで関連設定を行うことができず、「設定アプレット」がない場合は、できるこれらのアプリを使用する設定。
有名な例は guvcview
-GNU UVCビューアプログラムです。これは、デバイスからビデオをキャプチャするためのユーティリティです Linux USBビデオクラスドライバー (UVC)起動すると、電源周波数の設定が見つかります。
これで、米国中心の60 Hzを より一般的 50 Hzに変更できます。
注:別のアプリがカメラをアクティブに使用している場合、GUVCViewは起動に失敗する可能性があります。
(これは@telcoMの回答の変形です)
(USB)ウェブカメラはLinux SBビデオクライアント ドライバーによって制御されます。それらのデバイスファイルは/dev/video0
、/dev/video1
などです。
ドライバーの設定の1つは電源周波数です。これには(通常)3つのオプションがあります。
0
は無効です。つまり、ドライバーは電圧サイクルをまったく考慮しません。1
:50 Hz(ほとんどの場合)2
for 60 Hz(米国およびその他の一部)Debianシステムで利用可能なこのドライバーの2つの代替制御ユーティリティがあります。 1つはv4l-ctl
という名前で、 telcoMの回答 でカバーされており、もう1つはuvcdynctrl
;という名前です。それは、名前の付いた package でインストールされます。つまり、次のコマンドを実行する必要があります(rootとして、またはSudo
を介して):
apt install uvcdynctrl
パッケージがインストールされたら、以下を実行します(必ずしもrootユーザーとしてではありません-それはカメラのデバイスファイルの権限に依存します)。
使用可能なデバイスをリストして、カメラが表示されることを確認します。
uvcdynctrl -l
出力は次のようになります。
Listing available devices:
video0 UVC Camera (046d:0825)
Media controller device: /dev/media0
Entity 1: UVC Camera (046d:0825). Type: 65537, Revision: 0, Flags: 1, Group-id: 0, Pads: 1, Links: 0
Device node
Entity: 1, Pad 0, Flags: 1
video1 UVC Camera (046d:0825)
Media controller device /dev/media1 doesn't exist
/dev/media0
:であるとします。webcam_device="video0"
uvcdynctrl -d${webcam_device} "--get=Power Line Frequency"
今回は、出力は単一の数値である必要があります。あなたの場合、それはおそらく60 Hzの周波数に対応する2
です。uvcdynctrl -d${webcam_device} "--set=Power Line Frequency" 1
もちろん、デバイス名がわかっている場合は、4番目のコマンドだけが必要です。
ただし、@ telcoMが指摘しているように、これは永続的な設定ではありません。永続化するには、カメラが接続されたときに実行される devルール を追加する必要があります。
/etc/udev/rules.d/81-uvcvideo.rules
という名前のファイルを作成し、内容は次のとおりです。
# Set power line frequency to 50 Hz
ACTION=="add", SUBSYSTEM=="video4linux", DRIVERS=="uvcvideo", RUN+="/usr /bin/uvcdynctrl -d$attr{name} --set=Power\\ Line\\ Frequency 1"
ノート:
$attr{name}
は、新しく接続されたデバイスの名前を保持する必要があります。 video0
、video1
など.