Spaces:
Sleeping
Sleeping
File size: 2,071 Bytes
aff0a09 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
from utils.create_subtitles import hex_to_ffmpeg_color, create_subtitles
from utils.transcribe_audio import transcribe_audio
from utils.video_to_audio import extract_audio
import subprocess
import os
def generate_basic_subtitles(customization_options):
customization_options['font_color'] = hex_to_ffmpeg_color(customization_options['font_color'])
video_path = customization_options['video']
audio_file_path = "./data/basic/audio.mp3"
subtitle_file = "./data/basic/subtitles.srt"
output_directory = "./data/basic/videos"
extract_audio(video_path, audio_file_path)
transcription = transcribe_audio(audio_file_path)
create_subtitles(transcription, subtitle_file)
subtitle_output_path = add_subtitle(video_path, subtitle_file, customization_options, output_directory)
result_output_path = add_text_to_video(subtitle_output_path, customization_options, output_directory)
return result_output_path
def add_subtitle(video_path, subtitle_file, customization_options, output_directory):
subtitle_video_path = os.path.join(output_directory, 'subtitle_video.mp4')
# Add the subtitle to the video
subtitle_cmd = [
"ffmpeg",
"-i", video_path,
"-vf", f"subtitles={subtitle_file}:force_style='Fontsize={customization_options['font_size']},PrimaryColour={customization_options['font_color']},Fontname={customization_options['font_family']},MarginV=50'",
"-c:a", "copy",
"-y", subtitle_video_path
]
subprocess.run(subtitle_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return subtitle_video_path
def add_text_to_video(subtitle_output_path, customization_options, output_directory):
result_video_path = os.path.join(output_directory, 'result.mp4')
cmd = [
'ffmpeg',
'-i', subtitle_output_path,
'-vf', f'drawtext=text=\'{customization_options["credit"]}\':fontcolor=white:fontsize={customization_options["credit_size"]}:box=1:[email protected]:boxborderw=5:x=(w-text_w)/2:y=h-th-10',
'-codec:a', 'copy',
"-y", result_video_path
]
subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return result_video_path
|