ffmpeg key frame 얻는 방법 문의드립니다.

park3250의 이미지

안녕하세요
ffmpeg key frame(i-frame) 얻는 방법 문의드립니다

프레임을 읽었을때 해당 프레임이 i-frame 인지 확인할 수 있는 함수가 있을까요?
아니면 별도에 값들로 계산 후 얻을 수 있는 방법이 있을까요?

아시는분 답변 좀 부탁드립니다.

chanik의 이미지

잠시 구글 검색해 봤습니다.

[1] ffmpeg 실행파일을 이용

http://superuser.com/a/669733

핵심이 되는 옵션이 -vf "select=eq(pict_type\,I)" 인 것 같습니다.

[2] ffprobe를 이용

http://superuser.com/questions/885452/extracting-the-index-of-key-frames-from-a-video-using-ffmpeg

[3] libav* 을 이용한 프로그래밍으로 해결

http://dranger.com/ffmpeg/tutorial01.html

이 샘플은 키프레임을 판별하고 있지는 않지만,
아마도 아래의 조건을 테스트해보고 적절히 쓰면 될 것으로 추측합니다.
제가 해보지는 않았습니다. 해보시게 되면 피드백 주시면 다른 분들께도 도움이 되겠습니다.

디코딩하기 전에 판별하려면,

AVPacket.flags == AV_PKT_FLAG_KEY

디코딩한 뒤에 판별하려면,

AVFrame.key_frame == 1
AVFrame.pict_type == AV_PICTURE_TYPE_I