Spaces:
Building
Building
Update app.py
Browse files
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 |
-
|
|
|
|
|
|
|
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)
|