qqwjq1981 commited on
Commit
edf5dd6
·
verified ·
1 Parent(s): 858faf9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -5
app.py CHANGED
@@ -197,27 +197,38 @@ def add_transcript_to_video(video_path, translated_json, output_path):
197
  text_clips = []
198
 
199
  logger.debug("Full translated_json: %s", translated_json)
200
- for entry in translated_json:
201
- logger.debug("Processing entry: %s", entry)
 
 
 
 
202
 
203
  font_path = "./NotoSansSC-Regular.ttf"
204
 
205
  for entry in translated_json:
 
 
206
  # Ensure `entry` is a dictionary with keys "start", "end", and "translated"
207
  if isinstance(entry, dict) and "translated" in entry:
208
  txt_clip = TextClip(
209
- text=entry["translated"], font=font_path, method='caption', color='yellow', size=video.size
 
 
 
 
 
210
  ).with_start(entry["start"]).with_duration(entry["end"] - entry["start"]).with_position(('bottom')).with_opacity(0.7)
211
  text_clips.append(txt_clip)
212
  else:
213
  raise ValueError(f"Invalid entry format: {entry}")
214
-
215
  # Overlay all text clips on the original video
216
  final_video = CompositeVideoClip([video] + text_clips)
217
 
218
  # Write the result to a file
219
  final_video.write_videofile(output_path, codec='libx264', audio_codec='aac')
220
-
221
  # Mock functions for platform actions and analytics
222
  def mock_post_to_platform(platform, content_title):
223
  return f"Content '{content_title}' successfully posted on {platform}!"
 
197
  text_clips = []
198
 
199
  logger.debug("Full translated_json: %s", translated_json)
200
+
201
+ # Define relative font size based on video height (adjust this value as necessary)
202
+ subtitle_font_size = video.h // 15 # 1/15th of video height (you can tweak this for better results)
203
+
204
+ # Set maximum width for subtitle wrapping (80% of video width)
205
+ max_subtitle_width = video.w * 0.8 # Adjust this value as needed for wrapping
206
 
207
  font_path = "./NotoSansSC-Regular.ttf"
208
 
209
  for entry in translated_json:
210
+ logger.debug("Processing entry: %s", entry)
211
+
212
  # Ensure `entry` is a dictionary with keys "start", "end", and "translated"
213
  if isinstance(entry, dict) and "translated" in entry:
214
  txt_clip = TextClip(
215
+ text=entry["translated"],
216
+ font=font_path,
217
+ method='caption',
218
+ color='yellow',
219
+ fontsize=subtitle_font_size, # Use relative font size
220
+ size=(max_subtitle_width, None) # Restrict the width to ensure wrapping
221
  ).with_start(entry["start"]).with_duration(entry["end"] - entry["start"]).with_position(('bottom')).with_opacity(0.7)
222
  text_clips.append(txt_clip)
223
  else:
224
  raise ValueError(f"Invalid entry format: {entry}")
225
+
226
  # Overlay all text clips on the original video
227
  final_video = CompositeVideoClip([video] + text_clips)
228
 
229
  # Write the result to a file
230
  final_video.write_videofile(output_path, codec='libx264', audio_codec='aac')
231
+
232
  # Mock functions for platform actions and analytics
233
  def mock_post_to_platform(platform, content_title):
234
  return f"Content '{content_title}' successfully posted on {platform}!"