Skip to content

Commit 50d3c7f

Browse files
update examples -> add time left
1 parent 7aa812b commit 50d3c7f

11 files changed

Lines changed: 235 additions & 52 deletions

File tree

examples/clouds/aws_cloud.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
"""
1313

1414
import argparse
15+
import datetime
1516
import sys
17+
import time
1618

1719
import ffmpeg_streaming
1820
from ffmpeg_streaming import AWS
@@ -34,10 +36,24 @@ def aws_cloud(bucket_name, key):
3436
return from_aws_cloud, to_aws_cloud
3537

3638

37-
def transcode_progress(percentage, ffmpeg):
38-
# You can update a field in your database
39+
start_time = time.time()
40+
41+
42+
def per_to_time_left(percentage):
43+
if percentage != 0:
44+
diff_time = time.time() - start_time
45+
seconds_left = 100 * diff_time / percentage - diff_time
46+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
47+
else:
48+
time_left = 'calculating...'
49+
50+
return time_left
51+
52+
53+
def transcode_progress(per, ffmpeg):
54+
# You can update a field in your database or can log it to a file
3955
# You can also create a socket connection and show a progress bar to users
40-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
56+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
4157
sys.stdout.flush()
4258

4359

examples/clouds/azure_cloud.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
"""
1313

1414
import argparse
15+
import datetime
1516
import sys
17+
import time
1618

1719
import ffmpeg_streaming
1820
from ffmpeg_streaming import MicrosoftAzure
@@ -35,10 +37,24 @@ def azure_cloud(container, blob):
3537
return from_azure_cloud, to_azure_cloud
3638

3739

38-
def transcode_progress(percentage, ffmpeg):
39-
# You can update a field in your database
40+
start_time = time.time()
41+
42+
43+
def per_to_time_left(percentage):
44+
if percentage != 0:
45+
diff_time = time.time() - start_time
46+
seconds_left = 100 * diff_time / percentage - diff_time
47+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
48+
else:
49+
time_left = 'calculating...'
50+
51+
return time_left
52+
53+
54+
def transcode_progress(per, ffmpeg):
55+
# You can update a field in your database or can log it to a file
4056
# You can also create a socket connection and show a progress bar to users
41-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
57+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
4258
sys.stdout.flush()
4359

4460

examples/clouds/cloud.py

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
1111
:license: MIT, see LICENSE for more details.
1212
"""
13-
13+
import datetime
1414
import sys
15+
import time
1516

1617
import ffmpeg_streaming
1718
from ffmpeg_streaming import Cloud
@@ -24,15 +25,8 @@ def download_progress(percentage, downloaded, total):
2425
sys.stdout.flush()
2526

2627

27-
def transcode_progress(percentage, ffmpeg):
28-
# You can update a field in your database
29-
# You can also create a socket connection and show a progress bar to users
30-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
31-
sys.stdout.flush()
32-
33-
34-
def main():
35-
cloud = Cloud()
28+
def cloud():
29+
_cloud = Cloud()
3630
download_options = {
3731
'url': 'https://www.aminyazdanpanah.com/my_sweetie.mp4',
3832
'progress': download_progress
@@ -49,8 +43,35 @@ def main():
4943
}
5044
}
5145

52-
from_cloud = (cloud, download_options, None)
53-
to_cloud = (cloud, upload_options)
46+
from_cloud = (_cloud, download_options, None)
47+
to_cloud = (_cloud, upload_options)
48+
49+
return from_cloud, to_cloud
50+
51+
52+
start_time = time.time()
53+
54+
55+
def per_to_time_left(percentage):
56+
if percentage != 0:
57+
diff_time = time.time() - start_time
58+
seconds_left = 100 * diff_time / percentage - diff_time
59+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
60+
else:
61+
time_left = 'calculating...'
62+
63+
return time_left
64+
65+
66+
def transcode_progress(per, ffmpeg):
67+
# You can update a field in your database or can log it to a file
68+
# You can also create a socket connection and show a progress bar to users
69+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
70+
sys.stdout.flush()
71+
72+
73+
def main():
74+
from_cloud, to_cloud = cloud()
5475

5576
(
5677
ffmpeg_streaming

examples/clouds/custom_cloud.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
1111
:license: MIT, see LICENSE for more details.
1212
"""
13-
13+
import datetime
1414
import sys
15+
import time
1516

1617
import ffmpeg_streaming
1718
from ffmpeg_streaming import Clouds
@@ -44,10 +45,24 @@ def custom_cloud():
4445
return from_custom_cloud, to_custom_cloud
4546

4647

47-
def transcode_progress(percentage, ffmpeg):
48-
# You can update a field in your database
48+
start_time = time.time()
49+
50+
51+
def per_to_time_left(percentage):
52+
if percentage != 0:
53+
diff_time = time.time() - start_time
54+
seconds_left = 100 * diff_time / percentage - diff_time
55+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
56+
else:
57+
time_left = 'calculating...'
58+
59+
return time_left
60+
61+
62+
def transcode_progress(per, ffmpeg):
63+
# You can update a field in your database or can log it to a file
4964
# You can also create a socket connection and show a progress bar to users
50-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
65+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
5166
sys.stdout.flush()
5267

5368

