FFmpeg를 사용하여 비디오에서 이미지를 추출하는 빠른 방법

FFmpeg를 사용하여 비디오에서 이미지를 추출하는 빠른 방법

저는 FFmpeg를 사용하여 비디오에서 6초마다 1프레임씩 이미지를 추출합니다.

Normal command on Dos ( Windows 8 OS) >  ffmpeg -i in.mkv -r 1/6 %4d.png

속도가 15~20 정도로 매우 낮기 때문에 시간이 너무 많이 걸립니다.

그래서 나는 사용했다skip_frame nokey

ffmpeg -skip_frame nokey -i "in.mkv" -vsync 0 -frame_pts true -r 1/6 %4d.png

이는 약 200(10배 더 빠름)의 더 빠른 속도로 추출됩니다.
하지만 문제는 많은 이미지를 건너뛰고 오류가 발생한다는 것입니다.

애플리케이션이 스트림의 먹서에 유효하지 않고 단조롭게 증가하지 않는 dts를 제공했습니다.

그래서 다음 명령을 사용했습니다.

ffmpeg -i in.mkv -vf "select='if(not(floor(mod(t,6)))*lt(ld(1),1),st(1,1)+st(2,n)+st(3,t));if(eq(ld(1),1)*lt(n,ld(2)+1),1,if(trunc(t-ld(3)),st(1,0)))'" -vsync 0 %4d.png

(여기서 제공됨 -FFmpeg를 사용하여 X초마다 첫 번째 X 프레임을 PNG로 캡처하는 방법은 무엇입니까?)

이것은 나에게 25-30의 속도를 제공합니다.

어쨌든 더 빠른 속도를 얻을 수 있습니까 -skip_frame?

답변1

좋아, 내가 원래 게시물에 게시한 코드는 더 빠른 이미지 추출을 위해 지금까지 내가 찾은 유일한 솔루션입니다. 때로는 최대 50의 속도를 제공합니다.

ffmpeg -i in.mkv -vf "select='if(not(floor(mod(t,6)))*lt(ld(1),1),st(1,1)+st(2,n)+st(3,t));if(eq(ld(1),1)*lt(n,ld(2)+1),1,if(trunc(t-ld(3)),st(1,0)))'" -vsync 0 %4d.png

더 빠른 속도를 얻기 위해 무작위 이미지 추출(키프레임 기반)에 관심이 있는 경우 -skip_frame nokey를 사용하십시오.

관련 정보