ucsia / src /utils /videoio.py
Spanicin's picture
Update src/utils/videoio.py
4d46dda verified
import shutil
import uuid
import os
import cv2
def load_video_to_cv2(input_path):
video_stream = cv2.VideoCapture(input_path)
fps = video_stream.get(cv2.CAP_PROP_FPS)
full_frames = []
while 1:
still_reading, frame = video_stream.read()
if not still_reading:
video_stream.release()
break
full_frames.append(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
return full_frames
def save_video_with_watermark(video, audio, save_path, watermark=False):
# print("video: ", video)
# print("audio: ", audio)
#cmd = r'ffmpeg -y -hide_banner -loglevel error -i "%s" -i "%s" -vcodec copy "%s"' % (video, audio, temp_file)
#os.system(cmd)
from moviepy.editor import VideoFileClip, AudioFileClip
import tempfile
import base64
# Load audio and video files
audio_clip = AudioFileClip(audio)
video_clip = VideoFileClip(video)
# Combine audio and video
final_clip = video_clip.set_audio(audio_clip)
temp_file = tempfile.NamedTemporaryFile(suffix='.mp4', delete=False)
temp_file.close() # Close the file so it can be opened by MoviePy
temp_file_path = temp_file.name
final_clip.write_videofile(temp_file_path)
with open(temp_file_path, 'rb') as f:
video_content = f.read()
base64_video = base64.b64encode(video_content).decode('utf-8')
return base64_video, temp_file_path
# if watermark is False:
# shutil.move(temp_file, save_path)
# else:
# # watermark
# try:
# ##### check if stable-diffusion-webui
# import webui
# from modules import paths
# watarmark_path = paths.script_path+"/extensions/SadTalker/docs/sadtalker_logo.png"
# except:
# # get the root path of sadtalker.
# dir_path = os.path.dirname(os.path.realpath(__file__))
# watarmark_path = dir_path+"/../../docs/sadtalker_logo.png"
# cmd = r'ffmpeg -y -hide_banner -loglevel error -i "%s" -i "%s" -filter_complex "[1]scale=100:-1[wm];[0][wm]overlay=(main_w-overlay_w)-10:10" "%s"' % (temp_file, watarmark_path, save_path)
# os.system(cmd)
# os.remove(temp_file)