gnosticdev commited on
Commit
abed2e9
verified
1 Parent(s): 59b95fb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -2
app.py CHANGED
@@ -15,8 +15,8 @@ import random
15
  from googleapiclient.discovery import build
16
  from google.oauth2 import service_account
17
  from googleapiclient.http import MediaFileUpload
18
- from io import BytesIO
19
 
 
20
  service_account_info = json.loads(os.getenv('GOOGLE_SERVICE_ACCOUNT', '{}'))
21
  if service_account_info:
22
  with open('service-account.json', 'w') as f:
@@ -122,16 +122,27 @@ def adjust_background_music(video_duration, music_file):
122
  print(f"Error ajustando m煤sica: {e}")
123
  return None
124
 
 
 
 
 
 
 
125
  def combine_audio_video(audio_file, video_clip, music_clip=None):
126
  try:
127
  audio_clip = AudioFileClip(audio_file)
128
  total_duration = audio_clip.duration + 2
129
- video_clip = video_clip.loop(duration=total_duration)
 
 
 
130
  video_clip = video_clip.set_duration(total_duration).fadeout(2)
 
131
  final_clip = video_clip.set_audio(audio_clip)
132
  if music_clip:
133
  music_clip = music_clip.set_duration(total_duration).audio_fadeout(2)
134
  final_clip = final_clip.set_audio(CompositeAudioClip([audio_clip, music_clip]))
 
135
  output_filename = f"final_video_{int(time.time())}.mp4"
136
  output_path = os.path.join(output_folder, output_filename)
137
  final_clip.write_videofile(output_path, codec="libx264", audio_codec="aac", fps=24)
 
15
  from googleapiclient.discovery import build
16
  from google.oauth2 import service_account
17
  from googleapiclient.http import MediaFileUpload
 
18
 
19
+ # Crear el archivo de credenciales de servicio desde los secretos
20
  service_account_info = json.loads(os.getenv('GOOGLE_SERVICE_ACCOUNT', '{}'))
21
  if service_account_info:
22
  with open('service-account.json', 'w') as f:
 
122
  print(f"Error ajustando m煤sica: {e}")
123
  return None
124
 
125
+ def calculate_real_duration(video):
126
+ frame_time = 1 / video.fps
127
+ total_frames = int(video.duration * video.fps)
128
+ real_duration = total_frames * frame_time
129
+ return real_duration
130
+
131
  def combine_audio_video(audio_file, video_clip, music_clip=None):
132
  try:
133
  audio_clip = AudioFileClip(audio_file)
134
  total_duration = audio_clip.duration + 2
135
+
136
+ # Ajustar la duraci贸n del video al 煤ltimo fotograma v谩lido
137
+ real_duration = calculate_real_duration(video_clip)
138
+ video_clip = video_clip.subclip(0, min(real_duration, total_duration)).loop(duration=total_duration)
139
  video_clip = video_clip.set_duration(total_duration).fadeout(2)
140
+
141
  final_clip = video_clip.set_audio(audio_clip)
142
  if music_clip:
143
  music_clip = music_clip.set_duration(total_duration).audio_fadeout(2)
144
  final_clip = final_clip.set_audio(CompositeAudioClip([audio_clip, music_clip]))
145
+
146
  output_filename = f"final_video_{int(time.time())}.mp4"
147
  output_path = os.path.join(output_folder, output_filename)
148
  final_clip.write_videofile(output_path, codec="libx264", audio_codec="aac", fps=24)