{"id":15022052,"url":"https://github.com/crypticsignal/better-ffmpeg-progress","last_synced_at":"2025-04-04T21:06:38.000Z","repository":{"id":43321023,"uuid":"408162817","full_name":"CrypticSignal/better-ffmpeg-progress","owner":"CrypticSignal","description":"A Python package for running an FFmpeg command \u0026 showing better progress info - percentage progress, a progress bar and ETA.","archived":false,"fork":false,"pushed_at":"2025-02-27T17:34:04.000Z","size":156,"stargazers_count":60,"open_issues_count":1,"forks_count":16,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T21:06:31.440Z","etag":null,"topics":["bar","eta","ffmpeg","ffprobe","percentage","process","progress","python","python3","rich"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/better-ffmpeg-progress","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/CrypticSignal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2021-09-19T15:23:48.000Z","updated_at":"2025-02-27T17:34:08.000Z","dependencies_parsed_at":"2023-02-19T19:40:20.769Z","dependency_job_id":"87f6c4c5-cb03-4c27-a9ee-5db04426af4f","html_url":"https://github.com/CrypticSignal/better-ffmpeg-progress","commit_stats":{"total_commits":89,"total_committers":7,"mean_commits":"12.714285714285714","dds":0.2921348314606742,"last_synced_commit":"3fa98d381fa9e930f820215da21a35838f542b19"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrypticSignal%2Fbetter-ffmpeg-progress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrypticSignal%2Fbetter-ffmpeg-progress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrypticSignal%2Fbetter-ffmpeg-progress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrypticSignal%2Fbetter-ffmpeg-progress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CrypticSignal","download_url":"https://codeload.github.com/CrypticSignal/better-ffmpeg-progress/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247249524,"owners_count":20908212,"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","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":["bar","eta","ffmpeg","ffprobe","percentage","process","progress","python","python3","rich"],"created_at":"2024-09-24T19:57:23.546Z","updated_at":"2025-04-04T21:06:37.976Z","avatar_url":"https://github.com/CrypticSignal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n[![PyPI downloads](https://img.shields.io/pypi/dm/better-ffmpeg-progress?label=PyPI\u0026color=blue)](https://pypistats.org/packages/better-ffmpeg-progress)\n[![PyPI downloads](https://img.shields.io/pypi/dd/better-ffmpeg-progress?label=PyPI\u0026color=blue)](https://pypistats.org/packages/better-ffmpeg-progress)\n![PyPI - Version](https://img.shields.io/pypi/v/better-ffmpeg-progress)\n[![GitHub](https://img.shields.io/github/license/crypticsignal/better-ffmpeg-progress?label=License\u0026color=blue)](LICENSE.txt)\n\n# Better FFmpeg Progress\nRuns an FFmpeg command and shows a progress bar with percentage progress, time elapsed and ETA.\n\nThe [Rich](https://github.com/Textualize/rich) library is used for the progress bar by default, [tqdm](https://github.com/tqdm/tqdm) will be used if you pass `use_tqdm=True` to the `run` method.\n\u003c/div\u003e\n\nFFmpeg outputs something like:\n```\nframe=  692 fps= 58 q=28.0 size=    5376KiB time=00:00:28.77 bitrate=1530.3kbits/s speed=2.43x\n```\nBetter FFmpeg Progress outputs something like:\n```\n⠏ Processing abc.webm ━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  23% 0:00:04 00:15\n```\nWhere:\n- `Processing abc.webm` is the description of the progresss bar.\n- `23%` is the percentage progress.\n- `0:00:04` is the time elapsed.\n- `00:15` is the estimated time until the FFmpeg process completes.\n\nAs you can see, the output of Better FFmpeg Progress is much more useful.\n\n## Installation\n```\npip install better-ffmpeg-progress --upgrade\n```\n\n## Usage\nCreate an instance of the `FfmpegProcess` class and supply a list of arguments like you would to `subprocess.run()` or `subprocess.Popen()`.\n\nHere's a simple example:\n```py\nfrom better_ffmpeg_progress import FfmpegProcess\n\nprocess = FfmpegProcess([\"ffmpeg\", \"-i\", \"input.mp4\", \"-c:v\", \"libx265\", \"output.mp4\"])\n# return_code will be 0 if the process completed successfully, otherwise it will be 1\nreturn_code = process.run()\n```\n## Optional Arguments\nAn instance of the `FfmpegProcess` class takes the following **optional** arguments:\n\n- `ffmpeg_log_level` - Desired FFmpeg log level. Default: `\"verbose\"`\n- `ffmpeg_log_file` - The filepath to save the FFmpeg log to. Default: `\u003cinput filename\u003e_log.txt`\n- `print_detected_duration` - Print the detected duration of the input file. Default: `False`\n- `print_stderr_new_line` - If better progress information cannot be shown, print FFmpeg stderr in a new line instead of replacing the current line in the terminal. Default: `False`\n\nThe `run` method takes the following **optional** arguments:\n- `print_command` - Print the FFmpeg command being executed. Default: `False`\n- `use_tqdm` - Use [tqdm](https://github.com/tqdm/tqdm) instead of [Rich](https://github.com/Textualize/rich) for the progress bar. Default: `False`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrypticsignal%2Fbetter-ffmpeg-progress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrypticsignal%2Fbetter-ffmpeg-progress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrypticsignal%2Fbetter-ffmpeg-progress/lists"}