Trying to save frame by frame_id:
In ffmpeg(which I believe produce valid results):
ffmpeg -i <video_filepath> -vf "select=eq(n\,<frame_id>)" -vframes 1 <frame_id>.png
In opencv (which is produce different result):
def save_frame(input_video_filepath, output_image_filepath, frame_id):
cap = cv2.VideoCapture(input_video_filepath)
n_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
iter = tqdm(range(n_frames))
for i in iter:
flag, frame = cap.read()
if i==frame_id:
cv2.imwrite(output_image_filepath, frame)
iter.close()
break
Why opencv version produce different result?
Update:
Converting webm to mp4 like:
ffmpeg -i <input_filepath>.webm -r 25 <output_filepath>.mp4
and then using these 2 methods produce same results, so as I understand opencv have some problems with webm format?