razaAhmed commited on
Commit
15458c7
·
1 Parent(s): 79dd4f2

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -0
app.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from moviepy.editor import VideoFileClip, AudioFileClip
3
+ from pydub import AudioSegment
4
+ from pydub.silence import split_on_silence
5
+ import os
6
+
7
+ st.title('Video and Audio Splitter for Video Editors')
8
+
9
+ uploaded_file = st.file_uploader("Choose a video...", type="mp4")
10
+ if uploaded_file is not None:
11
+ # Save the uploaded file to disk
12
+ with open('uploaded_video.mp4', 'wb') as f:
13
+ f.write(uploaded_file.getbuffer())
14
+
15
+ video = VideoFileClip('uploaded_video.mp4')
16
+ st.video('uploaded_video.mp4')
17
+
18
+ # Extract audio from the video
19
+ audio = video.audio
20
+ audio_filename = "temp.wav"
21
+ audio.write_audiofile(audio_filename)
22
+
23
+ # Load audio using PyDub
24
+ audio = AudioSegment.from_wav(audio_filename)
25
+
26
+ # Split audio on silence
27
+ chunks = split_on_silence(audio, min_silence_len=1000, silence_thresh=-40)
28
+
29
+ # Combine chunks back into a single audio segment
30
+ combined = AudioSegment.empty()
31
+ for chunk in chunks:
32
+ combined += chunk
33
+
34
+ # Save combined audio
35
+ combined_filename = "combined.wav"
36
+ combined.export(combined_filename, format="wav")
37
+
38
+ # Save the processed video without audio
39
+ processed_filename = "processed_video.mp4"
40
+ video.write_videofile(processed_filename, codec='libx264', audio=False)
41
+
42
+ # Provide download buttons for the audio and video
43
+ with open(combined_filename, 'rb') as f:
44
+ bytes = f.read()
45
+ st.download_button(
46
+ label="Download audio",
47
+ data=bytes,
48
+ file_name='processed_audio.wav',
49
+ mime='audio/wav'
50
+ )
51
+
52
+ with open(processed_filename, 'rb') as f:
53
+ bytes = f.read()
54
+ st.download_button(
55
+ label="Download video",
56
+ data=bytes,
57
+ file_name='processed_video.mp4',
58
+ mime='video/mp4'
59
+ )
60
+
61
+ # Clean up temporary files
62
+ os.remove(audio_filename)
63
+ os.remove(combined_filename)
64
+ os.remove('uploaded_video.mp4')