Laboratorio 4 Report - The Video compression PDF

Title Laboratorio 4 Report - The Video compression
Course SAI
Institution Universitat Politècnica de Catalunya
Pages 32
File Size 2.2 MB
File Type PDF
Total Downloads 108
Total Views 130

Summary

Reporte del tercer laboratorio de Servicios Audiovisuales sobre Internet, The Video compression. Nos pusieron aproximadamente un 6 de nota final....


Description

Universidad Politécnica de Cataluña INGENIERÍA TELEMÁTICA Servicios Audiovisuales sobre Internet

Report 4 : Video compression

Nombres: Joel Fernando Alcalde, Eric Mata, Gabriel Pastor.

Fecha: 2020-2021 QP

INDEX I. II.

Introduction Previous Study 1. Analysis of a video file parsing 2. File analysis 3. ExpertDVD statistics log 4. FFmpeg

III.

Laboratory results 1. H.261 2. Visualizing the MPEG encoding steps with ExpertDVD 3. MPEG encoding with ExpertDVD 4. MPEG encoding with FFMPEG

IV.

Conclusions

I. Introduction El objetivo de la sesión de laboratorio es trabajar y analizar las distintas codificaciones y compresiones de vídeo centrándonos en los códecs H.261, MPEG-1/2 y H.264. Primero veremos cómo actúa el codificador en diferentes situaciones de vídeo (selección de generar intras, por ejemplo), después veremos los pasos que sigue MPEG para codificar a través del software ExpertDVD, y finalmente veremos los resultados de codificado de los vídeos tras ser codificados con diferentes parámetros y diferente software.

II. Previous Study Exercise 1: Analysis of a video file parsing The file aqua.avi, containing uncompressed video and audio streams, will be used in the lab session. a) Visualize it and comment on its contents: 1) visual frequency, 2) movements. Si vemos el vídeo podemos ver como la calidad de imagen general no es muy buena ya que se ven un poco borrosas las imagenes, pero parece que tiene una frecuencia de imagen bastante alta ya que los movimientos y transiciones se ven fluidos y sin interrupciones.

b) Analyse it with MediaInfo in text mode (see Fig. 8 as example). Comment on: a. The video track: codec, frame rate, resolution, bit depth and bits/(pixel x frame). What video quality can it compared to? Si miramos en MediaInfo nos dice que este vídeo tiene un codec ID de Basic Windows bitmap format, tiene un frame rate de 29.970 frames/segundo, una resolución de 352 x 240 pixels, un bit depth de 8 bits y una tasa de bits/(pixel x frame) de 24 bits.

b. Justify numerically the bitrate (bits/s) and size (bytes) of the video track, and compare your results with those provided by MediaInfo. 352 x 240 pixels x 29,97 frames/seg x 24 bits / (Pixel * frame) = 60,42 Mbits/seg 60,42 Mbits/seg x 24,958 seg / 8 bits/byte = 188,49 Mbytes El resultado de bitrate es levemente variado respecto al obtenido con MediaInfo, y es por eso por lo que a la hora de calcular el tamaño del fichero el resultado también sea levemente diferente.

c. The audio track: codec, channels, sampling frequency, bits/sample. What audio quality can it compared to? La parte de audio del vídeo usa PCM y trabaja en modo stereo (con 2 canales), con una frecuencia de muestreo de 44,1 kHz y con 32 bits/muestra. Se podría decir que tiene cierta semejanza a la calidad CD.

d. Justify numerically the bitrate (bits/s) and size (bytes) of the audio track, and compare your results with those provided by MediaInfo. 44100 muestras/seg x 32 bits/muestra = 1,4112 Mbits/seg Obtenemos un bitrate igual que el dado por MediaInfo 1,4112Mbits/seg x 24,959 seg / 8 bits/byte = 4,4 Mbytes Resultado levemente superior a los 4,2 MBytes de tamaño que nos decía MediaInfo

Exercise 2: File analysis With StreamEye Analyzer and MediaInfo, and for each of the following files: -

Max_Headroom.mpg

-

CableLabsHD.mpg

-

tdt.m2t

-

Fixed2.mpg

-

Trailer_Simpsons.mp4

-

Trailer_Brave.mp4

comment, at least, the following parameters (but discuss also any other parameter that you might consider relevant). c) Codec and container. -

Max_Headroom.mpg Codec = MPEG-1 Container = MPEG

