Temas de calidad en Youtube


Youtube tiene varias calidades por defecto, las 3 más importantes se diferencian sobre todo por su bitrate, contendor y resolución; la 18 es ~500/MP4/360; la 35 es ~800/FLV/480; la 22 es ~2500/MP4/720

La que más me interesa es la 35, ya que la 18 es muy pobre en bitrate y además enfoca la imagen una barbaridad; el 22 lo uso mucho, pero solo para muy determinados vídeos, como NDS donde la resolución es importante para distinguir algo o para screencast; definitivamente el 35 es bueno para el resto, 640x480/640x360 es suficiente para la mayoría de los vídeos con una calidad aceptable, y convirtiendo los vídeos a una media de 150 frames por segundo, ahorra mucho tiempo sobre los 50 frames por segundo que da el x264 en mi PC para 720p (aunque depende mucho del bitrate que genere el vídeo)

El problema de la calidad 35 es que no siempre es generada, esto es debido a que Youtube utiliza Mencoder para re-convertir los vídeos, y si decide que el vídeo genera poco tráfico de bits por segundo (colores planos, imágenes simples, poco movimiento ...) asigna la calidad 18 por defecto, aún siendo un vídeo a 640x480, cosa que no pasa con 1280x720, da igual el bitrate a el cual subamos un vídeo o el bitrate que genere, con que tenga esa resolución la calidad 22 estará asegurada; la 18 es bastante horrible (aunque eran el 90% de los vídeos de mi anterior cuenta) para lo que puede ofrecer hoy por hoy Youtube con lo que, que algunos vídeos 640x480 acaben en 18 es un problema

Pues he descubierto, toquiteando el script de MeGUI para x264 que cambiando la frecuencia de keyframes de el vídeo, reduciéndola, este acaba siempre convertido a la calidad 35, antes de seguir explicaré que es eso de los keyframes

en MISC, key interval y Min. GOP Size es lo que tenéis que cambiar

Una compresión de vídeo tiene dos tipos de frames (fotogramas), el I y el P, el I-frame es una imagen completa, cada fotograma está representado como si fuera una foto, cuando se usa un P-frame, el codificador (x264 en este caso) comprueba que cambios ha habido entre el frame anterior y el siguiente frame (que será el P-frame), haciendo así que el segundo frame solo contenga la información de los cambios realizados en la imagen, no la imagen completa, así, si por ejemplo tenemos un vídeo de un barco en el mar, y este se mueve, el i-frame de inicio será toda la imagen del mar y el barco, pero el siguiente p-frame, al notar que el mar no se mueve, solo muestra la imagen del barco en el siguiente fotograma; esta es una de las técnicas que se pueden usar para comprimir un vídeo sin perder calidad ante nuestro vago ojo humano, sin embargo esto hace que en los reproductores de vídeo no podamos ver los p-frames (es el motivo por el que algunos FLV o WMV con alto keyframe se ven de manera tan extraña al pasar de un punto a otro del vídeo), porque en realidad no muestran una imagen sino los datos de los cambios sobre la primera imagen; para ello tendremos que añadir más i-frames, es decir, la imagen completa de nuevo, a cada i-frame se le llama key-frame y reduciendo el tiempo entre dos i-frames (dos imágenes completas) se consigue que Youtube convierta a la calidad 35

Así pues, podéis ver mi vídeo de Claymore DS (total fail, tengo que hablar de él cuando pueda) que son imágenes muy simples, lo más probable es que se hubiera convertido en 480x360, en calidad 18, pero usando un tramo entre keyframes más bajo, ha acabado convertido en su calidad original 640x480




1 comentarios:

wabo dijo...

Empezando por la entrada, con evidentes "referencias" a la sub-saga FF VII, y siguiendo con un aspecto gráfico digno de un juego flash del montón...

Así, a primera vista, no es que llame mucho...

----------------

Intersante entrada; seguro que hay muchos n00bs a los que les sirve ;)