artificialguybr commited on
Commit
c0dab6a
·
verified ·
1 Parent(s): 7c3fc86

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -8
app.py CHANGED
@@ -12,26 +12,25 @@ def get_video_duration(video_path):
12
 
13
  def merge_videos(video1_path, video2_path):
14
  output_filename = f"{uuid4()}_merged.mp4"
15
- duration = get_video_duration(video1_path)
16
 
17
- # Definindo uma largura comum para ambos os vídeos. Escolha um valor baseado na sua necessidade.
18
- # Por exemplo, 720 para uma boa compatibilidade com a maioria dos dispositivos.
19
  common_width = 720
20
 
21
  ffmpeg_cmd = (
22
  f'ffmpeg -i "{video1_path}" -i "{video2_path}" '
23
  f'-filter_complex '
24
- f'"[0:v]scale={common_width}:-2:force_original_aspect_ratio=decrease,pad={common_width}:ih:(ow-iw)/2:(oh-ih)/2,setdar=9/16[v0];'
25
- f'[1:v]scale={common_width}:-2:force_original_aspect_ratio=decrease,pad={common_width}:ih:(ow-iw)/2:(oh-ih)/2,setdar=9/16[v1];'
26
- f'[v0][v1]vstack=inputs=2[v];'
27
- f'[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo[a]" '
28
- f'-map "[v]" -map "[a]" -c:v libx264 -c:a aac -t {duration} {output_filename}'
29
  )
30
 
31
  subprocess.run(ffmpeg_cmd, shell=True, check=True)
32
 
33
  return output_filename
34
 
 
35
  def gradio_interface(video1, video2):
36
  # Os vídeos já são passados como caminhos de arquivo temporário, então não precisamos abrir e salvar
37
  output_video = merge_videos(video1, video2)
 
12
 
13
  def merge_videos(video1_path, video2_path):
14
  output_filename = f"{uuid4()}_merged.mp4"
 
15
 
16
+ # Não limitaremos a duração ao vídeo 1, pois queremos o vídeo completo mesclado.
17
+ # A largura comum permanece, mas agora lidaremos com aspect ratios variados de forma mais dinâmica.
18
  common_width = 720
19
 
20
  ffmpeg_cmd = (
21
  f'ffmpeg -i "{video1_path}" -i "{video2_path}" '
22
  f'-filter_complex '
23
+ f'"[0:v]scale={common_width}:-2:force_original_aspect_ratio=decrease,pad={common_width}:(ih*2):(ow-iw)/2:0,setdar=dar[v0];'
24
+ f'[1:v]scale={common_width}:-2:force_original_aspect_ratio=decrease,pad={common_width}:(ih*2):(ow-iw)/2:ih,setdar=dar[v1];'
25
+ f'[v0][v1]concat=n=2:v=1:a=0[v]" '
26
+ f'-map "[v]" -map 0:a? -c:v libx264 -c:a aac {output_filename}'
 
27
  )
28
 
29
  subprocess.run(ffmpeg_cmd, shell=True, check=True)
30
 
31
  return output_filename
32
 
33
+
34
  def gradio_interface(video1, video2):
35
  # Os vídeos já são passados como caminhos de arquivo temporário, então não precisamos abrir e salvar
36
  output_video = merge_videos(video1, video2)