{"id":30656212,"url":"https://github.com/hariharen9/ffmpeg-this","last_synced_at":"2026-02-04T09:17:59.038Z","repository":{"id":309000918,"uuid":"1034847141","full_name":"hariharen9/ffmpeg-this","owner":"hariharen9","description":"A powerful script for converting, manipulating, and inspecting media files within CLI 🖥️","archived":false,"fork":false,"pushed_at":"2025-08-16T09:44:58.000Z","size":62188,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-16T11:34:27.641Z","etag":null,"topics":["audio-converter","batch-script","converter","ffmpeg","media-manipulation","video-converter","windows"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/peg-this/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hariharen9.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-09T05:18:37.000Z","updated_at":"2025-08-16T11:16:51.000Z","dependencies_parsed_at":"2025-08-09T11:41:27.307Z","dependency_job_id":null,"html_url":"https://github.com/hariharen9/ffmpeg-this","commit_stats":null,"previous_names":["hariharen9/av-converter","hariharen9/ffmpeg-this"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/hariharen9/ffmpeg-this","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hariharen9%2Fffmpeg-this","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hariharen9%2Fffmpeg-this/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hariharen9%2Fffmpeg-this/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hariharen9%2Fffmpeg-this/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hariharen9","download_url":"https://codeload.github.com/hariharen9/ffmpeg-this/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hariharen9%2Fffmpeg-this/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272966147,"owners_count":25023219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-converter","batch-script","converter","ffmpeg","media-manipulation","video-converter","windows"],"created_at":"2025-08-31T10:08:17.692Z","updated_at":"2026-02-04T09:17:59.018Z","avatar_url":"https://github.com/hariharen9.png","language":"Python","funding_links":["https://github.com/sponsors/hariharen9","https://www.buymeacoffee.com/hariharen"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eFFm\u003cu\u003e\u003ci\u003ePEG\u003c/i\u003e\u003c/u\u003e-this\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://pypi.org/project/peg-this/\"\u003e\n        \u003cimg src=\"https://img.shields.io/pypi/v/peg_this?color=blue\u0026label=version\" alt=\"PyPI Version\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://pepy.tech/project/peg-this\"\u003e\n        \u003cimg src=\"https://static.pepy.tech/badge/peg-this\" alt=\"Downloads\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/hariharen9/ffmpeg-this/stargazers\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/stars/hariharen9/ffmpeg-this?color=yellow\" alt=\"GitHub Stars\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/hariharen9/ffmpeg-this/network/members\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/forks/hariharen9/ffmpeg-this?color=lightgrey\" alt=\"GitHub Forks\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/hariharen9/ffmpeg-this/issues\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/issues/hariharen9/ffmpeg-this?color=red\" alt=\"GitHub Issues\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/hariharen9/ffmpeg-this/blob/main/LICENSE\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/license/hariharen9/ffmpeg-this\" alt=\"License\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://github.com/hariharen9/ffmpeg-this\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/platform-win%20%7C%20macos%20%7C%20linux-blueviolet\" alt=\"Supported Platforms\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://ffmpeg.org/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/FFmpeg-Powered-007808?logo=ffmpeg\u0026logoColor=white\" alt=\"FFmpeg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/openai/whisper\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/AI-Whisper-743ec7?logo=openai\u0026logoColor=white\" alt=\"OpenAI Whisper\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cb\u003eYour Editor within CLI\u003c/b\u003e\u003c/p\u003e\n\nA powerful and user-friendly Python CLI tool for converting, manipulating, and inspecting media files using the power of FFmpeg. This tool provides a simple command-line menu to perform common audio and video tasks without needing to memorize complex FFmpeg commands.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"/assets/peg.gif\" width=\"720\"\u003e\n\u003c/p\u003e\n\n## Features at a Glance\n\n| Category | Feature | Description |\n|----------|---------|-------------|\n| **Inspect** | Media Properties | View detailed codec, resolution, frame rate, bitrate, and stream information |\n| **Convert** | Video Formats | Convert to MP4, MKV, MOV, AVI, WebM with quality presets (CRF 18/23/28) |\n| | Audio Formats | Convert to MP3 (128k-320k bitrate), FLAC, WAV |\n| | GIF Creation | Convert video clips to animated GIFs with optimized palette |\n| | Image Formats | Convert between JPG, PNG, WebP, BMP, TIFF with quality control |\n| | Compress Video | Target file size (e.g., 25MB for Discord) or CRF quality presets |\n| | Change Resolution | Scale to 4K, 1080p, 720p, 480p, or custom resolution |\n| **Subtitles** | AI Transcription | Generate subtitles using Whisper AI (7 model sizes available) |\n| | Sidecar Export | Save as `.srt`, `.vtt`, `.txt`, or `.lrc` files |\n| | Soft Subtitles | Embed toggleable subtitle track into video |\n| | Hard Subtitles | Burn permanent subtitles directly into video |\n| | Multi-language | Support for 99+ languages with auto-detection |\n| **Edit** | Trim/Cut | Extract video segments by start/end time (lossless, no re-encoding) |\n| | Visual Crop | Interactive GUI to select crop area on video/image |\n| | Split Video | Divide video into equal parts or by duration |\n| | Join/Concatenate | Merge multiple videos with automatic resolution matching |\n| **Audio** | Extract Audio | Rip audio track to MP3, FLAC, or WAV |\n| | Remove Audio | Create silent version of video (keeps video intact) |\n| | Merge Audio | Replace or mix audio track with video |\n| | Adjust Volume | Increase/decrease volume (presets, dB, multiplier) |\n| | Audio Fade In/Out | Fade audio at start/end (6 curve types) |\n| | Normalize Audio | EBU R128, Peak, RMS, or Dynamic normalization |\n| **Effects** | Change Speed | Adjust playback speed (0.25x to 4x) with audio pitch preservation |\n| | Reverse Video | Play video backwards (includes audio) |\n| | Video Fade In/Out | Fade to/from black or white at start/end |\n| | Loop Video | Repeat video N times or to target duration |\n| | Color Correction | Brightness, contrast, saturation with presets |\n| | Denoise Video | Reduce grain/noise (hqdn3d fast / nlmeans quality) |\n| | Blur/Pixelate Region | Visual selection to blur or pixelate areas |\n| | Auto Blur Faces (AI) | AI-powered automatic face detection and blur |\n| | Add Watermark | Overlay image or text with custom positioning |\n| | Picture-in-Picture | Overlay smaller video on main video |\n| | Video Stabilization | Reduce camera shake (Light/Medium/Heavy) |\n| | Extract Frames | Export single frame, every N seconds, or all frames as images |\n| **Image** | Resize | Scale images with aspect ratio preservation |\n| | Rotate | Rotate 90°, 180°, or 270° |\n| | Flip | Flip horizontally or vertically |\n| | Crop | Visual cropping with click-and-drag selection |\n| **Other** | Create Slideshow | Create video from images with background music |\n| | Metadata Editor | View, edit, clear, or copy video metadata |\n| | Create GIF (Advanced) | Custom FPS, size, quality, loop options |\n| **Batch** | Batch Convert | Convert all media files in directory at once |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch2\u003eDetailed Feature Breakdown\u003c/h2\u003e\u003c/summary\u003e\n\n### Video Operations\n\n| Operation | Input | Output | Method | Re-encoding |\n|-----------|-------|--------|--------|-------------|\n| **Convert** | Any video | MP4, MKV, MOV, AVI, WebM | FFmpeg transcode | Yes (CRF quality) |\n| **Compress** | Any video | Same format | 2-pass encoding | Yes (target size/CRF) |\n| **Change Resolution** | Any video | Same format | Scale filter | Yes |\n| **Trim** | Any video | Same format | Stream copy | No (lossless) |\n| **Crop** | Any video | Same format | Visual selection + crop filter | Yes |\n| **Split** | Any video | Multiple segments | Stream copy or re-encode | Configurable |\n| **Join** | Multiple videos | Single MP4 | Concat filter + normalize | Yes |\n| **Change Speed** | Any video | Same format | setpts + atempo filters | Yes |\n| **Reverse** | Any video | Same format | Reverse filter | Yes |\n| **Video Fade** | Any video | Same format | fade filter | Yes |\n| **Loop Video** | Any video | Same format | stream_loop | No (stream copy) |\n| **Color Correction** | Any video | Same format | eq filter | Yes |\n| **Denoise** | Any video | Same format | hqdn3d/nlmeans filter | Yes |\n| **Blur/Pixelate** | Any video | Same format | Visual selection + boxblur/scale | Yes |\n| **Auto Blur Faces** | Any video | Same format | MediaPipe AI + frame-by-frame | Yes |\n| **Picture-in-Picture** | Two videos | Same format | overlay filter | Yes |\n| **Stabilize** | Any video | Same format | vidstab (two-pass) | Yes |\n| **Add Watermark** | Any video | Same format | Overlay filter | Yes |\n| **Extract Frames** | Any video | PNG/JPG images | Frame extraction | N/A |\n| **To GIF** | Any video | Animated GIF | 2-pass palette optimization | Yes |\n\n### Audio Operations\n\n| Operation | Input | Output | Notes |\n|-----------|-------|--------|-------|\n| **Extract** | Video with audio | MP3, FLAC, WAV | Preserves original quality for FLAC/WAV |\n| **Remove** | Video with audio | Silent video | Stream copy (fast, no re-encoding) |\n| **Merge** | Video + Audio file | Video with new audio | Replace or mix audio tracks |\n| **Adjust Volume** | Video/Audio | Same format | Presets, multiplier, or dB value |\n| **Audio Fade** | Video/Audio | Same format | 6 curve types (linear, log, exp, sine) |\n| **Normalize** | Video/Audio | Same format | EBU R128, Peak, RMS, Dynamic |\n| **Convert** | Audio file | MP3, FLAC, WAV | Bitrate selection for MP3 |\n\n### Subtitle Generation\n\n| Model | Size | Speed | Accuracy | Languages |\n|-------|------|-------|----------|-----------|\n| `tiny.en` | ~75 MB | Fastest | Good | English only |\n| `base.en` | ~150 MB | Fast | Better | English only |\n| `small.en` | ~500 MB | Balanced | Great | English only |\n| `medium.en` | ~1.5 GB | Slower | Excellent | English only |\n| `small` | ~500 MB | Balanced | Great | 99+ languages |\n| `medium` | ~1.5 GB | Slower | Excellent | 99+ languages |\n| `large-v3` | ~3 GB | Slowest | Best | 99+ languages |\n\n**Output Options:**\n| Type | File Extension | Description |\n|------|----------------|-------------|\n| Sidecar | `.srt` | SubRip - most compatible format |\n| Sidecar | `.vtt` | WebVTT - for web/HTML5 players |\n| Sidecar | `.txt` | Plain text transcript |\n| Sidecar | `.lrc` | Lyrics format with timestamps |\n| Soft Subs | `.mp4/.mkv` | Embedded, toggleable in players |\n| Hard Subs | `.mp4/.mkv` | Burned in, always visible |\n\n### Image Operations\n\n| Operation | Options | Notes |\n|-----------|---------|-------|\n| **Convert** | JPG, PNG, WebP, BMP, TIFF | Quality presets (95%, 80%, 60%) |\n| **Resize** | Custom width/height | Use `-1` to preserve aspect ratio |\n| **Rotate** | 90° CW, 90° CCW, 180° | Lossless rotation |\n| **Flip** | Horizontal, Vertical | Mirror image |\n| **Crop** | Visual selection | Interactive GUI with preview |\n\n### Supported Formats\n\n| Type | Supported Formats |\n|------|-------------------|\n| **Video Input** | `.mp4`, `.mkv`, `.avi`, `.mov`, `.webm`, `.flv`, `.wmv`, `.gif` |\n| **Video Output** | `.mp4`, `.mkv`, `.mov`, `.avi`, `.webm`, `.gif` |\n| **Audio Input** | `.mp3`, `.flac`, `.wav`, `.ogg`, `.aac`, `.m4a` |\n| **Audio Output** | `.mp3`, `.flac`, `.wav` |\n| **Image Input** | `.jpg`, `.jpeg`, `.png`, `.webp`, `.bmp`, `.tiff` |\n| **Image Output** | `.jpg`, `.png`, `.webp`, `.bmp`, `.tiff` |\n| **Subtitle Output** | `.srt`, `.vtt`, `.txt`, `.lrc` |\n\n\u003c/details\u003e\n\n## Usage\n\n### Prerequisite: Install FFmpeg\n\n\u003e [NOTE]\n\u003e `peg_this` uses a library called `ffmpeg-python` which acts as a controller for the main FFmpeg program. It does not include FFmpeg itself. Therefore, you must have FFmpeg installed on your system and available in your terminal's PATH.\n\nFor **macOS** users, the easiest way to install it is with [Homebrew](https://brew.sh/):\n```bash\nbrew install ffmpeg\n```\n\nFor **Windows** users, you can use a package manager like [Chocolatey](https://chocolatey.org/) or [Scoop](https://scoop.sh/):\n```bash\n# Using Chocolatey\nchoco install ffmpeg\n\n# Using Scoop\nscoop install ffmpeg\n```\n\nFor other systems, please see the official download page: **[ffmpeg.org/download.html](https://ffmpeg.org/download.html)**\n\nThere are three ways to use `peg_this`:\n\n### 1. Pip Install (Recommended)\nThis is the easiest way to get started. This will install the tool and all its dependencies.\n\n```bash\npip install peg_this\n```\n\nOnce installed, you can run the tool from your terminal:\n\n```bash\npeg_this\n```\n\n### 2. Download from Release\nIf you prefer not to install the package, you can download a pre-built executable from the [Releases](https://github.com/hariharen9/ffmpeg-this/releases/latest) page.\n\n1.  Download the executable for your operating system (Windows, macOS, or Linux).\n2.  Place it in a directory with your media files.\n3.  Run the executable directly from your terminal.\n\n### 3. Run from Source\nIf you want to run the tool directly from the source code:\n\n1.  **Clone the repository:**\n    ```bash\n    git clone https://github.com/hariharen9/ffmpeg-this.git\n    cd ffmpeg-this\n    ```\n2.  **Install dependencies:**\n    ```bash\n    pip install -r requirements.txt\n    ```\n3.  **Run the tool:**\n    ```bash\n    python -m src.peg_this.peg_this\n    ```\n\n## Subtitle Generation\n\nThe subtitle feature uses [faster-whisper](https://github.com/SYSTRAN/faster-whisper), a fast and accurate speech-to-text engine powered by OpenAI's Whisper model.\n\n### How it works\n\n1. Select a video file\n2. Choose \"Generate Subtitles (Whisper)\"\n3. Pick a model size (tiny to large-v3)\n4. Select processing mode (Fast or Accurate)\n5. Choose output type:\n   - **Sidecar file**: Export as `.srt`, `.vtt`, `.txt`, or `.lrc`\n   - **Soft subtitles**: Embed into video (can be toggled on/off in players)\n   - **Hard subtitles**: Burn into video (permanent, always visible)\n\n### Supported Languages\n\nUsing multilingual models (`small`, `medium`, `large-v3`), you can transcribe audio in 99+ languages including English, Spanish, French, German, Chinese, Japanese, Korean, Hindi, Arabic, and many more.\n\n## Star History\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://star-history.com/#hariharen9/ffmpeg-this\u0026Date\"\u003e\n    \u003cimg src=\"https://api.star-history.com/svg?repos=hariharen9/ffmpeg-this\u0026type=Date\" alt=\"Star History Chart\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Sponsor\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/sponsors/hariharen9\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/sponsors/hariharen9?style=for-the-badge\u0026logo=github\u0026color=white\" alt=\"GitHub Sponsors\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.buymeacoffee.com/hariharen\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge\u0026logo=buy-me-a-coffee\u0026logoColor=black\" alt=\"Buy Me a Coffee\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Contributors\n\n\u003ca href=\"https://github.com/hariharen9/ffmpeg-this/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=hariharen9/ffmpeg-this\" /\u003e\n\u003c/a\u003e\n\n## Contributing\n\nContributions are welcome! Please see the [Contributing Guidelines](CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n\u003cp align=\"center\"\u003e\n    Made with ❤️ by \u003ca href=\"https://hariharen.site\"\u003eHariharen\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhariharen9%2Fffmpeg-this","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhariharen9%2Fffmpeg-this","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhariharen9%2Fffmpeg-this/lists"}