A Windows application for renaming USB cameras in the Registry for better identification in streaming software like OBS.
CamRenamer allows you to easily rename USB cameras by changing their names directly in the Windows Registry. This is particularly useful for:
- Streaming: Unique camera names in OBS, XSplit, and other applications
- Multi-Camera Setups: Better organization of multiple cameras
- Professional Production: Clear identification of cameras by location/function
- ๐ Automatic Camera Detection: Finds all connected USB cameras
- โ๏ธ Easy Renaming: Intuitive user interface for changing names
- ๐ Registry Integration: Direct changes in the Windows Registry
- ๐ Unicode Support: Full support for international characters
- ๐จ Modern Design: Dark theme with user-friendly interface
- โก PowerShell Fallback: Alternative method for registry issues
- ๐ก๏ธ Error Handling: Robust handling of permission errors
- Windows 10/11 (required for Registry access)
- Python 3.12+ (for development)
- Administrator rights (for Registry changes)
- Download the latest version from Releases
- Extract the ZIP file
- Run
CamRenamer.exeas Administrator
# Clone repository
git clone https://github.com/oe7set/camrenamer.git
cd camrenamer
# Install dependencies
uv sync
# Start application
uv run python src/main.py# Clone repository
git clone https://github.com/oe7set/camrenamer.git
cd camrenamer
# Create virtual environment
python -m venv venv
venv\Scripts\activate
# Install dependencies
pip install -e .[dev]
# Start application
python src/main.py-
Run as Administrator: Right-click on the application โ "Run as administrator"
-
Scan Cameras:
- Click on "๐ Scan Cameras" or press F5
- All connected USB cameras will be listed
-
Select Camera:
- Click on a row in the table
- The current name will be displayed in the input field
-
Rename:
- Enter the new name
- Click on "โ Rename" or press Enter
- Confirm the change
-
Done:
- The change is immediately saved in the Registry
- A restart may be required for full effectiveness
| Keyboard Combination | Action |
|---|---|
F5 |
Refresh camera list |
Ctrl+L |
Clear table |
Ctrl+Q |
Exit application |
F1 |
Show about dialog |
Enter |
Rename selected camera |
# Clone repository
git clone https://github.com/oe7set/camrenamer.git
cd camrenamer
# Development environment with uv
uv sync --group dev
# Or with pip
pip install -e .[dev]# All tests
uv run pytest
# With Coverage
uv run pytest --cov=src --cov-report=html
# Unit tests only
uv run pytest -m "unit"
# Integration tests only
uv run pytest -m "integration"# Linting with Ruff
uv run ruff check src/
# Check formatting
uv run ruff format --check src/
# Type checking with mypy
uv run mypy src/# Executable with PyInstaller
uv run pyinstaller --windowed --onefile --icon=src\img\icon.ico --name CamRenamer src/main.py
# Or with auto-py-to-exe (GUI)
uv run auto-py-to-exeCamRenamer/
โโโ src/
โ โโโ img/
โ โ โโโ icon.ico
โ | โโโ icon.png
โ โโโ main.py
โ โโโ resources.py #auto gen ps1"cd src;pyside6-rcc resources.qrc -o resources.py"
โ โโโ resources.qrc
โโโ pyproject.toml
โโโ uv.lock
โโโ LICENSE
โโโ README.md
- GUI Framework: PySide6 (Qt6)
- Threading: QThread for asynchronous operations
- Registry Access: winreg + PowerShell Fallback
- Camera Detection: PowerShell Get-PnpDevice
- Design: Dark Theme with modern UI
The application searches in the following Registry paths:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\{DeviceID}
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{GUID}
- UTF-8 Encoding for PowerShell output
- Error handling for invalid characters
- Support for international camera names
- Administrator rights required: Registry changes require elevated permissions
- Backup recommended: Create a Registry backup before major changes
- Antivirus: Some antivirus programs may block Registry access
Solution: Run application as Administrator
Solution: Restart system or reconnect camera
Solution: Check PowerShell execution policy:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser- ๐ Bug Reports: GitHub Issues
- ๐ก Feature Requests: GitHub Discussions
Contributions are welcome! Please note:
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Branch pushen (
git push origin feature/amazing-feature) - Create Pull Request
- Use Python 3.12+
- Follow PEP 8 style (automatic with Ruff)
- Write tests for new features
- Docstrings for public APIs
This project is licensed under the MIT License. See LICENSE for details.
- Qt/PySide6: For the excellent GUI framework
- Python Community: For the great tools and libraries
- OBS Community: For the inspiration for this tool
Developed with โค๏ธ by Erwin Spitaler OE7SET
