fid-ffmpeg 0.4.7__py3-none-any.whl → 0.4.9__py3-none-any.whl

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.
fid/fid.py CHANGED
@@ -24,12 +24,14 @@ def start(ctx : typer.Context):
24
24
  video_path= questionary.path("enter the path to your video:").ask()
25
25
  if video_path is None:
26
26
  raise typer.Exit()
27
- if Path(video_path).is_file():
28
- fid_main(video_path)
27
+
28
+ cPath= Path(video_path.strip('"').strip("'"))
29
+ if cPath.is_file():
30
+ fid_main(str(cPath))
29
31
  break
30
32
  else:
31
- console.print(f"[red]Error: '{video_path}' is not a valid file path. Please try again.[/red]")
32
-
33
+ print(f"[red]Error: '{video_path}' is not a valid file path. Please try again.[/red]")
34
+
33
35
  audio_main(app)
34
36
  compress_main(app)
35
37
  frames_main(app)
fid/fid_interactive.py CHANGED
@@ -6,7 +6,7 @@ from .tasks.extract.extract_interactive import extract_main
6
6
  from .tasks.stream.stream_interactive import stream_main
7
7
  from .tasks.video.video_interactive import video_main
8
8
 
9
- def fid_main(video_path):
9
+ def fid_main(cPath):
10
10
 
11
11
  while True:
