https://github.com/codeofrahul/screen-recording-app
A Python desktop app to record screen, pause/resume, preview recordings, choose save location, and cut/join videos β all with a clean Tkinter UI.
https://github.com/codeofrahul/screen-recording-app
Last synced: 5 days ago
JSON representation
A Python desktop app to record screen, pause/resume, preview recordings, choose save location, and cut/join videos β all with a clean Tkinter UI.
- Host: GitHub
- URL: https://github.com/codeofrahul/screen-recording-app
- Owner: CodeofRahul
- License: mit
- Created: 2025-05-18T14:37:26.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-05-19T11:12:48.000Z (8 months ago)
- Last Synced: 2025-06-15T19:47:17.965Z (8 months ago)
- Language: Python
- Homepage:
- Size: 5.83 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# πΉ Screen Recorder & Video Editor (Python + Tkinter)
[](https://github.com/CodeofRahul/Screen-Recording-App/stargazers)
[](https://github.com/CodeofRahul/Screen-Recording-App/network)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[]()
---
> A Python desktop app to record screen, pause/resume, preview recordings, choose save location, and cut/join videos β all with a clean Tkinter UI.
---
### π Features
- π₯ **Screen Recording with UI**
- Start, Pause, Resume recording
- Choose from multiple quality options (Low, Medium, High)
- Save recordings with auto-generated filenames (timestamped)
- βΈοΈ **Pause and Preview During Recording**
- Pause the recording and preview whatβs been captured so far
- Resume recording seamlessly in the same file
- π **Flexible Save Path**
- Set a default folder to store recordings
- Change the save location anytime from the UI
- βοΈ **Cut Video Segments**
- Select a portion of a video based on start/end time
- Save the cut segment as a new video file
- π **Join Multiple Videos**
- Select multiple videos and merge them into one
- Automatically resizes and synchronizes formats
- Output is saved with a timestamp-based unique name
- πΎ **No File Overwrites**
- Every output file (recorded, cut, or joined) is saved with a unique name
- Output folder structure is auto-managed (`Recordings/`)
---
### πΈ Demo

---
### π Tech Stack
| Component | Technology |
|------------------|----------------|
| GUI | Tkinter |
| Screen Recording | OpenCV, pyautogui |
| Video Processing | moviepy |
| Video Encoding | ffmpeg (via moviepy) |
| File Dialogs | tkinter.filedialog |
---
### π Folder Structure
Screen-Recording-App/
βββ main.py # UI and application logic
βββ recorder.py # Screen recording logic
βββ editor.py # Video cut/join logic
βββ README.md # This file
βββ Recordings/ # Auto-generated folder for saved videos
βββ venv/ # (your virtual environment)
---
### π§° Installation
1. **Clone the repository**:
```bash
git clone https://github.com/CodeofRahul/Screen-Recording-App.git
cd Screen-Recording-App
```
2. **Create a virtual environment:**
```bash
python -m venv venv
# Activate:
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
```
3. **Install dependencies:**
```bash
pip install -r requirements.txt
```
If not using a `requirements.txt`:
```bash
pip install opencv-python pyautogui moviepy imageio-ffmpeg
```
### βΆοΈ Running the App
```bash
python main.py
```
### π¦ Features in Detail
β
**Quality Settings**
- Low (640x480)
- Medium (1280x720)
- High (1920x1080)
β
**File Naming Convention**
Auto-generated filenames for all outputs:
```bash
Recordings/recording_20250518_174203.avi
Recordings/cut_20250518_174547.mp4
Recordings/joined_20250518_174823.mp4
```
### π€ Contributions
Contributions are welcome! If you'd like to:
- Add more editing features
- Improve performance or UI
- Package as a desktop app (using PyInstaller or Tkinter Designer)
Feel free to submit a pull request or open an issue!
## Setup Instructions
- To create environment = `conda create -p python=3.8 -y`
- To check available envs = `conda env list`
- To check available envs = `conda info --envs`
- To activate environment = `conda activate `
- To install requirements.txt = `pip install -r requirements.txt`
- To check install packages = `pip list`
- To check detailed about package = `pip show package_name`
- To install package = `pip install package_name`
- To uninstall package = `pip uninstall package_name`
- To save all packages of env to a requirements.txt file = `pip freeze > requirements.txt`
## Git commands
- To add all file = `git add .`
- To add any particular file = `git add `
- To commit = `git commit -m "commit message"`
- To push the code = `git push origin main`