better-ffmpeg-progress 2.1.4__tar.gz → 2.1.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/PKG-INFO +1 -1
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/better_ffmpeg_progress/better_ffmpeg_progress.py +59 -48
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/better_ffmpeg_progress.egg-info/PKG-INFO +1 -1
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/setup.py +1 -1
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/LICENSE +0 -0
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/README.md +0 -0
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/better_ffmpeg_progress/__init__.py +0 -0
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/better_ffmpeg_progress.egg-info/SOURCES.txt +0 -0
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/better_ffmpeg_progress.egg-info/dependency_links.txt +0 -0
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/better_ffmpeg_progress.egg-info/requires.txt +0 -0
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/better_ffmpeg_progress.egg-info/top_level.txt +0 -0
- {better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/setup.cfg +0 -0
|
@@ -72,52 +72,47 @@ class FfmpegProcess:
|
|
|
72
72
|
|
|
73
73
|
return True
|
|
74
74
|
|
|
75
|
-
def _update_progress(self, ffmpeg_output, progress_handler):
|
|
76
|
-
if
|
|
77
|
-
|
|
75
|
+
def _update_progress(self, ffmpeg_output, metric_name, value, progress_handler):
|
|
76
|
+
if progress_handler is None:
|
|
77
|
+
if metric_name == "out_time_ms":
|
|
78
|
+
seconds_processed = round(int(value) / 1_000_000, 1)
|
|
79
|
+
seconds_increase = seconds_processed - self._previous_seconds_processed
|
|
80
|
+
self._progress_bar.update(seconds_increase)
|
|
81
|
+
self._previous_seconds_processed = seconds_processed
|
|
78
82
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
seconds_increase = seconds_processed - self._previous_seconds_processed
|
|
83
|
-
self._progress_bar.update(seconds_increase)
|
|
84
|
-
self._previous_seconds_processed = seconds_processed
|
|
83
|
+
else:
|
|
84
|
+
if metric_name == "total_size":
|
|
85
|
+
self._current_size = int(value)
|
|
85
86
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
self._current_size = int(value)
|
|
87
|
+
elif metric_name == "out_time_ms":
|
|
88
|
+
self._seconds_processed = int(value) / 1_000_000
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
self.
|
|
90
|
+
if self._can_get_duration:
|
|
91
|
+
self._percentage_progress = (
|
|
92
|
+
self._seconds_processed / self._duration_secs
|
|
93
|
+
) * 100
|
|
92
94
|
|
|
93
|
-
if self.
|
|
94
|
-
self.
|
|
95
|
-
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
if self._current_size is not None and self._percentage_progress != 0.0:
|
|
99
|
-
self._estimated_size = self._current_size * (
|
|
100
|
-
100 / self._percentage_progress
|
|
101
|
-
)
|
|
95
|
+
if self._current_size is not None and self._percentage_progress != 0.0:
|
|
96
|
+
self._estimated_size = self._current_size * (
|
|
97
|
+
100 / self._percentage_progress
|
|
98
|
+
)
|
|
102
99
|
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
elif metric_name == "speed":
|
|
101
|
+
speed_str = value[:-1]
|
|
105
102
|
|
|
106
|
-
|
|
107
|
-
|
|
103
|
+
if speed_str != "0":
|
|
104
|
+
self._speed = float(speed_str)
|
|
108
105
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
self._duration_secs - self._seconds_processed
|
|
112
|
-
) / self._speed
|
|
106
|
+
if self._can_get_duration:
|
|
107
|
+
self._eta = (self._duration_secs - self._seconds_processed) / self._speed
|
|
113
108
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
109
|
+
if ffmpeg_output == "progress=end":
|
|
110
|
+
self._percentage_progress = 100
|
|
111
|
+
self._eta = 0
|
|
117
112
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
113
|
+
progress_handler(
|
|
114
|
+
self._percentage_progress, self._speed, self._eta, self._estimated_size
|
|
115
|
+
)
|
|
121
116
|
|
|
122
117
|
def run(
|
|
123
118
|
self,
|
|
@@ -145,10 +140,34 @@ class FfmpegProcess:
|
|
|
145
140
|
leave=False,
|
|
146
141
|
)
|
|
147
142
|
|
|
148
|
-
try:
|
|
149
143
|
while process.poll() is None:
|
|
150
|
-
|
|
151
|
-
|
|
144
|
+
try:
|
|
145
|
+
ffmpeg_output = process.stdout.readline().decode().strip()
|
|
146
|
+
|
|
147
|
+
except KeyboardInterrupt:
|
|
148
|
+
self._progress_bar.close()
|
|
149
|
+
print("[KeyboardInterrupt] FFmpeg process killed.")
|
|
150
|
+
sys.exit()
|
|
151
|
+
|
|
152
|
+
except Exception as e:
|
|
153
|
+
print(f"Unable to read FFmpeg output:\n{e}")
|
|
154
|
+
|
|
155
|
+
else:
|
|
156
|
+
if not ffmpeg_output:
|
|
157
|
+
continue
|
|
158
|
+
|
|
159
|
+
metric_name = ffmpeg_output.split("=")[0]
|
|
160
|
+
wanted_metrics = ["out_time_ms", "total_size", "speed"]
|
|
161
|
+
|
|
162
|
+
if metric_name not in wanted_metrics:
|
|
163
|
+
continue
|
|
164
|
+
|
|
165
|
+
value = ffmpeg_output.split("=")[1].strip()
|
|
166
|
+
|
|
167
|
+
if not value or "N/A" in value:
|
|
168
|
+
continue
|
|
169
|
+
|
|
170
|
+
self._update_progress(ffmpeg_output, metric_name, value, progress_handler)
|
|
152
171
|
|
|
153
172
|
if process.returncode != 0:
|
|
154
173
|
if error_handler:
|
|
@@ -163,11 +182,3 @@ class FfmpegProcess:
|
|
|
163
182
|
success_handler()
|
|
164
183
|
|
|
165
184
|
print(f"\n\nDone! To see FFmpeg's output, check out {ffmpeg_output_file}")
|
|
166
|
-
|
|
167
|
-
except KeyboardInterrupt:
|
|
168
|
-
self._progress_bar.close()
|
|
169
|
-
print("[KeyboardInterrupt] FFmpeg process killed.")
|
|
170
|
-
sys.exit()
|
|
171
|
-
|
|
172
|
-
except Exception as e:
|
|
173
|
-
print(f"[Better FFmpeg Process] {e}")
|
|
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as f:
|
|
|
5
5
|
|
|
6
6
|
setuptools.setup(
|
|
7
7
|
name="better-ffmpeg-progress",
|
|
8
|
-
version="2.1.
|
|
8
|
+
version="2.1.5",
|
|
9
9
|
author="GitHub.com/CrypticSignal",
|
|
10
10
|
author_email="theaudiophile@outlook.com",
|
|
11
11
|
description="Run FFmpeg & see percentage progress + ETA.",
|
|
File without changes
|
|
File without changes
|
{better-ffmpeg-progress-2.1.4 → better-ffmpeg-progress-2.1.5}/better_ffmpeg_progress/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|