12
12
  choice= questionary.select(
@@ -24,7 +24,7 @@ def fid_main(video_path):
24
24
  raise typer.Exit()
25
25
 
26
26
  if choice=="video editing":
27
- video_main(video_path)
27
+ video_main(video_path)
28
28
 
29
29
  elif choice=="audio editing":
30
30
  audio_main(video_path)
@@ -39,4 +39,4 @@ def fid_main(video_path):
39
39
  encode_main(video_path)
40
40
 
41
41
  elif choice=="exit":
42
- raise typer.Exit()
42
+ raise typer.Exit()
@@ -8,6 +8,7 @@ def ffmpeg():
8
8
  raise typer.Exit()
9
9
 
10
10
  def ckvideo(video_path:Path):
11
- if not vid.exists():
11
+ path_str = Path(video_path)
12
+ if not path_str.exists():
12
13
  print("file doesn't exist :)")
13
14
  raise typer.Exit()
fid/tasks/audio/mute.py CHANGED
@@ -3,10 +3,12 @@ import subprocess
3
3
  from pathlib import Path
4
4
  from ...initial_files.error_handling import ffmpeg , ckvideo
5
5
 
6
+
7
+ def mute(video_path: Path):
8
+ ffmpeg()
9
+ ckvideo(video_path)
10
+ mute_out=video_path.with_stem(f"{video_path.stem}_muted").with_suffix(video_path.suffix)
11
+ subprocess.run(["ffmpeg", "-i", str(video_path), "-c", "copy", "-an", "-y", str(mute_out)], check=True)
12
+
6
13
  def mute_main(app: typer.Typer):
7
- @app.command()
8
- def mute(video_path: Path):
9
- ffmpeg()
10
- ckvideo(video_path)
11
- mute_out=video_path.with_stem(f"{video_path.stem}_muted").with_suffix(video_path.suffix)
12
- subprocess.run(["ffmpeg", "-i", str(video_path), "-c", "copy", "-an", "-y", str(mute_out)], check=True)
14
+ app.command()(mute)
@@ -1,3 +1,4 @@
1
+
1
2
  import questionary
2
3
  import typer
3
4
  #from .h264 import h264
@@ -19,15 +20,7 @@ def encode_main(video_path):
19
20
  if choice is None:
20
21
  raise typer.Exit()
21
22
 
22
- if choice=="encode to h264":
23
- h264(video_path)
24
-
25
- elif choice=="encode to h265":
26
- h265(video_path)
27
-
28
- elif choice=="encode to av1":
29
- av1(video_path)
30
-
23
+
31
24
  elif choice=="Back to main menu":
32
25
  return
33
26
 
@@ -3,10 +3,11 @@ import subprocess
3
3
  from pathlib import Path
4
4
  from ...initial_files.error_handling import ffmpeg , ckvideo
5
5
 
6
+
7
+ def audio(video_path: Path):
8
+ ffmpeg()
9
+ ckvideo(video_path)
10
+ audio_out=video_path.with_suffix(".mp3")
11
+ subprocess.run(["ffmpeg", "-i", str(video_path), "-vn", "-acodec", "libmp3lame", "-y", str(audio_out)], check=True)
6
12
  def audio_main(app: typer.Typer):
7
- @app.command()
8
- def audio(video_path: Path):
9
- ffmpeg()
10
- ckvideo(video_path)
11
- audio_out=video_path.with_suffix(".mp3")
12
- subprocess.run(["ffmpeg", "-i", str(video_path), "-vn", "-acodec", "libmp3lame", "-y", str(audio_out)], check=True)
13
+ app.command()(audio)
@@ -41,33 +41,6 @@ def extract_main(video_path):
41
41
  elif choice=="extract frames":
42
42
  frames(video_path)
43
43
 
44
- elif choice=="extract subtitles":
45
- subtitles(video_path)
46
-
47
- elif choice=="extract chapters":
48
- chapters(video_path)
49
-
50
- elif choice=="extract thumbnails":
51
- thumbnails(video_path)
52
-
53
- elif choice=="extract keyframes":
54
- keyframes(video_path)
55
-
56
- elif choice=="extract audio_track":
57
- audio_track(video_path)
58
-
59
- elif choice=="extract audio_channels":
60
- audio_channels(video_path)
61
-
62
- elif choice=="extract subtitles_track":
63
- subtitles_track(video_path)
64
-
65
- elif choice=="subtitles convert":
66
- subtitles_convert(video_path)
67
-
68
- elif choice=="extract attachments":
69
- attachments(video_path)
70
-
71
44
  elif choice=="Back to main menu":
72
45
  return
73
46
 
@@ -3,12 +3,13 @@ import subprocess
3
3
  from pathlib import Path
4
4
  from ...initial_files.error_handling import ffmpeg , ckvideo
5
5
 
6
+
7
+ def frames(video_path: Path):
8
+ ffmpeg()
9
+ ckvideo(video_path)
10
+ Fdir= video_path.parent
11
+ frames_out= Fdir / "Frames" / video_path.stem
12
+ frames_out.mkdir(parents=True,exist_ok=True)
13
+ subprocess.run(["ffmpeg", "-i", str(video_path),str(frames_out/ "frame_%02d.png")],check=True )
6
14
  def frames_main(app: typer.Typer):
7
- @app.command()
8
- def frames(video_path: Path):
9
- ffmpeg()
10
- ckvideo(video_path)
11
- Fdir= video_path.parent
12
- frames_out= Fdir / "Frames" / video_path.stem
13
- frames_out.mkdir(parents=True,exist_ok=True)
14
- subprocess.run(["ffmpeg", "-i", str(video_path),str(frames_out/ "frame_%02d.png")],check=True )
15
+ app.command()(frames)
fid/tasks/info.py CHANGED
@@ -1,11 +1,12 @@
1
1
  import typer
2
2
  import subprocess
3
3
  from pathlib import Path
4
- from .initial_files.error_handling import ffmpeg , ckvideo
4
+ from ..initial_files.error_handling import ffmpeg , ckvideo
5
5
 
6
+
7
+ def info(video_path: Path):
8
+ ffmpeg()
9
+ ckvideo(cPath)
10
+ subprocess.run(["ffprobe", "-v", "error", "-show_format", "-show_streams", str(video_path)], check=True)
6
11
  def info_main(app: typer.Typer):
7
- @app.command()
8
- def info(video_path: Path):
9
- ffmpeg()
10
- ckvideo(video_path)
11
- subprocess.run(["ffprobe", "-v", "error", "-show_format", "-show_streams", str(video_path)], check=True)
12
+ app.command()(info)
@@ -27,28 +27,7 @@ def stream_main(video_path):
27
27
 
28
28
  if choice is None:
29
29
  raise typer.Exit()
30
-
31
- if choice=="stream with hls":
32
- hls(video_path)
33
-
34
- elif choice=="stream with rtmp":
35
- rtmp(video_path)
36
-
37
- elif choice=="stream with dash":
38
- dash(video_path)
39
-
40
- elif choice=="stream with srt":
41
- srt(video_path)
42
30
 
43
- elif choice=="stream with udp":
44
- udp(video_path)
45
-
46
- elif choice=="stream with rtsp":
47
- rtsp(video_path)
48
-
49
- elif choice=="stream with http":
50
- http(video_path)
51
-
52
31
  elif choice=="Back to main menu":
53
32
  return
54
33
 
@@ -3,12 +3,13 @@ import subprocess
3
3
  from pathlib import Path
4
4
  from ...initial_files.error_handling import ffmpeg , ckvideo
5
5
 
6
- def compress_main(app: typer.Typer):
7
- @app.command()
8
- def compress(video_path: Path, crf: int=28):
9
- ffmpeg()
10
- ckvideo(video_path)
11
- compress_out= video_path.with_stem(f"{video_path.stem}_compressed").with_suffix(".mkv")
12
- subprocess.run(
6
+
7
+ def compress(video_path: Path, crf: int=28):
8
+ ffmpeg()
9
+ ckvideo(video_path)
10
+ compress_out= video_path.with_stem(f"{video_path.stem}_compressed").with_suffix(".mkv")
11
+ subprocess.run(
13
12
  ["ffmpeg", "-i", str(video_path),"-c:v", "libx264", "-crf", str(crf), "-preset","medium","-c:a","aac","-b:a","96k","-y",str(compress_out),]
14
- , check=True)
13
+ , check=True)
14
+ def compress_main(app: typer.Typer):
15
+ app.command()(compress)
fid/tasks/video/gif.py CHANGED
@@ -3,10 +3,12 @@ import subprocess
3
3
  from pathlib import Path
4
4
  from ...initial_files.error_handling import ffmpeg , ckvideo
5
5
 
6
+
7
+ def gif(video_path: Path):
8
+ ffmpeg()
9
+ ckvideo(video_path)
10
+ gif_out=video_path.with_suffix(".gif")
11
+ subprocess.run(["ffmpeg", "-i", str(video_path), "-t", "3", "-vf", "scale=320:-1", "-y", str(gif_out)], check=True)
12
+
6
13
  def gif_main(app: typer.Typer):
7
- @app.command()
8
- def gif(video_path: Path):
9
- ffmpeg()
10
- ckvideo(video_path)
11
- gif_out=video_path.with_suffix(".gif")
12
- subprocess.run(["ffmpeg", "-i", str(video_path), "-t", "3", "-vf", "scale=320:-1", "-y", str(gif_out)], check=True)
14
+ app.command()(gif)
fid/tasks/video/resize.py CHANGED
@@ -3,13 +3,12 @@ import subprocess
3
3
  from pathlib import Path
4
4
  from ...initial_files.error_handling import ffmpeg , ckvideo
5
5
 
6
- def resize_main(app: typer.Typer):
7
- @app.command()
8
- def resize(video_path: Path, width: int):
9
- ffmpeg()
10
- ckvideo(video_path)
11
- resize_out= video_path.with_stem(f"{video_path.stem}_{width}w").with_suffix(".mp4")
12
- subprocess.run(
6
+
7
+ def resize(video_path: Path, width: int):
8
+ ffmpeg()
9
+ ckvideo(video_path)
10
+ resize_out= video_path.with_stem(f"{video_path.stem}_{width}w").with_suffix(".mp4")
11
+ subprocess.run(
13
12
  ["ffmpeg",
14
13
  "-i", str(video_path),
15
14
  "-vf", f"scale={width}:-1",
@@ -17,4 +16,7 @@ def resize_main(app: typer.Typer):
17
16
  "-preset", "medium",
18
17
  "-c:a", "copy",
19
18
  "-y",
20
- str(resize_out)], check=True)
19
+ str(resize_out)], check=True)
20
+
21
+ def resize_main(app: typer.Typer):
22
+ app.command()(resize)
@@ -5,7 +5,7 @@ from .compressor import compress
5
5
  #from .crop import crop
