SendVideo / app.py
WpythonW's picture
Update app.py
41acf4c verified
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")