mirror of
https://github.com/facefusion/facefusion.git
synced 2026-07-28 12:59:03 +02:00
fix update preview bug (#1205)
* fix update preview bug * fix update preview bug * remove guard * add is_vision_frame
This commit is contained in:
@@ -5,7 +5,7 @@ from typing import Optional, cast
|
||||
|
||||
import numpy
|
||||
|
||||
from facefusion import ffmpeg, ffprobe, frame_store
|
||||
from facefusion import ffmpeg, ffprobe, frame_store, vision
|
||||
from facefusion.common_helper import get_first, get_last
|
||||
from facefusion.types import Fps, Resolution, VideoPoolSet, VideoReader, VideoWriter, VisionFrame, VisionFrameSet
|
||||
|
||||
@@ -105,14 +105,13 @@ def collect_video_frames(video_reader : VideoReader, frame_start : int, frame_en
|
||||
for frame_number in range(video_reader.get('frame_number'), frame_end + 1):
|
||||
vision_frame = read_video_frame(video_reader)
|
||||
|
||||
if numpy.any(vision_frame):
|
||||
if vision.is_vision_frame(vision_frame):
|
||||
frame_store.set_frame(reader_id, frame_number, vision_frame)
|
||||
|
||||
|
||||
def close_video_reader(video_reader : VideoReader) -> None:
|
||||
video_reader.get('process').kill()
|
||||
video_reader.get('process').wait()
|
||||
frame_store.clear_frames(video_reader.get('id'))
|
||||
|
||||
|
||||
def get_writer(video_path : str, temp_video_fps : Fps, temp_video_resolution : Resolution, output_video_resolution : Resolution, output_video_fps : Fps) -> VideoWriter:
|
||||
@@ -146,6 +145,7 @@ def close_video_writer(video_writer : VideoWriter) -> bool:
|
||||
def clear_video_pool() -> None:
|
||||
for video_reader in VIDEO_POOL_SET.get('reader').values():
|
||||
close_video_reader(video_reader)
|
||||
frame_store.clear_frames(video_reader.get('id'))
|
||||
|
||||
for video_writer in VIDEO_POOL_SET.get('writer').values():
|
||||
close_video_writer(video_writer)
|
||||
|
||||
@@ -310,6 +310,10 @@ def create_empty_vision_frame() -> VisionFrame:
|
||||
return numpy.zeros((1, 1, 3)).astype(numpy.uint8)
|
||||
|
||||
|
||||
def is_vision_frame(vision_frame : VisionFrame) -> bool:
|
||||
return numpy.ndim(vision_frame) == 3
|
||||
|
||||
|
||||
def create_tile_frames(vision_frame : VisionFrame, size : Size) -> Tuple[List[VisionFrame], int, int]:
|
||||
tile_width = size[0] - 2 * size[2]
|
||||
pad_size_top = size[1] + size[2]
|
||||
|
||||
@@ -142,8 +142,6 @@ def test_close_video_reader() -> None:
|
||||
if is_linux() or is_macos():
|
||||
assert video_reader.get('process').returncode == -9
|
||||
|
||||
assert get_frame_store(video_reader.get('id')) == {}
|
||||
|
||||
|
||||
def test_get_writer() -> None:
|
||||
target_path = get_test_example_file('target-240p-25fps.mp4')
|
||||
@@ -186,8 +184,9 @@ def test_close_video_writer() -> None:
|
||||
def test_clear_video_pool() -> None:
|
||||
target_path = get_test_example_file('target-240p-25fps.mp4')
|
||||
create_temp_directory(target_path)
|
||||
video_reader = get_reader(target_path, 'read_video_frame')
|
||||
video_reader = get_reader(target_path, 'select_video_frames')
|
||||
video_writer = get_writer(target_path, 25.0, (426, 226), (426, 226), 25.0)
|
||||
read_video_frames(video_reader, 0, 4)
|
||||
write_video_frame(video_writer, read_video_frame(video_reader))
|
||||
clear_video_pool()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user