6
6
  #from .fps import fps
7
7
  from .gif import gif
8
- from .resize import resize
8
+ #from .resize import resize
9
9
  #from .rotate import rotate
10
10
  #from .speed import speed
11
11
  #from .trim import trim
@@ -33,32 +33,13 @@ def video_main(video_path):
33
33
  raise typer.Exit()
34
34
 
35
35
  if choice=="compress the video":
36
- compress(video_path)
37
-
36
+ compress(video_path)
37
+
38
38
  elif choice=="make gif":
39
39
  gif(video_path)
40
-
41
- elif choice=="speed up/down":
42
- speed(video_path)
43
-
44
- elif choice=="change fps":
45
- fps(video_path)
46
-
47
- elif choice=="concat videos":
48
- concat(video_path)
49
-
50
- elif choice=="crop video":
51
- crop(video_path)
52
-
53
- elif choice=="resize video":
54
- resize(video_path)
55
-
56
- elif choice=="rotate video":
57
- rotate(video_path)
58
-
59
- elif choice=="trim video":
60
- trim(video_path)
61
-
40
+
41
+
42
+
62
43
  elif choice=="Back to main menu":
63
44
  return
64
45
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fid-ffmpeg
3
- Version: 0.4.7
3
+ Version: 0.4.9
4
4
  Summary: FFmpeg-based CLI tool for video and audio operations like editing, extracting, streaming, and encoding
