Run FFmpeg & see percentage progress + ETA.
Project description
Example:
39%|███████████████████████████████████████████ | 23.581/60.226 [00:19<00:34, 1.07s/s]
Where:
39%is the percentage progress.23.581seconds of the input file have been processed.60.226is the duration of the input file in seconds.00:19is the time elapsed since the FFmpeg process started.00:34is the estimated time required for the FFmpeg process to complete.1.07shows how many seconds of the input file are processed per second.
Installation:
pip3 install better-ffmpeg-progress --upgrade
Usage:
Create an instance of the FfmpegProcess class and supply a list of arguments like you would to subprocess.run():
from better_ffmpeg_progress import FfmpegProcess
# Pass a list of FFmpeg arguments, like you would if using subprocess.run()
process = FfmpegProcess(["ffmpeg", "-i", "input.mp4", "-c:a", "libmp3lame", "output.mp3"])
# Use the run method to run the FFmpeg command.
process.run()
The run method takes the following optional arguments:
-
progress_handler-
You can create a function if you would like to do something with the following values:
- Percentage progress. [float]
- Speed, e.g.
22.3xwhich means that 22.3 seconds of the input are processed every second. [string] - ETA in seconds. [float]
- Estimated output filesize in bytes. [float]
- Note: This is not accurate. Please take the value with a grain of salt.
The function will receive the aforementioned metrics as arguments, about two times per second.
Here's an example of a progress handler that you can create:
def handle_progress_info(percentage, speed, eta, estimated_filesize): print(f"The FFmpeg process is {percentage}% complete. ETA is {eta} seconds.") print(f"Estimated Output Filesize: {estimated_filesize / 1_000_000} MB")
Then you simply set the value of the
progress_handlerargument to the name of your function, like so:process.run(progress_handler=handle_progress_info)
-
-
ffmpeg_output_file- The
ffmpeg_output_fileargument allows you define where you want the output of FFmpeg to be saved. By default, this is saved in a folder named "ffmpeg_output", with the filename[<input_filename>].txt, but you can change this using theffmpeg_output_fileargument.
- The
Here's an example where both the progress_handler and ffmpeg_output_file parameters are used:
process.run(progress_handler=handle_progress_info, ffmpeg_output_file="ffmpeg_log.txt")
Changelog:
[19th September 2022]
- Add the ability to specify
process_complete_handler, a function to run when the FFmpeg process is complete. E.g.process.run(progress_handler=None, ffmpeg_output_file=None, process_complete_handler=my_function)
- Add 0.001 to tqdm's
totalparameter to prevent the chance of gettingTqdmWarning: clamping frac to range [0, 1]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file better-ffmpeg-progress-2.0.5.tar.gz.
File metadata
- Download URL: better-ffmpeg-progress-2.0.5.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec4ec76d65e0f09d26fd9bc1042620468919929962926a44e54795d88d2edbe1
|
|
| MD5 |
d999f19f24bd3ebeedfbe910ec1106e2
|
|
| BLAKE2b-256 |
fde84e56408f5b903ba46241cb05c52b658b417c5721d463a2a071526d453ec0
|
File details
Details for the file better_ffmpeg_progress-2.0.5-py3-none-any.whl.
File metadata
- Download URL: better_ffmpeg_progress-2.0.5-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9f36b426a5ec6dea6cd3742e3ac9c3cd21320d51b41f5b9de23a980f32cc8fb
|
|
| MD5 |
7d3d9ae7b7c0a64cac4f0076fb9c2148
|
|
| BLAKE2b-256 |
e9eb3fa56d5d67d3caf4c8732c17e2806806654c23f15ff0f3a9f0a356911f02
|