ahmedghani commited on
Commit
2adc529
β€’
1 Parent(s): fc72765
Files changed (3) hide show
  1. .gitignore +129 -0
  2. app.py +2 -5
  3. video_convertor.py +8 -4
.gitignore ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ .python-version
86
+
87
+ # pipenv
88
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
90
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
91
+ # install all needed dependencies.
92
+ #Pipfile.lock
93
+
94
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env
106
+ .venv
107
+ env/
108
+ venv/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
app.py CHANGED
@@ -72,14 +72,11 @@ with demo:
72
  with gr.Column():
73
  pass
74
  with gr.Row():
75
- with gr.Column():
76
- output_video = gr.Video(label="Output Video", interactive=False)
77
- with gr.Column():
78
- output_audio = gr.Audio(label="Output Audio", interactive=False)
79
  status = gr.Textbox(label="Status", interactive=False)
80
  format_select.change(lambda x: gr.Radio.update(choices=video_format if x == "Video" else audio_format, interactive=True), inputs=[format_select], outputs=[format])
81
  format.change(lambda x: gr.Button.update(interactive=True), None, outputs=[convert_btn])
82
- convert_btn.click(convert_video, inputs=[input_video, format], outputs=[output_audio, output_video, status])
83
  gr.Markdown("""## <center style="margin:20px;">Developed by Muhammad Ahmed<img src="https://avatars.githubusercontent.com/u/63394104?v=4" style="height:50px;width:50px;border-radius:50%;margin:5px;"></img></center>
84
  """)
85
  demo.launch(show_api=False)
 
72
  with gr.Column():
73
  pass
74
  with gr.Row():
75
+ output = gr.File(label="Output File", interactive=False)
 
 
 
76
  status = gr.Textbox(label="Status", interactive=False)
77
  format_select.change(lambda x: gr.Radio.update(choices=video_format if x == "Video" else audio_format, interactive=True), inputs=[format_select], outputs=[format])
78
  format.change(lambda x: gr.Button.update(interactive=True), None, outputs=[convert_btn])
79
+ convert_btn.click(convert_video, inputs=[input_video, format], outputs=[output, status])
80
  gr.Markdown("""## <center style="margin:20px;">Developed by Muhammad Ahmed<img src="https://avatars.githubusercontent.com/u/63394104?v=4" style="height:50px;width:50px;border-radius:50%;margin:5px;"></img></center>
81
  """)
82
  demo.launch(show_api=False)
video_convertor.py CHANGED
@@ -71,6 +71,10 @@ class VideoConverter:
71
  try:
72
  self.video = VideoFileClip(self.input_file)
73
  self.audio = self.video.audio
 
 
 
 
74
  except Exception as e:
75
  raise Exception(f"Error loading video: {e}")
76
 
@@ -103,10 +107,10 @@ def convert_video(input_file, format):
103
  try:
104
  converter = VideoConverter(input_file)
105
  if format in ['webm', 'wmv', 'mkv', 'mp4', 'avi', 'mpeg', 'vob', 'flv']:
106
- return None, converter.convert_video(f"output.{format}", format), "Converted video successfully!"
107
  elif format in ['mp3', 'wav', 'ogg', 'flac', 'aac']:
108
- return converter.convert_audio(f"output.{format}", format), None, "Converted audio successfully!"
109
  else:
110
- return None, None, "Unsupported format!"
111
  except Exception as e:
112
- return None, None, str(e)
 
71
  try:
72
  self.video = VideoFileClip(self.input_file)
73
  self.audio = self.video.audio
74
+ if self.audio is not None:
75
+ self.audio.codec = self.video.audio.codec
76
+ else:
77
+ raise Exception("Error loading audio from video")
78
  except Exception as e:
79
  raise Exception(f"Error loading video: {e}")
80
 
 
107
  try:
108
  converter = VideoConverter(input_file)
109
  if format in ['webm', 'wmv', 'mkv', 'mp4', 'avi', 'mpeg', 'vob', 'flv']:
110
+ return converter.convert_video(f"output.{format}", format), "Converted video successfully!"
111
  elif format in ['mp3', 'wav', 'ogg', 'flac', 'aac']:
112
+ return converter.convert_audio(f"output.{format}", format), "Converted audio successfully!"
113
  else:
114
+ return None, "Unsupported format!"
115
  except Exception as e:
116
+ return None, str(e)