FFMPEG select, trim으로 발생하는 Memory leak 대처하기

이정우·2023년 3월 24일
0

Input 영상을 select, trim 등의 filter를 사용하여 수정할 때 영상의 길이가 길면 길수록 메모리를 많이 차지하는 현상을 발견하였다.

이런 경우에 대처하기 위하여 input 영상을 1개만 쓰지 않고, 같은 영상을 여러 번 사용하여 select, trim을 한다.

ffmpeg -i a.mp4 -i a.mp4 -i a.mp4 -filter_complex \
"[0:v]trim=start_frame=9000:end_frame=9001,crop=1280:100:0:0,setpts=PTS-STARTPTS[still1]; \
[1:v]trim=start_frame=9000:end_frame=9001,crop=100:100:600:500,setpts=PTS-STARTPTS[still2]; \
[2:v][still1]overlay=0:0:enable='between(t,61,62)'[v0]; \
[v0][still2]overlay=600:500:enable='between(t,61,62)'[v1]" \
-map [v1] -c:v libx264 -crf 17 -preset slow -y  p.mp4

위 방법대로 진행하면 ffmpeg는 select, trim 등을 이용하여 잘라낸 프레임을 메모리에 유지하지 않게 된다.

reference: https://video.stackexchange.com/questions/26132/why-trimming-in-ffmpeg-eats-up-so-much-memory

profile
공부

0개의 댓글