-

CableLabsHD.mpg Codec = MPEG-2 Container = MPEG

-

tdt.m2t codec = MPEG-2 Container = MPEG-2

-

Fixed2.mpg Codec = MPEG-2 Container = MPEG

-

Trailer_Simpsons.mp4 Codec = AVC Container = MPEG-4

-

Trailer_Brave.mp4: Codec = AVC Container = MPEG-4

d) Resolution, frame rate, interlacing - express it in the usual format (e.g. 576i25).

-

Max_Headroom.mpg: 240p30

-

CableLabsHD.mpg: 720p50

-

tdt.m2t: 576i50

-

Fixed2.mpg 1080i60

-

Trailer_Simpsons.mp4: 544p24

-

Trailer_Brave.mp4 800p24

e) N and M parameters, if they apply. Why in MP4 N and M seem not to be periodical?

-

Max_Headroom.mpg: N=15 M=3

-

CableLabsHD.mpg: N=15 M=3

-

tdt.m2t: N=12 M=3

-

Fixed2.mpg: N=15 M=3

-

Trailer_Simpsons.mp4: variable

-

Trailer_Brave.mp4: variable

MP4 implementa tecnologías más avanzadas que permiten al software elegir el tamaño del macrobloque de forma dinámica en función de la cantidad de cambios que están ocurriendo en el video.

f) Bitrate profile (shape of the bytes/image graph). Discuss it and relate with N and M (if applicable). Comment also if CBR, VBR with CBR average, or pure VBR. -

Max_Headroom.mpg: 1409 kb/s CBR

-

CableLabsHD.mpg: 17,9 Mb/s CBR

-

tdt.m2t: 3 819 kb/s VBR

-

Fixed2.mpg: 13,12 Mb/s CBR

-

Trailer_Simpsons.mp4: 4 214 kb/s VBR

-

Trailer_Brave.mp4: 5 681 kb/s

g) Only for the MPEG-1/2 cases, from the N and M values and the average size of I, P and B frames provided by StreamEye, justify numerically the average bitrate, and compare it with the results provided by MediaInfo and StreamEye.

-

Max_Headroom.mpg I: 14 442 average bytes P: 7 595 average bytes B: 4 311 average bytes M=3

N = 15

frames per second = 30 StreamEye average bitrate = 1 409 309 bit/s (14 442 + 4 · 7595 + 10 · 4311) · 2 = 175 864 𝑏𝑦𝑡𝑒𝑠/𝑠 175 864 · 8 = 1 406 912 𝑎𝑣𝑒𝑟𝑎𝑔𝑒 𝑏𝑖𝑡𝑠/𝑠

-

CableLabsHD.mpg I: 106 158 average bytes P: 85 733 average bytes B: 14 291 average bytes M=3

N = 15

frames per second = 50,94 StreamEye average bitrate = 16 116 631 bit/s (106 158 + 4 · 85 733 + 10 · 14 291) · 3 + (2 · 85 733 + 4 · 14 291) = 2 004 630 𝑏𝑦𝑡𝑒𝑠/𝑠 2 004 630 · 8 = 16 037 040 𝑎𝑣𝑒𝑟𝑎𝑔𝑒 𝑏𝑖𝑡𝑠/𝑠

-

tdt.m2t I: 88 518 average bytes P: 21 718 average bytes B: 9 423 average bytes M=3

N = 12

frames per second = 25 StreamEye average bitrate = 3 819 000 bit/s (88518 + 3 · 21718 + 8 · 9423) · 2 + 9423 = 479 830 𝑏𝑦𝑡𝑒𝑠/𝑠 479 830 · 8 = 3 838 640 𝑎𝑣𝑒𝑟𝑎𝑔𝑒 𝑏𝑖𝑡𝑠/𝑠

-

Fixed2.mpg I: 191 041 average bytes P: 100 237 average bytes B: 28 405 average bytes M=3

N = 15

frames per second = 29,97 StreamEye average bitrate = 14 306 718 bit/s (191 041 + 4 · 100 237 + 10 · 28 405) · 2 = 1 752 078 𝑏𝑦𝑡𝑒𝑠/𝑠 1 752 078 · 8 = 14 016 624 𝑎𝑣𝑒𝑟𝑎𝑔𝑒 𝑏𝑖𝑡𝑠/𝑠

