Spaces:
Paused
Paused
| 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): | |
| temp_file = str(uuid.uuid4())+'.mp4' | |
| 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 | |
| # cmd = r'ffmpeg -y -i "%s" -i "%s" -vcodec copy "%s"' % (video, audio, temp_file) | |
| # os.system(cmd) | |
| # 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 -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) |