RandomPersonRR commited on
Commit
f699201
·
verified ·
1 Parent(s): 89d0e18

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -12
app.py CHANGED
@@ -7,7 +7,7 @@ import shutil
7
  import gradio as gr
8
 
9
  accel = 'auto'
10
- video_extra = ['-crf', '63', '-c:v', 'libx264', '-preset', 'ultrafast', '-tune', 'zerolatency']
11
 
12
  UPLOAD_FOLDER = 'uploads'
13
  CONVERTED_FOLDER = 'converted'
@@ -25,14 +25,16 @@ async def run_subprocess(cmd):
25
 
26
  async def convert_video_task(input_path, downscale, faster, use_mp3):
27
  if use_mp3:
28
- # Directly compress audio to MP3 with video untouched or skipped
29
  output_path = os.path.join(CONVERTED_FOLDER, f"{uuid.uuid4()}.mp3")
30
- ffmpeg_cmd = ['ffmpeg', '-y', '-i', input_path, '-vn',
31
- '-c:a', 'libmp3lame', '-b:a', '8k', '-ar', '24000', '-ac', '1', output_path]
 
 
32
  await run_subprocess(ffmpeg_cmd)
33
- return output_path, None # No video output in this case
34
 
35
- # Non-MP3 path: split streams
36
  audio_wav = os.path.join(CONVERTED_FOLDER, f"{uuid.uuid4()}.wav")
37
  audio_output = os.path.join(CONVERTED_FOLDER, f"{uuid.uuid4()}.m4a")
38
  video_output = os.path.join(CONVERTED_FOLDER, f"{uuid.uuid4()}.mp4")
@@ -42,14 +44,17 @@ async def convert_video_task(input_path, downscale, faster, use_mp3):
42
  'ffmpeg', '-y', '-i', input_path, '-ac', '1', '-ar', '8000', audio_wav
43
  ])
44
 
45
- # Compress with fdkaac
46
  await run_subprocess([
47
- 'fdkaac', '-b', '1k', '-C', '-f', '2', '-G', '1', '-w', '8000',
48
  '-o', audio_output, audio_wav
49
  ])
50
 
51
- # Video compression
52
- video_cmd = ['ffmpeg', '-y', '-hwaccel', accel, '-i', input_path, *video_extra, '-an', video_output]
 
 
 
53
  if faster:
54
  video_cmd.extend(['-preset', 'ultrafast'])
55
  await run_subprocess(video_cmd)
@@ -98,9 +103,9 @@ with gr.Blocks() as demo:
98
 
99
  with gr.Row():
100
  downscale = gr.Checkbox(label="Downscale Video (144p)", value=False)
101
- faster = gr.Checkbox(label="Faster Conversion", value=False)
102
  with gr.Row():
103
- use_mp3 = gr.Checkbox(label="Use MP3 (skips video compression)", value=False)
104
  audio_only = gr.Checkbox(label="Only Audio", value=False)
105
 
106
  convert_button = gr.Button("Convert")
 
7
  import gradio as gr
8
 
9
  accel = 'auto'
10
+ video_base_opts = ['-crf', '63', '-c:v', 'libx264', '-tune', 'zerolatency']
11
 
12
  UPLOAD_FOLDER = 'uploads'
13
  CONVERTED_FOLDER = 'converted'
 
25
 
26
  async def convert_video_task(input_path, downscale, faster, use_mp3):
27
  if use_mp3:
28
+ # Only extract MP3 audio, no splitting
29
  output_path = os.path.join(CONVERTED_FOLDER, f"{uuid.uuid4()}.mp3")
30
+ ffmpeg_cmd = [
31
+ 'ffmpeg', '-y', '-i', input_path, '-vn',
32
+ '-c:a', 'libmp3lame', '-b:a', '8k', '-ar', '24000', '-ac', '1', output_path
33
+ ]
34
  await run_subprocess(ffmpeg_cmd)
35
+ return output_path, None
36
 
37
+ # Non-MP3 path: split audio and video
38
  audio_wav = os.path.join(CONVERTED_FOLDER, f"{uuid.uuid4()}.wav")
39
  audio_output = os.path.join(CONVERTED_FOLDER, f"{uuid.uuid4()}.m4a")
40
  video_output = os.path.join(CONVERTED_FOLDER, f"{uuid.uuid4()}.mp4")
 
44
  'ffmpeg', '-y', '-i', input_path, '-ac', '1', '-ar', '8000', audio_wav
45
  ])
46
 
47
+ # Compress WAV → AAC with local fdkaac
48
  await run_subprocess([
49
+ './fdkaac', '-b', '1k', '-C', '-f', '2', '-G', '1', '-w', '8000',
50
  '-o', audio_output, audio_wav
51
  ])
52
 
53
+ # Compress video with extreme low quality
54
+ video_cmd = [
55
+ 'ffmpeg', '-y', '-hwaccel', accel, '-i', input_path,
56
+ *video_base_opts, '-an', video_output
57
+ ]
58
  if faster:
59
  video_cmd.extend(['-preset', 'ultrafast'])
60
  await run_subprocess(video_cmd)
 
103
 
104
  with gr.Row():
105
  downscale = gr.Checkbox(label="Downscale Video (144p)", value=False)
106
+ faster = gr.Checkbox(label="Faster Conversion (ultrafast preset)", value=False)
107
  with gr.Row():
108
+ use_mp3 = gr.Checkbox(label="Use MP3 (skip video compression)", value=False)
109
  audio_only = gr.Checkbox(label="Only Audio", value=False)
110
 
111
  convert_button = gr.Button("Convert")