Estoy buscando una herramienta/código de código abierto o alguna guía para extraer los vectores de movimiento (MV) de una secuencia de bits codificada H.264. Ya sé que los vectores de movimiento se pueden visualizar usando ffmpeg con el siguiente comando:
ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
Sin embargo, quiero producir un archivo de registro donde los MV de los cuadros P y B se enumeren cuadro por cuadro. Revisé la estructura de los MV de libavutil/motion_vector.h, pero no pude encontrar un ejemplo que muestre cómo ffplay los extrae y los coloca sobre la secuencia original. Pensé que si podía averiguarlo, posiblemente podría reorganizar el código para extraer los MV a un archivo de texto.
También probé el código dado en esta respuesta , pero parece que no funciona con las versiones más nuevas de ffmpeg:
Agradecería cualquier código de ejemplo o sugerencias.
El código fuente para el filtro de video codecview está aquí , ¿es eso lo que estás buscando?
[editar] Lo siento, supongo que eso no es muy útil. La función que está buscando es filter_frame() , que le muestra cómo leer AVMotionVectors (como datos secundarios) de un AVFrame dado, este es el código utilizado en su ejemplo de línea de comandos. Este ejemplo llama a draw_arrow(), pero simplemente puede reemplazarlo con una llamada a printf() o alguna función personalizada que registre la información de MV en un archivo de registro de su elección.