Different results for opencv vs ffmpeg for webm

Viewed 718

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?

0 Answers
Related