AV_SEEK_FRAME 코덱이 P-FRAMES를 사용하면 AVCODEC_DECODE_VIDEO2를 중단합니다
-
09-09-2020 - |
문제
P-Frames로 인코딩 된 비디오에서 찾는 방법을 이해하려고 노력하고 있습니다 (예 : H.264) - 지금은 모든 프레임이 키 프레임 인 코덱으로 인코딩 된 비디오에서 탐색하는 방법을 알고 있습니다 (예 : MJPEG 짐마자
타임 스탬프가 주어지면 궁극적으로 해당 시간 소인의 프레임을 재생해야합니다. 그러나 지금은 시간 소인 근처의 키 프레임을 재생하려고 노력하고 있습니다. 그래서, 처음 -
ret = av_seek_frame(pFormatCtx, videoStream, avTime, 0);
avcodec_flush_buffers(pCodecCtx);
.
그런 다음 av_read_frame
를 포함하여 일부 개재 코드입니다. 그 다음 -
ret = avcodec_decode_video2(pCodecCtx, captureFrame, &gotPicture, &packet);
.
관찰 :
해결책
바꾸기 -
ret = av_seek_frame(pFormatCtx, videoStream, avTime, isPlayingBackward ? AVSEEK_FLAG_BACKWARD : 0);
avcodec_flush_buffers(pCodecCtx);
.
-
ret = avformat_seek_file(pFormatCtx, videoStream, 0, avTime, avTime, 0);
.
(Caveat : avformat_seek_file
용 Docs는 "이것은 아직 공사중인 새로운 Seek API의 일부입니다. 따라서 아직 사용하지 마십시오. 언제든지 변경 될 수 있습니다. 아직 ABI 호환성을 아직 기대하지 마십시오.")
제휴하지 않습니다 StackOverflow