비디오 클립에서 모든 키 프레임을 추출하는 방법은 무엇입니까?


10

비디오 클립에서 키 프레임을 추출하려고합니다. 다음 명령을 시도했지만 모든 프레임을 추출합니다.

ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg

답변:


20

비디오 필터 -skip_frame가 없어도 보다 간단하게 사용할 수 있습니다 select.

ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg

2
엄선 된 필터를 사용하면 3 분 이상에 비해 20 분 분량의 동영상에서 10 초도 채 걸리지 않습니다!
mad

사용해야합니다 -threads 1기본에 비해, -threads auto그것은 만드는 cropdetect필터 그래프 ( ffmpeg -threads 1 -skip_frame nokey -i input.mkv -filter:v select='not(mod(n\,20))',cropdetect -an -f null /dev/null빠른 내 시스템 (60 30 대에 이르기까지)에로) 2 배!
genpfault

skip_frame nokey를 사용하지 않습니다. 당신은 출력을 확인 했습니까? 내 파일 및 빌드 (2019 년 8 월)에서 nokey에서 I 프레임 이전의 이전 프레임을 제공하는 것처럼 부적절한 타임 스탬프가 표시되고 필터링되지 않은 모든 프레임은 나중에 타임 스탬프에서 I 프레임을 표시합니다.
JasonXA

@genpfault가 사용을 제안하는 이유 -threads 1는 그렇지 않으면 출력 키 프레임 시퀀스가 ​​비 순차적으로 발행 될 수 있기 때문입니다. 이 문제를 처리하는 일종의 사후 방식이있는 경우 멀티 스레딩을 유지할 수 있습니다. 또한을 사용할 때에도 순서가 잘못된 키 프레임을 얻는 것이 여전히 가능해 -threads 1보이지만 이제는 이러한 경우 h264 디코더 오류가 발생 illegal short term buffer state detected합니다.
Glenn Slayden

12

selectscale필터를 사용하는 예 :

ffmpeg -i 2.flv -vf "select=eq(pict_type\,I),scale=73x41" \
-vsync vfr -qscale:v 2 thumbnails-%02d.jpeg

몇 가지 팁 :

  • 필터는 -i출력 옵션이므로 옵션 앞에 오지 않아야합니다 . 정확히 어디에서 명령을 받았는지 모르겠지만 PICT_TYPE_I존재하지는 않습니다 I.

  • 에서 scale당신이 대체 할 수있는 필터 7341같은 : 필터가 자동으로 너비 또는 높이가 가로 세로 비율을 유지하기 위해 계산 scale=73:-1또는 scale=-1:41. 이렇게하면 "강제"스케일링으로 인해 늘어나거나 찌그러지는 것을 방지 할 수 있습니다.

  • 출력 품질은 -qscale:v(또는 별칭 -q:v) 으로 제어 할 수 있습니다 . 유효 범위는 2-31의 선형 스케일이며 값이 낮을수록 품질이 높습니다.

  • 사용자가 ffmpeg입력이 나에게 이야기하기 전에 필터를 할 수는 구식이 될 수 있습니다. 운영 체제에 맞는 최신 정적 빌드 를 다운로드 하거나 위의 방법으로 문제가 해결되지 않으면 컴파일 안내서 에 따라 직접 빌드하십시오 .


1
키 프레임을 무손실로 추출하는 것이 목표라면 다음을 시도해보십시오.ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
Peltier

0

이 오류가 발생하면 :

입력 URL 1508.mp4에 옵션 vf (비디오 필터 설정)를 적용 할 수 없습니다. 입력 옵션을 출력 파일에 적용하려고하거나 그 반대의 경우도 있습니다. 이 옵션을 속한 파일보다 먼저 이동하십시오. 입력 파일 1508.mp4의 구문 분석 옵션 오류가 발생했습니다. 입력 파일을 여는 중 오류 : 잘못된 인수

당신은 이것을 할 수 있습니다 :

ffmpeg -i 263.mp4 -vf select=eq(pict_type\,PICT_TYPE_I)  -vsync 2 -s 480x320 -r 24 -f image2 thumbnails-%05d.jpeg

== --------------------------------------------

“-i”매개 변수 사전

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.