I-프레임을 이미지로 빠르게 추출

I-프레임을 이미지로 빠르게 추출

FFmpeg를 사용하여 MKV/MP4 파일에서 모든 I-프레임을 추출했지만 FFmpeg는 이를 위해 모든 프레임을 디코딩하는 것 같아서 비디오 파일이 1080p이고 10분보다 길 경우 시간이 매우 오래 걸립니다. I-프레임에서 I-프레임으로 이동하여 JPG/PNG 파일로 덤프하기를 원합니다. 또한 I-프레임의 타임스탬프를 알아야 합니다.

다른 옵션은 FFprobe를 사용하여 모든 I-프레임에 대한 타임스탬프를 얻는 것이었지만 이 방법은 전체 파일도 디코딩합니다.

Avidemux와 비슷한 것을 하려고 합니다. Avidemux에서는 위쪽 또는 아래쪽 화살표 키를 눌러 매우 빠르게 각 I-프레임으로 이동할 수 있지만 모든 B/P 프레임을 디코딩하지 않고 수행됩니다.

답변1

사용

ffmpeg -skip_frame nokey -i file -vsync 0 -frame_pts true out%d.png

skip_frame키프레임만 처리하도록 디코더에 지시합니다. -vsync 0(이 명령에서) 타임스탬프를 보존합니다. -frame_pts타임스탬프를 나타내기 위해 출력 이미지 파일 이름의 숫자 부분을 설정합니다. 숫자를 해석하려면 프레임 속도를 알아야 합니다. 예를 들어 프레임 속도가 30이면 이미지 이름 out75는 타임스탬프 75/30 = 2.50초에 해당합니다. -r 1000숫자가 밀리초를 나타내도록 하려면 추가할 수 있습니다 .

관련 정보