5
5
  Author-email: Omar Abdalgwad <ahlawyomar95@gmail.com>
6
6
  License: MIT License
@@ -1,11 +1,11 @@
1
1
  fid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- fid/fid.py,sha256=HYobyALoaydu7Z8T-_BCKHEcF--MT7Xac9EcshIhoEU,1109
3
- fid/fid_interactive.py,sha256=QnYlfo0zkVUO6vOzz0pZc3W74O18PYGnvYpEagu8VA0,1277
2
+ fid/fid.py,sha256=kHBNRSpyDedI0e-UUb4zUcpIVnEopdVNIrE2RHqw2ow,1135
3
+ fid/fid_interactive.py,sha256=oy_xGbZjPiwMb_3ByRoufRuJvEx47TsY1HIF3C56PCo,1274
4
4
  fid/welcome.py,sha256=2zjllb-_E1MhE6cBRX_w06Rk_5WZXZZ55Ec9MyD8W3M,838
5
5
  fid/initial_files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- fid/initial_files/error_handling.py,sha256=Z1gSb90rS2Vy4VZHS9Zk7OHPL2o6NOw4ipzBQTmjLbo,351
6
+ fid/initial_files/error_handling.py,sha256=AlwtSDsoZpC-I8o-Un0Z9zVNH5oVDm7Qx1diI1IvN4Y,389
7
7
  fid/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- fid/tasks/info.py,sha256=lDrvHBGTp-PQFb-6jZ9FeB6ou4SNo4CO4Rc9SVPBHPo,367
8
+ fid/tasks/info.py,sha256=_RVwlrMUTQt5wLtUhL4wui2kzmbg_hQDQWd-Nl72Gck,354
9
9
  fid/tasks/audio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  fid/tasks/audio/audio_interactive.py,sha256=6iwNX8pa_SNG_cFRIR3U-9AGWGkBK2IH556NXn0KdZM,2533
11
11
  fid/tasks/audio/bitrate.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -17,7 +17,7 @@ fid/tasks/audio/denoise.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  fid/tasks/audio/equalizer.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  fid/tasks/audio/fade.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  fid/tasks/audio/mix.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- fid/tasks/audio/mute.py,sha256=OsPLClHQfWdJaUg_DOiJok0zKOtIhcAk6Ex7wuGUaFs,466
20
+ fid/tasks/audio/mute.py,sha256=1lNHXO0RVADA_-sz8jMlaHVgtlfmI6Imalpf5BSUxQY,455
21
21
  fid/tasks/audio/normalize.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  fid/tasks/audio/replace.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  fid/tasks/audio/speed.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -25,17 +25,17 @@ fid/tasks/audio/trim.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  fid/tasks/audio/volume.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  fid/tasks/encode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  fid/tasks/encode/av1.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- fid/tasks/encode/encode_interactive.py,sha256=5PVz1zk4bBk52kRQweg8OBJwHffr11LTin_3pAcLqbc,864
28
+ fid/tasks/encode/encode_interactive.py,sha256=CK60vkpZ1qtrQ5ewEMZ1M3aoc0eT0oU21xbq2ZZBEOw,665
29
29
  fid/tasks/encode/h264.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  fid/tasks/encode/h265.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  fid/tasks/extract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  fid/tasks/extract/attachments.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- fid/tasks/extract/audio.py,sha256=vsAcpzp7qauIRakxrbWmleSeXKJoqKqwYwK2QSYsejA,432
33
+ fid/tasks/extract/audio.py,sha256=eWB3Y7xjmT2JQhhfF_v0EY5krCkkepE9IeqqqXEVJ9M,420
34
34
  fid/tasks/extract/audio_channels.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  fid/tasks/extract/audio_track.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  fid/tasks/extract/chapters.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- fid/tasks/extract/extract_interactive.py,sha256=eXajK6x1mIP7uhABCeb29MmC3dSLjyJxkojdxVNEzeM,2207