Las pequeñas diferencias entre el bitrate calculado y el bitrate que nos proporciona el software se deben en primer lugar a que este cálculo es solo una aproximación y en segundo lugar a que estamos haciendo los cálculos con números de framerate enteros aunque en algunos casos son cantidades flotantes.

h) Codec profile and level (see course slides and Wikipedia, and try to relate them to what you found in b), c) and d) and the type of video service. For example: "It is a 720p60 VBR MPEG-2, which seems plausible to correspond to a digital TV service in the United States".

-

Max_Headroom.mpg Tiene una calidad de imagen de 240p30 con un bitrate constante de 1409 kb/s. Usa un codec MPEG-1. Tiene una calidad y una tasa de frames muy pobre, probablemente se trate de algún video antiguo.

-

CableLabsHD.mpg Tiene una calidad de imagen de 720p50 con un bitrate constante de 17,9 Mb/s. Usa un codec MPEG-2. Alta definición, sea usado en transmisiones de televisión por TDT.

-

tdt.m2t Tiene una calidad de imagen de 576i50 con un bitrate variable de 3819 kb/s. Usa un codec MPEG-2. Baja calidad de imagen y baja tasa de frames por segundo, seguramente sea un video destinado a reproducirse en un dispositivo de baja calidad como un mp3.

-

Fixed2.mpg Tiene una calidad de imagen de 1080i60 con un bitrate constante de 13,12 Mb/s. Usa un codec MPEG-2. Alta definición pero baja tasa de frames por segundo. Puede que sea usada en la señal de televisión de alta calidad europa.

-

Trailer_Simpsons.mp4 Tiene una calidad de imagen de 544p24 con un bitrate variable de 4214 kb/s. Usa un codec MPEG-4. Tal y como ocurre en el caso del “tdt.m2t”, tenemos una baja calidad de imagen y una baja tasa de frames por segundo solo que en este caso estos se reproducen progresivos en lugar de interlineados. Visto esto, lo más probable es que el video haya sido comprimido con la intención de ser reproducido en un dispositivo de baja calidad.

-

Trailer_Brave.mp4 Tiene una calidad de imagen de 800p24 con un bitrate de 5681 kb/s. Usa un codec MPEG-4.

i) For the CableLabsHD file, search an example of each type of macroblock, and discuss the value of its parameters (reported by StreamEye), depending on the image type and the image content.

Frame 1 (I): es un frame en el que se debe almacenar toda la información de todos los macrobloques. Su tamaño es de 111 484 bits, eso es un valor cercano a la media de bits por frame “I” que nos muestra StreamEYE (106 158 bits) y que hemos usado para hacer el cálculo del bitrate medio.

Frame 5 (P): vemos que la mayoría de bloques no varían ya que están estaticos, la gran parte de los del centro se toman desde el anterior macrobloque tipo “P” con ligeras modificaciones debido a los movimientos y una pequeña parte se recalculan por completo. Lo anterior nos deja un frame con un tamaño de 62 416 bits respecto a los 85 733 bits de media que tienen los demás frames tipo “P”.

Frame 15 (B): es un frame que, si bien tiene algunos pocos macrobloques de tipo “I”, la mayoría son de tipo B. Eso significa que la mayoría de bloques no deben codificarse completamente ya que son idénticos al del macrobloque anterior con un pequeño desplazamiento añadido. De este modo nos queda un tamaño de 18 424 bits que es ligeramente superior a la media de 14 291 bits que nos calcula el StreamEye. Si estos macrobloques que tienen un ligero movimiento fueran completamente estáticos, la cantidad de bits por macrobloque sería más baja que la media.

Exercise 3: ExpertDVD statistics log Study carefully the log file (with coding statistics) that is included in the Annex, which ExpertDVD produced after coding an MPEG file. Answer the following questions: a) Discuss the basic parameters: bit rate, resolution, frame rate5 , color scheme, chroma subsampling. Can you affirm if it comes from Europe or USA?

El Bitrate del video es de 6 Mbps, es el valor típico para la tasa de bits de video.

El Frame Rate es muy variable, puede ir desde 1 a 60 como máximo de FPS. Al ser el 29.97 se trata del ML → Main Level. Es el sistema Americano, ya que el único Europeo es el Frame Rate de 25. Al ser 720 x 480, tiene un Sampling de 4:2:0. Se trata de un DVD o un SD-DVB. Tiene una resolución de 720 x 480 = 345600.

