Webカメラの電力線周波数設定をどのように変更しますか?

Webカメラの電力線周波数設定をどのように変更しますか?

私はDevuan Beowulf GNU / Linux(〜= Debian 10 Buster、systemdなし)を実行しているPCでLogitech C720ウェブカメラを使用しています。

関連しているがLinuxとは関係のない特定の項目では、スーパーユーザーに関する質問、Webカメラの電力線周波数設定を変更する必要があることがわかりました。

しかし、どうすればいいのかわかりません。マイデスクトップ環境Cinnamonの[システム設定]ダイアログボックスには対応するエントリがありません。では、これをどのように設定しますか?

答え1

コマンドラインで、以下をuvcvideo使用してドライブの電力線周波数を50Hzの値に設定できます。

v4l2-ctl --set-ctrl=power_line_frequency=1

Webカメラではない場合は、正しい番号でオプションを/dev/video0追加してください。-d /dev/videoNこのコマンドは、少なくともDebianおよび関連ディストリビューションではv4l2-ctlpackageにあります。v4l-utils

また、v4l2-ctl -LWebカメラで利用可能な設定の一覧が表示されます。また、電力線周波数などの設定に使用できるオプションについても説明します。 Webカメラの利用可能な設定のリストは私とは異なる場合があります。

電力線周波数設定を同じに保つには、そのための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"

答え2

使用しているアプリケーションで関連設定ができず、「設定アプレット」がない場合は、次のアプリケーションを使用してください。できる次の設定を行います。

代表的な例はguvcview- GNU UVCビューアプログラム。デバイスからビデオをキャプチャするユーティリティです。Linux USBビデオクラスドライバ(UV).起動すると、電力線周波数設定を見つけることができます。

ここに画像の説明を入力してください。

これで、米国中心の60Hzを次のように変更できます。一般的に比較的一般的です。50Hz。

メモ:

  • 他のアプリケーションがカメラをアクティブに使用している場合、GUVCViewが起動しないことがあります。
  • このように頻度を設定すると、システムを再起動しても持続しません。

答え3

Linux UVCドライバを使用した制御ユーティリティ

(これは@telcoMの答えの変形です)

(USB) Linuxで制御されるウェブカメラUSBビデオクライアントドライバー。対応するデバイスファイル/dev/video0などは次のとおりです/dev/video1

ドライブ設定の1つは電力線周波数であり、一般的に3つのオプションがあります。

  • 0無効な場合、つまりドライバは電圧サイクルをまったく考慮しません。
  • 150Hz(世界大半)
  • 260Hz(米国およびその他の一部の国)

Debianシステムには、このドライバに使用できる2つの代替制御ユーティリティがあります。そのうちの1つの名前はですv4l-ctlテレコムの答え、同じ名前で別の名前がuvcdynctrlインストールされました。パックつまり、次のコマンドを実行する必要があります(rootまたは経由sudo):

apt install uvcdynctrl

パッケージをインストールしたら、次の手順を実行します(必ず root としてログインする必要はなく、カメラデバイスファイルの権限によって異なります)。

  1. カメラが見えるように利用可能なデバイスを一覧表示します。

    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
    
  2. お使いのデバイスが次のとおりです/dev/media0
    webcam_device="video0"
    
  3. 現在の電力線周波数設定を取得します。
    uvcdynctrl -d${webcam_device} "--get=Power Line Frequency"
    
    今回は出力が数値でなければなりません。あなたの場合は260Hzの周波数に対応することができます。
  4. 新しい電力線周波数を設定します。
    uvcdynctrl -d${webcam_device} "--set=Power Line Frequency" 1
    

もちろん、デバイス名を知っている場合は、4番目のコマンドだけが必要です。

設定を維持する

しかし、@telcoMが指摘したように、これは継続的な設定ではありません。継続的に作成するには、以下を追加する必要があります。udevルール、カメラが接続されると起動します。

/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
  • 理論的には、これはデバイスに関係なくグローバルに設定できます。しかし - 誰が知っていますか?たぶん、電力線の周波数補正を必要としない自然光が入ってくる部屋をカメラで指しているのかもしれません。
  • 上記のルールはテストされていません(!)

関連情報