Захват видеокадров: I-кадр против P-кадров

295
Tina J

Я пытаюсь записать различные кадры в видеофайлах с кодировкой x264 в pngфайлы (in python), а затем сравнить их качество:

cap = cv2.VideoCapture(filename); //get frame_number for saving, and save the frame cap.set(cv2.CAP_PROP_POS_FRAMES,frame_no); ret, frame = cap.read()  cv2.imwrite(dir_path+'uniform_frame_'+str(frame_no)+".png", frame); 

Теперь мне было интересно, получаю ли я I-кадр, означает ли это, что он имеет более высокое качество, чем другие кадры, например, P-кадры и B-кадры ? (по сути, ключевые кадры не сжимаются, поэтому они должны иметь более высокое качество и меньше шума).

0

1 ответ на вопрос

2
Gyan

Все кадры в кодированном видеопотоке сжимаются; I-кадр просто указывает, что изображение может быть восстановлено без ссылки на другие кодированные изображения.

Теперь, поскольку I-кадры обычно используются в качестве ссылок для других изображений, интеллектуальный кодер легко справляется с квантованием, поэтому они обычно имеют более высокое качество. В P-кадрах применяется больше квантования, а в B-кадрах еще больше.

Благодарю. Таким образом, сохраненные файлы кадров обычно имеют более высокие качества. Tina J 5 лет назад 0
@TinaJ Обычно да, если только во время кодирования кто-то поиграл с настройками. I-кадры кодируют дороже, чем P- или B-кадры, поэтому необходимо найти компромисс. Смотрите: https://en.wikibooks.org/wiki/MeGUI/x264_Settings#ipratio slhck 5 лет назад 0
@slhck Кстати, еще один быстрый вопрос: каковы интервалы между I-кадрами? Я заметил 1 каждый FPS в видео, которые я видел (например, 1 на 30 кадров). Это всегда так? Я думал, что это зависит от содержания. Tina J 5 лет назад 0
Это переменная - пользователь может принудительно установить постоянный интервал или позволить энкодеру принять решение с некоторыми мягкими ограничениями, такими как максимальный и минимальный интервал Gyan 5 лет назад 0

Похожие вопросы