examples/clouds/google_cloud.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
"""
1313

1414
import argparse
15+
import datetime
1516
import sys
17+
import time
1618

1719
import ffmpeg_streaming
1820
from ffmpeg_streaming import GoogleCloudStorage
@@ -33,10 +35,24 @@ def google_cloud(bucket_name, object_name):
3335
return from_google_cloud, to_google_cloud
3436

3537

36-
def transcode_progress(percentage, ffmpeg):
37-
# You can update a field in your database
38+
start_time = time.time()
39+
40+
41+
def per_to_time_left(percentage):
42+
if percentage != 0:
43+
diff_time = time.time() - start_time
44+
seconds_left = 100 * diff_time / percentage - diff_time
45+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
46+
else:
47+
time_left = 'calculating...'
48+
49+
return time_left
50+
51+
52+
def transcode_progress(per, ffmpeg):
53+
# You can update a field in your database or can log it to a file
3854
# You can also create a socket connection and show a progress bar to users
39-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
55+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
4056
sys.stdout.flush()
4157

4258

examples/clouds/moultiple_clouds.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,34 @@
1010
1111
:license: MIT, see LICENSE for more details.
1212
"""
13-
13+
import datetime
1414
import sys
15+
import time
1516

1617
import ffmpeg_streaming
1718
from examples.clouds.aws_cloud import aws_cloud
1819
from examples.clouds.azure_cloud import azure_cloud
1920
from examples.clouds.google_cloud import google_cloud
2021

2122

22-
def transcode_progress(percentage, ffmpeg):
23-
# You can update a field in your database
23+
start_time = time.time()
24+
25+
26+
def per_to_time_left(percentage):
27+
if percentage != 0:
28+
diff_time = time.time() - start_time
29+
seconds_left = 100 * diff_time / percentage - diff_time
30+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
31+
else:
32+
time_left = 'calculating...'
33+
34+
return time_left
35+
36+
37+
def transcode_progress(per, ffmpeg):
38+
# You can update a field in your database or can log it to a file
2439
# You can also create a socket connection and show a progress bar to users
25-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
40+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
2641
sys.stdout.flush()
2742

2843

examples/dash/dash.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,31 @@
1212
"""
1313

1414
import argparse
15+
import datetime
1516
import sys
17+
import time
18+
1619
import ffmpeg_streaming
1720

1821

19-
def transcode_progress(percentage, ffmpeg):
20-
# You can update a field in your database
22+
start_time = time.time()
23+
24+
25+
def per_to_time_left(percentage):
26+
if percentage != 0:
27+
diff_time = time.time() - start_time
28+
seconds_left = 100 * diff_time / percentage - diff_time
29+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
30+
else:
31+
time_left = 'calculating...'
32+
33+
return time_left
34+
35+
36+
def transcode_progress(per, ffmpeg):
37+
# You can update a field in your database or can log it to a file
2138
# You can also create a socket connection and show a progress bar to users
22-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
39+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
2340
sys.stdout.flush()
2441

2542

examples/dash/dash_manual.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,33 @@
1212
"""
1313

1414
import argparse
15+
import datetime
1516
import sys
17+
import time
18+
1619
import ffmpeg_streaming
1720

1821
from ffmpeg_streaming import Representation
1922

2023

21-
def transcode_progress(percentage, ffmpeg):
22-
# You can update a field in your database
24+
start_time = time.time()
25+
26+
27+
def per_to_time_left(percentage):
28+
if percentage != 0:
29+
diff_time = time.time() - start_time
30+
seconds_left = 100 * diff_time / percentage - diff_time
31+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
32+
else:
33+
time_left = 'calculating...'
34+
35+
return time_left
36+
37+
38+
def transcode_progress(per, ffmpeg):
39+
# You can update a field in your database or can log it to a file
2340
# You can also create a socket connection and show a progress bar to users
24-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
41+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
2542
sys.stdout.flush()
2643

2744

examples/hls/hls.py

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,47 @@
1212
"""
1313

1414
import argparse
15+
import datetime
1516
import sys
17+
import time
18+
1619
import ffmpeg_streaming
1720

21+
start_time = time.time()
22+
23+
24+
def per_to_time_left(percentage):
25+
if percentage != 0:
26+
diff_time = time.time() - start_time
27+
seconds_left = 100 * diff_time / percentage - diff_time
28+
time_left = str(datetime.timedelta(seconds=int(seconds_left))) + ' left'
29+
else:
30+
time_left = 'calculating...'
31+
32+
return time_left
1833

19-
def transcode_progress(percentage, ffmpeg):
20-
# You can update a field in your database
34+
35+
def transcode_progress(per, ffmpeg):
36+
# You can update a field in your database or can log it to a file
2137
# You can also create a socket connection and show a progress bar to users
22-
sys.stdout.write("\rTranscoding...(%s%%)[%s%s]" % (percentage, '#' * percentage, '-' * (100 - percentage)))
38+
sys.stdout.write("\rTranscoding...(%s%%) %s [%s%s]" % (per, per_to_time_left(per), '#' * per, '-' * (100 - per)))
2339
sys.stdout.flush()
2440

2541

2642
def main():
27-
parser = argparse.ArgumentParser()
28-
29-
parser.add_argument('-i', '--input', required=True, help='The path to the video file (required).')
30-
parser.add_argument('-o', '--output', default=None, help='The output to write files.')
31-
32-
args = parser.parse_args()
43+
# parser = argparse.ArgumentParser()
44+
#
45+
# parser.add_argument('-i', '--input', required=True, help='The path to the video file (required).')
46+
# parser.add_argument('-o', '--output', default=None, help='The output to write files.')
47+
#
48+
# args = parser.parse_args()
3349

3450
(
3551
ffmpeg_streaming
36-
.hls(args.input, hls_time=20)
52+
.hls("c:\\test\\test8.mkv", hls_time=20)
3753
.format('libx264')
3854
.auto_rep()
39-
.package(args.output, progress=transcode_progress)
55+
.package("c:\\test\\maman\\ahmad.m3u8", progress=transcode_progress)
4056
)
4157

4258

0 commit comments

Comments
 (0)