b) Regarding the statistics for each image, - Identify the frames, its sequence number, and ordering. In which order is the information reported? (acquisition, coding/transmission) - Identify the IPB scheme, and comment on the values of N and M. - Calculate the reordering delay, both at the encoder and decoder, in units of number of images and time. Would you use this configuration for a videoconference? Why? Would you use it for TV broadcasting? Why?

Está compuesto por 5 frames de los siguientes tamaño: Frame 0 → 74327 Bytes Frame 1 → 41077 Bytes Frame 2 → 26355 Bytes Frame 3 → 18235 Bytes Frame 4 → 31912 Bytes

En imágenes MPEG tenemos varios tipos: Tiene una I de 8347826, se trata de las INTRA. Después tenemos una P de 3130435 que se trata de las predicciones, es decir, depende totalmente de la imágen “I” previa. Finalmente tenemos una B de de 2191304, se tratan de imágenes bidireccionales. Estas últimas pueden ir tanto al pasado como al futuro, es decir, van a la “I” o “P” más cercana tanto del pasado como del futuro. La referencia está en posiciones periódicas en imágenes concretas. Tiene una M = 3, esto quiere decir que de la “I” a la “P” hay una distancia de 3. Y la N=15 es cada vez que se repite la “I”, es decir será I1 y el siguiente I16.

c) Discuss the types of macroblock used in each image and its percentages (i.e. 10% + 30% Intra Forward + ...). Relate them to the image type (I, P, B) and comment your conclusions.

Observamos el frame 2. Tiene un intra del 17.1%, un codec block de 48.7%, un not codec macroblocks de 17.8%, un skipped macroblock de 5.9%, un forward prediction macroblock de 30%, un backward macrobloks de 7.3% y un interpolated macroblock de 45.6%. Con esto podemos deducir que se trata de la última fila y última columna de Block-matching algorithms. La información que nos da “-7...7/-7...7” Es del motion vector + el error.

d) Discuss the values of "forward / backward search window" for each image. Specifically, compare the values for both B images. Comment the relationship with what you found in c) What is happening? Frame 0

En este Frame solo tiene un Forward Window de -11...11 / -11...11 totalmente simétrico. Correspondiente con su respectiva estadística.

Frame 1

Tiene un Forward Window de -3...3 / -3...3 y un Backward de -7...7 / -7...7. El Backward window es más que el doble que el Forward.

Frame 2

Tiene un Forward Window de -7...7 / -7...7 y un Backward de -3...3 / -3...3. En este frame el Forward Window es más que el doble de Backward Window, pasa lo contrario que en el Frame 1.

Frame 3

En este frame pasa lo mismo que en el Frame 1, que solo hay Forward Window y no hay Backward Window. Frame 4

En este último frame también hay solo Forward Window de -11...11 / -11...11 sin nada de Backward Window. En conclusión solo tenemos Backward en el frame 2.

Exercise 4: FFmpeg Read the FFmpeg documentation and learn how to:

-

Encode video files from uncompressed YUV or previously compressed files) into MPEG-½ $ ffmpeg -s A -r B -g C -pix_fmt D -i E -vcodec F -f G -b H -bf I

Donde: A es la resolución del vídeo, B es la frecuencia de imágenes/segundo, C es la longitud del GOP, D es el formato del pixel, E es el nombre del archivo YUV que se usa como entrada, F es el vocodec usado, G es el formato de salida del archivo, H es el bitrate y finalmente I es el número de imágenes tipo B por cada GOP. Podemos tomar de ejemplo el siguiente: $ ffmpeg-s cif-r 30-g 15-pix_fmt yuv420p-i bus_cif.yuv-vcodec mpeg2video-f mpeg2video-b 1000k-bf 2bus.m2v

-

Encode using CBR and VBR bitrate profiles for MPEG-1/2

