Traducción del inglés desde el Blog Amped, Procesamiento forense de imagen y video
Esto sigue muy bien de mi publicación anterior, '¿Dónde está el resto del video?', donde tuvimos que analizar los metadatos del video para responder preguntas sobre metraje perdido. En este caso, tenemos algunas discrepancias con la velocidad de fotogramas. Echemos un vistazo de más cerca.
Lo primero que debo señalar es que recientemente cambié una de las Opciones del Programa Amped FIVE y pensé que merecía una mención inicial.
Me encuentro con muchos más archivos de CCTV con transmisiones de audio. Ahora, no estoy diciendo que todos tengan sonido, pero sí tienen una transmisión. Como tal, he cambiado mi motor de video predeterminado a FFMS con audio .
Este motor es ahora el predeterminado en nuevas instalaciones. Sin embargo, si has actualizado desde una versión anterior, se conserva la configuración anterior.
Al cargar el video en Amped FIVE, puedo ver desde la herramienta de información de archivo que se ha detectado una transmisión de audio, pero el contenedor de la forma de onda en la barra del reproductor está vacío.
Este es un problema común. El archivo tiene una pista de audio y un identificador de flujo ... pero no hay audio dentro. A veces hay audio, pero es solo un clic silencioso, generalmente cada segundo. Si alguna vez te encuentras con esto, siempre vale la pena prestar atención al tiempo y la duración del audio. El audio a menudo se usa para cronometrar, por lo que puede ayudar a identificar la duración del video cuando hay problemas de velocidad de fotogramas, como la reproducción demasiado lenta o demasiado rápida.
Otra cosa a destacar es que estas secuencias de audio 'en blanco' a menudo pueden causar problemas de depuración. Si este es el caso, puedes volver al motor de video FFMS para detener cualquier intento de decodificación de audio.
Antes de seguir divagando, volvamos a la cuestión de 'Velocidad de fotogramas'...
La herramienta Información de Archivo, que se ve en la imagen de arriba, también me dice que el video tiene 1208 cuadros y una duración de 00:01:20.786. Se ha calculado una velocidad de fotogramas de 14.95. (1208/80.786).
El video se reproduce bien y las personas en el metraje parecen caminar normalmente. También hay una fecha y marca de tiempo codificadas. Aquí es donde la información de fecha y hora se codifica en el video en lugar de superponerse en la parte superior.
Al contar los fotogramas entre cada segundo, cuento 15 fotogramas individuales por segundo.
Ahora, todo me apunta a 15 cuadros por segundo.
Supongo que es un buen momento para señalar lo valioso que es tener información del DVR. Al completar una recuperación, una de las muchas piezas de información que obtengo del dispositivo es la configuración por canal, como la velocidad de fotogramas. Si tuviera un registro de eso, entonces esto ayudaría aún más... ¡porque las cosas están a punto de confundirse!
Al analizar la Información Avanzada del Archivo, el resumen informa 25 FPS. Este valor lo lee el decodificador FFMS directamente desde el contenedor.
Este video se origina en un sistema de CCTV en el Reino Unido, por lo que ver 25 FPS no es inesperado, debido a que es el estándar de velocidad de cuadros PAL, pero ¿por qué es diferente de lo que conté antes? Lo primero que me viene a la mente es el audio: ¿esto está causando un problema y la duración del audio es la misma que la del video? Pasando a la pestaña MediaInfo , puedo ver cuanto ¿Dónde está el resto del video? El video y el audio tienen una duración de 1 minuto y 20 segundos ... PERO ... MediaInfo informa que el video tiene ... ¡30 FPS!
En este punto, es común maldecir en voz alta e irse a casa ... con la esperanza de que por la mañana, las hadas de archivo lo hayan arreglado y no tendré que lidiar con tres velocidades de fotogramas diferentes.
Desafortunadamente eso no sucedió, así que depende de nosotros descubrir cuál es la verdadera velocidad de fotogramas e intentar identificar por qué tenemos 30, 25 y 15 FPS presentados.
FFprobe es la siguiente pestaña en la Información avanzada del archivo .
Esto trae mucha más información y he editado el texto y la salida para mostrar solo lo que nos interesa.
La transmisión de video tiene una base de tiempo de códec codec_time_base de 1/30
La velocidad de fotogramas del contenedor es r_frame_rate 25/1
La velocidad de fotogramas promedio usando el tiempo de duración establecido de cada fotograma avg_time_rate es 30/1
La base de tiempo de la transmisión de video es time_base 1/90000
La duración de la base de tiempo es duration_ts 7271910
La duración del tiempo es duration 80.799
Ahora usemos esta información, junto con el resultado del análisis de cuadros, para tratar de descubrir qué está sucediendo, de modo que podamos documentar nuestra toma de decisiones.
Lo primero que debes observar es el 'probe_score' en la parte inferior de la sección [FORMAT]. Una puntuación de 100 significa que el software ha analizado el archivo y el códec y el contenedor coinciden con lo esperado y el archivo cumple con todos los estándares. Una puntuación por debajo de 25 probablemente no dará como resultado que puedas decodificar el archivo con las bibliotecas FFmpeg, ya que no sabrá qué es.
Tenemos un puntaje de 52.
Recuerda, estamos tratando con las exportaciones de un sistema de CCTV, por lo que puede haber muchas cosas dentro de los datos que causan conflictos y confusión. Los estándares de códec y contenedor se escriben desde el punto de vista de decodificación. La mayoría de los fabricantes de CCTV desean controlar la decodificación dentro de su propio sistema de hardware y software, por lo que eliminar un archivo de ese sistema puede dar lugar a "malentendidos". Depende de nosotros, como analistas, comprender los datos e identificar lo que es relevante.
Debemos entender cuál es la verdadera velocidad de fotogramas? Si me preguntan qué hice con los 'otros' cuadros, ya que deberían ser 25 o 30 cuadros por segundo, debo poder responder correctamente.
¿Son 30? ¿Son 25? ¿Son 15? ¿Son 14.95? ... ¿O es otra cosa?
Mirando primero la base de tiempo, ¿por qué a menudo vemos 1/90000 independientemente de la velocidad de fotogramas?
Para los flujos de bits multiplexados, la base de tiempo o 'tbn' como se muestra a veces, siempre es de 90 kHz, esta es la escala de tiempo de ISO / IEC 13818-1. Otros contenedores no necesitan cumplir con esto, pero muchos lo hacen por continuidad y facilidad.
En un archivo PAL estándar, a menudo verá que cada paquete tiene una duración de 3600 'ticks' del reloj de 90KHz. 90,000 / 3600 = 25. ¡Esa es la velocidad de cuadros del video PAL estándar!
¿Dónde vemos estos valores? En el Análisis del Fotograma.
Para nuestro archivo, tenemos 3000 'ticks' por paquete.
Esto nos da el resultado de 30 FPS. (90,000 / 3000 = 30).
Luego tenemos la Duración de la Base de Tiempo ... ¿es esto lo mismo que nuestra duración de tiempo?
7271910 (Duración de la base de tiempo) / 90000 (Base de tiempo) = 80.799 segundos. Entonces sí, coincide con la duración del video que tenemos.
En la imagen de arriba solo estoy mostrando los cuadros de video. Puedes notar que el *DTS, los valores de la marca de tiempo de decodificación, son extremadamente altos. (Estos valores eran los mismos que el *PTS, las marcas de tiempo de presentación, pero recorté la imagen para mostrarla).
*DTS = Marca de Tiempo de Decodificación o Decoding Time Stamp.
*PTS = Marca de Tiempo de Presentación o Presentation Time Stamp.
Esto me indicaría que el flujo de datos es un recorte directo desde el dispositivo de almacenamiento original y hacia el archivo contenedor. Nuevamente, debe recordarse que este pequeño clip es solo una pequeña parte de una gran grabación continua que alguna vez estuvo en un disco duro dentro de un dispositivo de grabación de CCTV.
Si se hubiera limpiado y vuelto a indexar específicamente para la exportación, el PTS comenzaría en 0.
Podemos ver que aunque la velocidad de fotogramas del códec se establece en 30, solo hay 15 fotogramas por segundo.
Tenemos la capacidad de hacer mucho más con estos datos utilizando el botón 'Abrir en Excel' en la parte inferior de la ventana de Análisis de Cuadros.
Copié la columna pkt_pts_Time en una nueva hoja y luego limpié los valores para que sean más fáciles de leer. Luego he calculado la duración de cada cuadro de acuerdo con el PTS. En el cuadro verás el patrón y verás que suman 1 segundo.
Patrones como este son realmente importantes para identificar en casos que involucran análisis de movimiento.
Antes de continuar, ¿qué tal un resumen?
Tenemos un archivo que presenta 15 FPS, tiene una velocidad de cuadro de códec de 30 FPS pero el contenedor informa una velocidad de cuadro de 25 FPS.
Podemos identificar 15 cuadros únicos por segundo en el análisis de cuadros.
Podemos identificar que la transmisión de video tiene una base de tiempo de 30 FPS, pero cada cuadro se mantiene durante más tiempo que la duración del paquete durante la presentación.
¿Y qué hay de la velocidad de audio?
El ritmo tiene una duración en el tiempo de 0,40 ms, y 3600 'ticks' por paquete ... y hay 25 muestras por segundo. ¡De ahí viene el 25 FPS!
Hay muchas razones por las cuales las empresas usan tasas de fotogramas estándar en sus exportaciones. Por lo general, es para garantizar que se puedan exportar varias cámaras al mismo formato de contenedor, independientemente de la velocidad de fotogramas de la fuente original. Además, cuando varias cámaras se multiplexan en el mismo contenedor, cada una puede tener diferentes velocidades de cuadros.
Sin embargo, es vital que identifiquemos cuál debería ser la velocidad de la transmisión. Si hubiera decodificado este video usando un software que lee el códec, se reproduciría a 30 cuadros por segundo.
Si hubiera decodificado el video usando la velocidad de cuadros informada por el contenedor, se reproduciría a 25 cuadros por segundo.
Dependiendo del reproductor / decodificador, se pueden agregar cuadros duplicados sin que yo lo sepa, y esto me presentaría con el recuento de cuadros incorrecto. El reproductor / decodificador puede simplemente acelerar el video. Con la diferencia aquí siendo 10-15 cuadros, eso habría sido notable pero, si fuera solo uno o dos, entonces podría no serlo. Algo capturado por la cámara que se muestra demasiado rápido podría ser muy perjudicial para la investigación.
En ninguna parte de los metadatos de los archivos se informa la velocidad de fotogramas real. Si hubiera utilizado la información que se me presentaba o hubiera utilizado un software que toma las velocidades de cuadros del contenedor o códec, podría haber cambiado el video considerablemente. El decodificador predeterminado de Amped FIVE, FFMS, está diseñado para presentarle los cuadros que están allí y mostrarlos de acuerdo con la duración de la transmisión. Ha ignorado los 30 FPS. Ha ignorado los 25 FPS. Con esto, puedo confiar en los 14.95 FPS que me presenta FFMS.
También puedo analizar hasta el nivel del cuadro para responder cualquier pregunta relacionada con el tiempo.
Esa es la respuesta a nuestra pregunta, "¿cuál es la velocidad de fotogramas?".
El dispositivo de CCTV probablemente se configuró a 15 FPS, entonces, ¿por qué no tenemos esto exactamente?
Hay dos razones principales.
A menudo ocurrirán fluctuaciones menores en los cuadros capturados durante cada segundo. Algunos segundos pueden tener 16 fotogramas, mientras que otros pueden tener solo 13 o 14. Por último, cuando se completa la exportación, debe comenzar en un fotograma I (fotograma de referencia), que puede estar a mitad de segundo ... y esto es exactamente lo que ocurre en este archivo
Los problemas de velocidad de fotogramas pueden ser muy confusos, pero ahora que he entendido completamente los datos que se informan y cómo se presentan, puedo continuar con mi investigación...
Espero que hayan disfrutado esta publicación, caminando por el campo minado del formato y las velocidades de fotogramas del códec. ¡Hacer frente a las exportaciones de CCTV nunca es simple!
Esta entrada fue publicada en Anuncios, formatos CCTV/DVR, FIVE, Como hacer el el 27 de April 27, 2020 por David Spreadborough.
Comments