This is the archived version of Roland Weigelt's weblog that ran from 2003 to 2023 at weblogs.asp.net

Save and Restore Webcam Properties with CamProps 1.2.0

CamProps is a free utility for quickly adjusting and managing the properties of webcams and other video capture devices. I wrote it when I struggled with my Logitech C920 that required some manual tweaking to achieve a good picture quality. CamProps enables you to store and quickly recall settings which comes in handy if you have different lighting situations in your room – or when the webcam once again simply “forgets” its settings.

About this version

I recently I received feedback from CamProps user José M. Alarcón (who also helped me with the Spanish translation). He has created a large number of presets to deal with the ever-changing lighting conditions in his office. It turned out that the auto-sizing of the main window did not work well, cutting off the list after an arbitrary number of items instead of showing a scroll bar.

Version 1.2.0 fixes this. As previously, the window sizes to its content at startup, but can now be resized and shows a scrollbar if necessary. When you add a new configuration, the window resizes to fit its content.

Where can I get it?

You can download CamProps at https://www.roland-weigelt.de/camprops/

Which devices can I use?

CamProps works with all webcams and video capture devices that support opening the webcam driver property dialog (either the default provided by Windows or a specific dialog by the manufacturer's driver).

For instance, when you press the “” button for a Logitech C920 without the Logitech software installed, this will open the following dialog:

(This dialog may look different for other devices)

5 Comments

  • I was not aware about Campros. Thanks for educating me!

  • Hi, thanks for this app, I've found it really useful!
    FYI it's no longer starting for me with Win 11 version 10.0.22621 Build 22621
    ```
    Application: CamProps.exe
    CoreCLR Version: 5.0.1722.21314
    .NET Version: 5.0.17
    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.Runtime.InteropServices.COMException (0x8000FFFF): Catastrophic failure (0x8000FFFF (E_UNEXPECTED))
    at System.Runtime.InteropServices.ComTypes.IMoniker.BindToObject(IBindCtx pbc, IMoniker pmkToLeft, Guid& riidResult, Object& ppvResult)
    at Weigelt.CamProps.Devices.VideoDevice..ctor(DsDevice dsDevice) in D:\Development\Projects\Git\CamProps\CamPropsLib\Devices\VideoDevice.cs:line 40
    at Weigelt.CamProps.Services.VideoDeviceAccess.SwitchToDeviceIfNecessary(VideoDeviceInfo videoDeviceInfo) in D:\Development\Projects\Git\CamProps\CamPropsLib\Services\VideoDeviceAccess.cs:line 53
    at Weigelt.CamProps.Services.VideoDeviceAccess.IsSupportedDevice(VideoDeviceInfo videoDeviceInfo) in D:\Development\Projects\Git\CamProps\CamPropsLib\Services\VideoDeviceAccess.cs:line 74
    at Weigelt.CamProps.ViewModels.VideoDeviceInfoService.<>c__DisplayClass2_0.<Refresh>b__2(VideoDeviceInfo deviceInfo) in D:\Development\Projects\Git\CamProps\CamProps\ViewModels\VideoDeviceInfoService.cs:line 42
    at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
    at Weigelt.CamProps.ViewModels.VideoDeviceInfoService.<>c__DisplayClass2_0.<Refresh>g__performRefresh|0() in D:\Development\Projects\Git\CamProps\CamProps\ViewModels\VideoDeviceInfoService.cs:line 45
    at Weigelt.AthleticPixels.ViewModels.EnhancedObservableCollection`1.PerformBulkAction(Action action) in D:\Development\Projects\Git\CamProps\CamProps\ViewModels\EnhancedObservableCollection.cs:line 192
    at Weigelt.CamProps.ViewModels.VideoDeviceInfoService.Refresh() in D:\Development\Projects\Git\CamProps\CamProps\ViewModels\VideoDeviceInfoService.cs:line 32
    at Weigelt.CamProps.App.HandleApplicationStartup(Object sender, StartupEventArgs e) in D:\Development\Projects\Git\CamProps\CamProps\App.xaml.cs:line 50
    ```
    Cheers!

  • Update: My issue was not related to the windows update, but was instead because I have a https://en.ids-imaging.com/store/ui-1482le-rev-2.html plugged into my PC - this camera causes the crash in VideoDeviceAccess.SwitchToDeviceIfNecessary()

    This camera does not work as a standard windows camera (does not work in other camera apps) so I wouldn't expect it to work with camprops.

    Patching VideoDeviceAccess worked for me:

    public bool IsSupportedDevice(VideoDeviceInfo videoDeviceInfo)
    {
    if (videoDeviceInfo.Device == null)
    {
    return false;
    }
    bool result;
    try
    {
    this.SwitchToDeviceIfNecessary(videoDeviceInfo);
    result = this._currentVideoDevice.IsSupportedDevice;
    }
    catch (COMException)
    {
    result = false;
    }
    return result;
    }

  • Hi Andrew,
    Thank you for the details on the exception! I will look into this at the end of the week and release a new version.

  • Version 1.2.1 is available at https://www.roland-weigelt.de/camprops/
    The application now runs on .NET 6 instead of .NET 5.