Добавлено перемещение изображений и сборка видео с помощью ffmpeg; улучшено логирование

This commit is contained in:
Viner Abubakirov
2026-04-01 18:43:01 +05:00
parent 1197e63893
commit 8b320cf099

43
main.py
View File

@@ -169,7 +169,7 @@ def main():
prev_frame_path = None
frame_count = 0
for frame_paths in video_frames_to_disk_generator(video_path, output_dir):
logging.info(f"Processing frames: {frame_paths}")
logging.info(f"Processing frames: {len(frame_paths)}")
if prev_frame_path is not None:
img1 = prev_frame_path[-1]
@@ -193,12 +193,47 @@ def main():
def builder():
frames_dir = "output/frames"
interpolated_dir = "output/interpolated"
list_path = "file_list.txt"
moved_dir = "output/moved"
video_path = "source/video.mp4"
output_video = "output/interpolated_video.mp4"
build_file_list('output/moved_frames', list_path)
merge_with_ffmpeg(video_path, list_path, output_video)
move_images(frames_dir, interpolated_dir, moved_dir)
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
raise ValueError("Cannot open original video")
fps = cap.get(cv2.CAP_PROP_FPS)
cmd = [
"ffmpeg",
"-y",
"-framerate", str(fps * 2),
"-i", f"{moved_dir}/img_%08d.png",
"-i", video_path,
"-c:v", "libx264",
"-c:a", "copy",
"-shortest",
output_video,
]
logging.info("Running ffmpeg command to build final video: " + " ".join(cmd))
subprocess.run(cmd, check=True)
def cleanup():
import os
import shutil
frames_dir = "output/frames"
interpolated_dir = "output/interpolated"
moved_dir = "output/moved"
os.makedirs(frames_dir, exist_ok=True)
os.makedirs(interpolated_dir, exist_ok=True)
os.makedirs(moved_dir, exist_ok=True)
shutil.rmtree(frames_dir)
shutil.rmtree(interpolated_dir)
shutil.rmtree(moved_dir)
if __name__ == "__main__":
cleanup()
main()
builder()
cleanup()