File size: 2,033 Bytes
0da3980
888209d
8fec71a
0da3980
888209d
 
8fec71a
 
41acf4c
 
 
 
 
 
 
8fec71a
888209d
 
 
 
 
 
 
8fec71a
888209d
 
 
 
 
41acf4c
 
 
 
 
 
 
 
 
 
 
 
8fec71a
41acf4c
 
 
 
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
import streamlit as st
import os
from moviepy.editor import VideoFileClip

st.title("Video Playback and Duplication")

# Функция для конвертации видео в формат MP4 с кодеком H.264
def convert_to_mp4(input_path, output_path):
    try:
        video_clip = VideoFileClip(input_path)
        video_clip.write_videofile(output_path, codec="libx264", audio_codec="aac")
        return True
    except Exception as e:
        st.error(f"Error converting video: {e}")
        return False

# Загрузка видеофайла
uploaded_file = st.file_uploader("Choose a video...", type=["mp4", "avi", "mov", "mkv"])

if uploaded_file is not None:
    # Создаем временную директорию для сохранения загруженного видео
    os.makedirs("temp", exist_ok=True)
    input_video_path = os.path.join("temp", uploaded_file.name)
    output_video_path = os.path.join("temp", "converted_video.mp4")
    
    # Сохраняем загруженное видео на диск
    with open(input_video_path, "wb") as f:
        f.write(uploaded_file.getbuffer())
    
    # Проверка типа файла и конвертация при необходимости
    file_type = uploaded_file.type.split('/')[1]
    if file_type in ['mp4', 'webm', 'ogg']:
        st.video(input_video_path, start_time=0)
        st.write("Original Video")
    else:
        if convert_to_mp4(input_video_path, output_video_path):
            st.success("Video converted successfully!")
            st.video(output_video_path, start_time=0)
            st.write("Original Video (Converted)")
        else:
            st.error("Failed to convert video.")
    
    # Кнопка для генерации и воспроизведения дублированного видео
    if st.button('Generate'):
        st.video(output_video_path if file_type not in ['mp4', 'webm', 'ogg'] else input_video_path, start_time=0)
        st.write("Duplicated Video")