def convert_video_progress_bar(self, manager, cmd):
name = self.path.rsplit(os.path.sep, 1)[-1]
# Run ffmpeg
proc = expect.spawn(cmd, encoding='utf-8')
pbar = None
try:
# extract the total number of frames
proc.expect(pattern_duration)
total = sum(map(lambda x: float(
x[1])*60**x[0], enumerate(reversed(proc.match.groups()[0].strip().split(':')))))
cont = 0
# keeps track of the progress to show it to the user
pbar = manager.counter(
total=100,
desc=name,
unit='%',
bar_format=BAR_FMT,
counter_format=COUNTER_FMT,
leave=False
)
# infinite loop
while True:
# look for a progress indicator, and extract the frame count
proc.expect(pattern_progress)
progress = sum(map(lambda x: float(
x[1])*60**x[0], enumerate(reversed(proc.match.groups()[0].strip().split(':')))))
# compute the percentage complete
percent = progress/total*100
# update the counter, to show the user
pbar.update(percent-cont)
cont = percent
# because of the infinite loop,
# `proc.expect` will throw an error once ffmpeg has completed.
# catch that error, and clean things up
except expect.EOF:
traceback.print_exc()
finally:
if pbar is not None:
pbar.close()
proc.expect(expect.EOF)
res = proc.before
res += proc.read()
# check to see if ffmpeg threw and error
exitstatus = proc.wait()
if exitstatus:
raise ffmpeg.Error('ffmpeg', '', res)
You are not logged in. However you can subscribe from another Fediverse account, for example Lemmy or Mastodon. To do this, paste the following into the search field of your instance: !python@heapoverflow.ml
Ask specific questions about how to code something in python