File size: 1,953 Bytes
15458c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
56
57
58
59
60
61
62
63
64
import streamlit as st
from moviepy.editor import VideoFileClip, AudioFileClip
from pydub import AudioSegment
from pydub.silence import split_on_silence
import os

st.title('Video and Audio Splitter for Video Editors')

uploaded_file = st.file_uploader("Choose a video...", type="mp4")
if uploaded_file is not None:
    # Save the uploaded file to disk
    with open('uploaded_video.mp4', 'wb') as f:
        f.write(uploaded_file.getbuffer())

    video = VideoFileClip('uploaded_video.mp4')
    st.video('uploaded_video.mp4')

    # Extract audio from the video
    audio = video.audio
    audio_filename = "temp.wav"
    audio.write_audiofile(audio_filename)

    # Load audio using PyDub
    audio = AudioSegment.from_wav(audio_filename)

    # Split audio on silence
    chunks = split_on_silence(audio, min_silence_len=1000, silence_thresh=-40)

    # Combine chunks back into a single audio segment
    combined = AudioSegment.empty()
    for chunk in chunks:
        combined += chunk

    # Save combined audio
    combined_filename = "combined.wav"
    combined.export(combined_filename, format="wav")

    # Save the processed video without audio
    processed_filename = "processed_video.mp4"
    video.write_videofile(processed_filename, codec='libx264', audio=False)

    # Provide download buttons for the audio and video
    with open(combined_filename, 'rb') as f:
        bytes = f.read()
        st.download_button(
            label="Download audio",
            data=bytes,
            file_name='processed_audio.wav',
            mime='audio/wav'
        )

    with open(processed_filename, 'rb') as f:
        bytes = f.read()
        st.download_button(
            label="Download video",
            data=bytes,
            file_name='processed_video.mp4',
            mime='video/mp4'
        )

    # Clean up temporary files
    os.remove(audio_filename)
    os.remove(combined_filename)
    os.remove('uploaded_video.mp4')