Para CBR tenemos una comanda en la cual ponemos un rango variable de bitrate el cual hará que varíe también la calidad: $ ffmpeg -i A -an -vcodec B -f C -s D -r E -aspect F -deinterlace G -b H -maxrate I -minrate J -bf K -bufsize L M Donde A es el archivo de entrada, B es el codec de vídeo usado, C es el formato de archivo de salida, D es la resolución en pixeles, E es el número de frames/seg, F es la relación de aspecto (16:9 por ejemplo), G es el servicio de desentrelazado de imágenes, H es la tasa de señal codificado, I y J son el maximo y minimo bitrate deseado, K es el número de imágenes tipo B, L es el tamaño del VBV y M es el nombre del archivo de salida. Para tener un ejemplo cogeremos la siguiente comanda: $ ffmpeg-i Wildlife.avi-an-vcodec mpeg2video-f mpeg2video-s1280x720-r 30-aspect 16:9-deinterlace-b 13500k-maxrate13500k-minrate 13500k-bf 2-bufsize 1835008 video.m2v

En VBR tenemos diferentes métodos para conseguir un rango de bitrates entre los que varía, como por ejemplo ABR donde le indicas el bitrate medio que deseas, pero no consigues una calidad constante. En cambio, existe el método “Fixed Quantifier”, en el que usamos la siguiente comanda: $ ffmpeg-s cif -r 24 -g 12 -pix_fmt yuv420p –i BigBuckBunny.yuv -vcodec mpeg2video -bf 2 -qscale 4 -f mpeg2video qsbbb.m2v Donde, en este ejemplo, hay que destacar el factor -qscale 4, lo cual indica el valor de la máscara de cuantificación (rango: 1 mejor calidad, 31 peor calidad) para definir su calidad. Hay más herramientas que trabajan con esta máscara de cuantificación donde incluso puedes definir un rango variable de esa máscara, como por ejemplo en el método “Two-pass”.

III. Laboratory Results 1. H.261 En este primer ejercicio de la práctica hemos visto la codificación de dos vídeos dividiendo las imágenes resultantes en macrobloques. Podemos avanzar el vídeo viendo cada instante en el que el codificador codifica esa nueva imagen gracias al software usado, que es H261Play.

Si empezamos analizando el vídeo bike.p64, que trata de un hombre aterrizando con la moto sobre el suelo podemos ver diferentes aspectos interesantes de codificación de vídeo. Lo primero a destacar es el primer codificado del vídeo, en el cual vemos que se trata de todo intras (bloques verdes a la derecha), ya que como es una imagen totalmente nueva el codificador no reconoce nada codificado anteriormente y codifica la imagen por completo. Es el mismo efecto que hace cuando el vídeo cambia de plano.

En este vídeo, también vemos un efecto interesante que es el momento en el que la moto, tras volar, toca el suelo y saltan chispas. Como durante todo el salto el plano del suelo ha sido igual, el codificador ahorra codificar de nuevo esa zona, pero cuando la moto toca el suelo y saltan chispas hay un cambio de imagen en esa zona del suelo, y el codificador introduce nuevo intras.

En el otro vídeo (sflowg.p64), que se trata de un plano continuo enfocando unas casas y un árbol cruza el plano, podemos ver de nuevo el efecto de que el árbol hace que para el codificador la imagen haya cambiado respecto a la anterior, entonces a medida que pasa el árbol por el plano vemos como se crean nuevos intras dónde está situado.

También vemos cómo se crean intras constantemente en el lado derecho. Esto es debido a que el plano se graba hacia la derecha, y la zona de las flores tiene una frecuencia de imagen tan alta que necesita codificar de nuevo esa parte. Por último, también hemos visto que en plena secuencia de repente el codificador codifica casi toda la imagen por completo sin haber un cambio de plano.

Esto puede tener varias explicaciones, pero dos posibilidades interesantes son: 1- Codifica de nuevo toda la imagen entera cada cierto periodo de tiempo por si en la primera codificación ha tenido algún error, no ir arrastrando este mismo error durante toda la secuencia. 2- El codificador tiene un número de bits de codificación determinados y, como él mismo ve que durante la secuencia no lo ha utilizado, en vez de desperdiciarlos, usa ese margen de más bits para permitirse a sí mismo codificar macrobloques que no considere necesarios de codificar.

2. Visualizing the MPEG encoding steps with ExpertDVD Después, hemos visto como en ExpertDVD te permite codificar vídeos con los códecs MPEG-1 y MPEG-2. En MPEG-1 vemos como solamente nos permite ajustar los parámetros iniciales que vemos en el cuadro de configuración aparte del bitrate.

Como podemos ver, podemos ajustar diferentes parámetros interesantes como por ejemplo el tamaño (en pixeles) de la imagen que queremos comprimir. También nos permite modificar la N y la M (l...


Similar Free PDFs