38
- fid/tasks/extract/frames.py,sha256=AXo5YYwcPqiGiNzIVh2rbgwdTAuOuFWQ_nVDlzTzOyo,506
37
+ fid/tasks/extract/extract_interactive.py,sha256=fZxslGvpiM61p7NdefsiBiQpFE1cOEbfxj8T77YQA0Y,1449
38
+ fid/tasks/extract/frames.py,sha256=hJ4-yElJSh8Vjr7wAaP-STr8D83-EkILheTmhS98c9w,487
39
39
  fid/tasks/extract/keyframes.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  fid/tasks/extract/subtitles.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  fid/tasks/extract/subtitles_convert.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -48,22 +48,22 @@ fid/tasks/stream/http.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  fid/tasks/stream/rtmp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  fid/tasks/stream/rtsp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  fid/tasks/stream/srt.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- fid/tasks/stream/stream_interactive.py,sha256=0RrCBqxUEa803-MUtvHs7ESeT34d8GWx42SJ0CzAfjI,1446
51
+ fid/tasks/stream/stream_interactive.py,sha256=pN4RmAoTUWhxCJFkrd6N74xQhHybWNAAD6R9unpU_9E,913
52
52
  fid/tasks/stream/udp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  fid/tasks/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- fid/tasks/video/compressor.py,sha256=cOBjww_BLYQuccZR0O1TCw5eIif0-loTb-RuZ4eZ7VI,578
54
+ fid/tasks/video/compressor.py,sha256=c5S6gDnE9u2RaMsoas_6tZSZOT74PhIfrrIYgZ0ihmE,569
55
55
  fid/tasks/video/concat.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  fid/tasks/video/crop.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  fid/tasks/video/fps.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
- fid/tasks/video/gif.py,sha256=o2_przDXUjNMxs0LlfQLRYK6xRsb2Lti0LRs0fSA07g,426
59
- fid/tasks/video/resize.py,sha256=aQTGZDiwCW2RhfX_7DMc7S-mqTuYsqw5G91xkDRZ5Y0,677
58
+ fid/tasks/video/gif.py,sha256=bhMzV77zgpW9qVjDYJnQl1IqKJulDR1uSl-6eTckHGI,414
59
+ fid/tasks/video/resize.py,sha256=KnIDdKk4HA77skQpClvLw82MdEamBtrCZfPnuZniTws,668
60
60
  fid/tasks/video/rotate.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  fid/tasks/video/speed.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  fid/tasks/video/trim.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
63
- fid/tasks/video/video_interactive.py,sha256=maIXAtGnMpIAjI1Ydpl-JGBjWfkTqj86kLxXI6nzT00,1647
64
- fid_ffmpeg-0.4.7.dist-info/licenses/LICENSE,sha256=F-pOyGrwdERPucmVHPPrD37KZZ7sphCDJeAzG5gxFOw,1091
65
- fid_ffmpeg-0.4.7.dist-info/METADATA,sha256=gpzDfU7a3uDy1fccFToCMigDaXFq0m5q_FJEBzmIQQk,4498
66
- fid_ffmpeg-0.4.7.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
67
- fid_ffmpeg-0.4.7.dist-info/entry_points.txt,sha256=wc8Iju3nkXAuyqF5NB1276l_AGtakuifMGR3D42dqB8,36
68
- fid_ffmpeg-0.4.7.dist-info/top_level.txt,sha256=5jgogeo314G3j_oXUp3BE4wBE3t82ijRwLwF1KnYiDg,4
69
- fid_ffmpeg-0.4.7.dist-info/RECORD,,
63
+ fid/tasks/video/video_interactive.py,sha256=lmvCXq6PbloGDKR3WXMpF1QlvFNc-QXMTpIVgwYmaU8,1190
64
+ fid_ffmpeg-0.4.9.dist-info/licenses/LICENSE,sha256=F-pOyGrwdERPucmVHPPrD37KZZ7sphCDJeAzG5gxFOw,1091
65
+ fid_ffmpeg-0.4.9.dist-info/METADATA,sha256=k_p7rDQ_sTC5rZHJKhw7gGcgI5MXdvkczhSuzZ_j92Y,4498
66
+ fid_ffmpeg-0.4.9.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
67
+ fid_ffmpeg-0.4.9.dist-info/entry_points.txt,sha256=wc8Iju3nkXAuyqF5NB1276l_AGtakuifMGR3D42dqB8,36
68
+ fid_ffmpeg-0.4.9.dist-info/top_level.txt,sha256=5jgogeo314G3j_oXUp3BE4wBE3t82ijRwLwF1KnYiDg,4
69
+ fid_ffmpeg-0.4.9.dist-info/RECORD,,