Captura de cuadros de videos: I-frame vs P-frames

Estoy tratando de capturar varios cuadros dentro de archivos de video codificados en x264 en pngarchivos (en python), y luego comparar la calidad de ellos:

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);

Ahora me preguntaba si obtengo un I-Frame , ¿significa que tiene una calidad más alta que otros marcos, por ejemplo, P-frames y B-Frames ? (Intrínsecamente, los fotogramas clave no se comprimen, por lo que deben tener mayor calidad y menos ruido).

No publiques preguntas cruzadas.

Respuestas (3)

"I, B y P" no se refieren a los fotogramas vistos, se refieren a las formas codificadas y almacenadas de los fotogramas. Sin embargo, el cuadro está codificado en el archivo o flujo, cuando aparece en la pantalla o se extrae como una imagen fija, es un cuadro completo, reconstruido a partir de la información IBP según sea necesario.

Los fotogramas intra (I-frames, fotogramas clave) son independientes de otros fotogramas : contienen la información completa para reconstruir la imagen del fotograma. No hay necesidad de leer otros marcos y computar a partir de ellos.

Así que se trata de una velocidad , no de una calidad. Por otro lado, a más fotogramas intra, mayor tamaño del archivo. (Velocidad de compensación conocida por espacio).

Los fotogramas internos se utilizan preferentemente en la mayoría de los reproductores multimedia para la llamada búsqueda rápida (rápida debido a que se salta la necesidad de leer otros fotogramas y calcular a partir de ellos); consulte, por ejemplo

View -> Options -> Tweaks -> Fast seek (on keyframe)

en Media Player Classic (de K-Lite Codec Pack ):

ingrese la descripción de la imagen aquí

Agregar más cuadros intra es importante para dispositivos relativamente lentos (por ejemplo, teléfonos inteligentes) porque después de saltar a un cuadro no intra , reproducen videos rotos y de colores desagradables mientras se encuentran con el siguiente cuadro intra, por lo que para una densidad común de 1 cuadro intra para 250 cuadros y los 25 fps el usuario puede esperar casi 10 segundos para restaurar la imagen.

Buena pieza de información. Gracias.

Los fotogramas I son fotogramas sin comprimir y son a lo que se refieren los fotogramas p y b para la compresión. Sí, los marcos son de mayor calidad.

Los I-frames no están descomprimidos, simplemente se basan en la predicción intra.
Lo siento, traté de responder eso sin ser demasiado técnico. Sí, los fotogramas I están comprimidos hasta cierto punto, pero para responder a su pregunta, Tina, son de mayor calidad en comparación con los fotogramas P y B.