Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| def process_video(video, language): | |
| # Sample subtitles | |
| subtitles = [ | |
| ["00:00:01", "00:00:04", "Hello and welcome"], | |
| ["00:00:05", "00:00:08", "This is video OCR test"], | |
| ["00:00:09", "00:00:12", f"Selected language: {language}"], | |
| ] | |
| # Create SRT content | |
| srt_content = "" | |
| for i, sub in enumerate(subtitles, 1): | |
| srt_content += f"{i}\n{sub[0]},000 --> {sub[1]},000\n{sub[2]}\n\n" | |
| # Save SRT file | |
| with open("subtitles.srt", "w", encoding="utf-8") as f: | |
| f.write(srt_content) | |
| return subtitles, "subtitles.srt" | |
| # Create interface | |
| with gr.Blocks(title="Video OCR", theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("# 🎬 Video Hardsub OCR") | |
| gr.Markdown("Upload video and extract hardcoded subtitles") | |
| with gr.Row(): | |
| with gr.Column(): | |
| video_input = gr.Video(label="Upload Video") | |
| language = gr.Dropdown( | |
| choices=["English", "Japanese", "Thai", "Chinese"], | |
| label="OCR Language" | |
| ) | |
| process_btn = gr.Button("Process Video", variant="primary") | |
| with gr.Column(): | |
| subtitle_output = gr.Dataframe( | |
| headers=["Start", "End", "Text"], | |
| label="Extracted Subtitles" | |
| ) | |
| file_output = gr.File(label="Download SRT") | |
| process_btn.click( | |
| fn=process_video, | |
| inputs=[video_input, language], | |
| outputs=[subtitle_output, file_output] | |
| ) | |
| demo.launch() |