一般化する

一般化する

私はUSBウェブカメラを持っていますが、それを接続するとレーンの結果が出ます。 (Linuxは最高だと思う独自のV4L2設定を適用するようですが、そうではありません。)主に低FPSで動作します。しかし、Guvcviewを開き、メニューから「設定」 - >「ハードウェアのデフォルト」を選択し、いくつかの修正を追加すると、より高いFPSと全体的に優れた品質が得られます。

Guvcviewを閉じて再度開くと、Guvcviewの設定はリセットされますが、変更はビデオチャットソフトウェアなどの他のアプリケーションでは引き続き機能します。ところでウェブカメラを抜くとすべての変更が消え、再接続すると品質がまた悪くなります。

今私がすることは、Guvcviewの変更を.gpflファイルとして保存することです(メニュー - >設定 - >プロファイルを保存)。 Webカメラを再接続するたびにGuvcviewを開き、「設定の読み込み」ファイル「設定ファイルの読み込み」を使用します。

この設定をやり直さずにこの特定のビデオデバイスにのみ適用し、他のデバイスには適用しないように設定を維持するにはどうすればよいですか?

答え1

あなたはできません。停電後、すべてのカメラはデフォルト設定に戻ります。 (つまり、再接続してコンピュータを再起動するなど)これはハードウェアの特性です。

答え2

これを試してみてください❗(まだしていない場合は...)Logitech C920を使用してDebian 11とUbuntu 22.04でこれをテストしました。私はDebianシステムで毎日使用しています。通常、私はLinuxで「できない」ことを信じていません。

一般化する

  1. Linuxデバイスの名前を学ぶ
  2. ログイン時に実行するスクリプトの作成
  3. Linux自動起動でスクリプトを指します。

詳細

Linuxデバイスの名前を学ぶ

端末から:ない場合はインストールしてください。v4l-utils。次に、次のコマンドを実行します。

v4l2-ctl --list-devices

次のような出力が表示されます。

HD Pro Webcam C920 (usb-0000:00:14.0-10.3):
    /dev/video2
    /dev/video3
    /dev/media1

USB Video: USB Video (usb-0000:00:14.0-10.4):
    /dev/video4
    /dev/video5
    /dev/media2

私の場合はWebカメラ(Logitech C920)を使用しているので、/dev/video2次のスクリプトでこれを指定します。

ログイン時に実行するbashスクリプトを作成する

これを行う方法はいくつかあります。以下は2つあります。

権限を取得した後、sudoスクリプトを/usr/local/bin.私は私の名前で指定しました。c920.sh

オプション1:guvcviewの使用

例:

#!/bin/bash

sleep 10
guvcview -d /dev/video2 --profile=<profile_name>.gpfl &
sleep 1
pkill -f "guvcview"

プロファイル名をプロファイルを保存した名前に変更し、パスを含めます。

このスクリプトは guvcview を実行し、正しい設定ファイルを使用して必要なデバイスを指定します。ログイン時に多くのことを始めた場合に備えて、睡眠時間を追加しました。ニーズに合わせて調整してください。その後、スクリプトは guvcview プロセスを終了します。それはすべてです。

man guvcview良いものがたくさんあります。

オプション2:v4l-utilsの使用

#!/bin/bash
sleep 10
v4l2-ctl -d /dev/video2 -c brightness=125
v4l2-ctl -d /dev/video2 -c contrast=126
v4l2-ctl -d /dev/video2 -c saturation=115
v4l2-ctl -d /dev/video2 -c white_balance_temperature_auto=0
v4l2-ctl -d /dev/video2 -c gain=175
v4l2-ctl -d /dev/video2 -c power_line_frequency=2
v4l2-ctl -d /dev/video2 -c white_balance_temperature=4515
v4l2-ctl -d /dev/video2 -c sharpness=128
v4l2-ctl -d /dev/video2 -c backlight_compensation=0
v4l2-ctl -d /dev/video2 -c exposure_auto=1
v4l2-ctl -d /dev/video2 -c exposure_absolute=250
v4l2-ctl -d /dev/video2 -c exposure_auto_priority=0
v4l2-ctl -d /dev/video2 -c focus_auto=0

注:このプログラムには、2024年1月現在のコントロール名が異なる最新バージョンがあります。新しい設定については、この記事の最後を参照してください。

注:私は2番目のオプションを選択しました。guvcview他のプログラムと競合して、他の結果が出る可能性があります。一度に1つのWebカメラ設定プログラムを試してください。つまり、競合が発生した場合(ゲインなどの設定値が突然変更された場合)、お気に入りの設定を見つけることができます。guvcviewその後、プログラムをアンインストールし、次のコマンドを使用して設定を構成します。v4l-utils図1に示すように。 vl4は実際に私が使用するものであり、これらの設定は私の研究室(暗い背景)で動作しますが、調整が必要な場合があります!また、解像度とFPSを考慮しません。ただし、別のプログラムを使用してこれを設定すると、Linuxの「メモリ」に残る必要があります。

スクリプトを実行可能にします。chmod +x c920.sh

Linux自動起動でスクリプトを指します。

これを行う方法はいくつかあります。ここではデスクトップ項目を使用しています。移動して/etc/xdg/autostart.desktopファイルを作成します。c920.desktop名前で選択しました。

以下を追加してください。

[Desktop Entry]
Type=Application
Exec=/usr/local/bin/c920.sh

ログアウトして再起動してみてください。動作していることを確認してください

この解決策は単なる可能性です。 Linuxにはいくつかあります!

複数のビデオデバイスと複数のパスがあると、不安定な問題が発生する可能性があります。トラブルシューティングを準備してください!通常、これは2つのWebカメラ設定プログラムの間に競合があることを意味します。 udevルールやLinuxサービスのユニットファイルを調べることも検討できます。詳しくは下記リンクをご覧ください。誰かが.bashrcにスクリプト(コマンド)を置くことについて言及しましたが、forループに統合しない限り、bashシェル/ターミナルを開くたびに実行されるため、問題があります。また、一部の人々はC922および/またはBrio(特にUbuntuで)を使用してより良い幸運を楽しむことがあります。

このリンクv4l-utils一般的に、LinuxでWebカメラを有効にして設定する方法に関する多くの情報があります。

最後の注意:理想的な世界では、Logitech、Razer、Rodeなどの企業がLinuxコミュニティに対応します。単純なGUIインタフェースとドライバの要件は高くないと思います。私は.debバージョンを選択して起動します!

関連情報