Lenylvt commited on
Commit
7cc95f1
·
verified ·
1 Parent(s): a18903d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -12
app.py CHANGED
@@ -1,25 +1,39 @@
1
  import streamlit as st
2
  from moviepy.editor import VideoFileClip, CompositeVideoClip
3
- import ffmpeg # Make sure to install ffmpeg-python
4
  import tempfile
5
  import os
 
6
 
7
- def add_hard_subtitle_to_video(input_video, subtitle_file, subtitle_language):
8
- video_input_stream = ffmpeg.input(input_video)
 
 
 
 
 
 
 
 
9
  output_video = tempfile.mktemp(suffix=".mp4")
10
  stream = ffmpeg.output(
11
- video_input_stream, output_video,
12
- vf=f"subtitles={subtitle_file}:force_style='FontName=Arial,FontSize=24'"
 
 
13
  )
14
  ffmpeg.run(stream, overwrite_output=True)
15
  return output_video
16
 
17
  def video_demo(video, subtitle):
18
- if subtitle is not None:
19
- processed_video_path = add_hard_subtitle_to_video(video.name, subtitle.name, "en") # Assuming English subtitles
 
 
 
20
  return processed_video_path
21
  else:
22
- return video
23
 
24
  # Streamlit UI
25
  st.title("Video Subtitler")
@@ -27,9 +41,11 @@ st.title("Video Subtitler")
27
  uploaded_video = st.file_uploader("Upload a video", type=["mp4", "avi", "mov"])
28
  uploaded_subtitle = st.file_uploader("Upload subtitle file", type=["srt", "vtt"])
29
 
30
- if uploaded_video is not None and uploaded_subtitle is not None:
31
  processed_video_path = video_demo(uploaded_video, uploaded_subtitle)
32
-
33
- st.video(processed_video_path)
 
 
34
  else:
35
- st.write("Please upload both a video and a subtitle file.")
 
1
  import streamlit as st
2
  from moviepy.editor import VideoFileClip, CompositeVideoClip
3
+ import ffmpeg
4
  import tempfile
5
  import os
6
+ import shutil
7
 
8
+ def save_uploaded_file(uploaded_file):
9
+ try:
10
+ with tempfile.NamedTemporaryFile(delete=False, suffix=os.path.splitext(uploaded_file.name)[1]) as tmp_file:
11
+ shutil.copyfileobj(uploaded_file, tmp_file)
12
+ return tmp_file.name
13
+ except Exception as e:
14
+ st.error(f"Error saving file: {e}")
15
+ return None
16
+
17
+ def add_hard_subtitle_to_video(input_video_path, subtitle_file_path):
18
  output_video = tempfile.mktemp(suffix=".mp4")
19
  stream = ffmpeg.output(
20
+ ffmpeg.input(input_video_path),
21
+ ffmpeg.input(subtitle_file_path),
22
+ output_video,
23
+ vf=f"subtitles={subtitle_file_path}:force_style='FontName=Arial,FontSize=24'"
24
  )
25
  ffmpeg.run(stream, overwrite_output=True)
26
  return output_video
27
 
28
  def video_demo(video, subtitle):
29
+ video_path = save_uploaded_file(video)
30
+ subtitle_path = save_uploaded_file(subtitle)
31
+
32
+ if video_path and subtitle_path:
33
+ processed_video_path = add_hard_subtitle_to_video(video_path, subtitle_path)
34
  return processed_video_path
35
  else:
36
+ return None
37
 
38
  # Streamlit UI
39
  st.title("Video Subtitler")
 
41
  uploaded_video = st.file_uploader("Upload a video", type=["mp4", "avi", "mov"])
42
  uploaded_subtitle = st.file_uploader("Upload subtitle file", type=["srt", "vtt"])
43
 
44
+ if uploaded_video and uploaded_subtitle:
45
  processed_video_path = video_demo(uploaded_video, uploaded_subtitle)
46
+ if processed_video_path:
47
+ st.video(processed_video_path)
48
+ else:
49
+ st.write("An error occurred. Please try again.")
50
  else:
51
+ st.write("Please upload both a video and a subtitle file.")