상세 컨텐츠

본문 제목

업스케일링 최적화 코드 오류 해결하기(1)

업스케일링

by zmo 2025. 11. 30. 22:49

본문

오류발생
 
[concat @ 000001a247883e00] Impossible to open 'input_upscaled\input_out_tmp_videos\input_upscaled\input_out_tmp_videos\000.mp4' [in#0 @ 000001a247883b80] Error opening input: No such file or directory Error opening input file input_upscaled\input_out_tmp_videos\input_vidlist.txt. Error opening input files: No such file or directory

 

최종 단계에서 영상들을 합치는 과정(concat)에서 경로가 두 번 중복되어 잘못 생성되는 오류가 발생했다.

 
input_upscaled\input_out_tmp_videos\input_upscaled\input_out_tmp_videos\000.mp4

경로가 두 번 반복됨 →
input_upscaled/input_out_tmp_videos/input_upscaled/input_out_tmp_videos/

즉, 스크립트 내부에서 output_dir 또는 tmp_dir 경로를 잘못 이어붙였다는 의미인 것 같다.

 

문제 원인

Real-ESRGAN의 inference_realesrgan_video.py 내부에서 초기 코드가 다음과 같이 설정.

tmp_dir = os.path.join(args.output, 'input_out_tmp_videos')
 
그런데 이미 output_dir을 input_upscaled 같이 지정했기 때문에
input_upscaled/input_out_tmp_videos ← 원래 맞는 경로
 
영상 프레임 합칠 때 또 같은 경로를 중첩 적용함.

 

그 결과:

input_upscaled/input_out_tmp_videos/input_upscaled/input_out_tmp_videos

이렇게 반복된 경로가 생겨서 ffmpeg이 파일을 찾지 못했다.

해결 방법

수정된 concat 구간 코드

inference_realesrgan_video.py의 concat 지점에서 아래처럼 바꿔보자.


문제 있는 기존 코드 (삭제)

 
video_list_path = os.path.join(output_dir, tmp_dir, 'input_vidlist.txt')

또는 

tmp_dir = os.path.join(output_dir, tmp_dir)

이런 식으로 output_dir과 tmp_dir을 두 번 합치는 코드. 이 부분이 경로를 중첩시키는 원인이지 않을까.


정상 작동하도록 고친 코드

아래 코드를 문제 있는 기존 코드에서 고쳐보자.

 
# tmp_dir는 output_dir 밑에 직접 생성 
tmp_dir = os.path.join(output_dir, "tmp_frames") 
os.makedirs(tmp_dir, exist_ok=True) 
video_list_path = os.path.join(tmp_dir, "input_vidlist.txt")

 

그리고 프레임 저장도 이렇게 돼야 한다

out_frame_path = os.path.join(tmp_dir, f"{frame_id:05d}.png")

 

그리고 concat할 때도:

ffmpeg_concat_cmd = f'ffmpeg -f concat -safe 0 -i "{video_list_path}" -c copy "{final_output_path}"'

 

이렇게 1차로 고쳐보자.

관련글 더보기