El rincon de Mozyto

Busca en mi rinconcito…

Como codificar video en alta definicion (HD) a partir de un archivo fla (Flash)

Me llamó mucho la atención un comentario en un post anterior de como codificar video en HD para poder subirlo a Youtube. Esto es la novedad ya que como comenté anteriormente, Youtube es uno de los sitios con más afluencia para poder visualizar videos online, y además por el hecho de que ahora podemos subir nuestros videos en alta definicion y poder preservar lo más posible nuestro trabajo original.

El comentario en cuestion me menciona que a pesar de que se hicieron los pasos que mencioné en dicho tutorial (utilizando MediaCoder) aun así no podía subir video en alta definicion a Youtube.

Dejenme decirles que hay que tomar en cuenta una cosa. Si el archivo de video fuente no está en alta definicion, dificilmente podrán obtener un archivo de buena calidad para subir a Youtube y obvio no podrán visualizarlo en dicho formato.

Por el comentario, supongo que el archivo desde el original .fla no fue exportado en avi a buena calidad, es decir cumpliendo con la norma de exportarlo de acuerdo a la definicion que se necesita para alta definicion, es decir, con un formato 1280×720 pixeles (720) o bien 1980×1080 pixeles (1080). Otra cosa importante es que el contenedor AVI ya es un poco obsoleto, por lo que no lo recomiendo para realizar videos en HD y subirlos a Youtube. No he realizado alguna prueba en especifico teniendo como archivo final un AVI, la mayoria de mis pruebas han sido codificando MP4 o en su defecto archivos MOV y WMV. La mayoria de las pruebas fue utilizando MediaCoder.

Y bien… si tengo un trabajo en Flash como podria codificarlo para que quede en alta definicion?

De entrada, si desde un principio piensas exportar tu trabajo en un archivo de video HD, el documento en cuestion debe de estar por lo menos en 1280×720 pixeles. Esto para que a la hora de exportarlo no se pierda la proporcion original (si haces un archivo con otras proporciones, tal vez quede estrecho o estirado de acuerdo al archivo original. Así que si empiezas a crear un documento con las características que mencioné creo que vamos de gane.

Segundo. Debes de exportarlo en formato MOV. Utiliza Flash para exportarlo.

¿Y entonces MediaCoder donde queda?

Te responderia: ¿Porque mejor no utilizar el mismo Flash para exportar el archivo directamente a alta definicion? No le veria el caso exportarlo a un formato intermedio (en este caso por el comentario a un archivo AVI) y despues tratar de pasarlo a alta definicion.

Asi que manos a la obra.

En Flash (las pruebas las realicé con Flash CS3 Professional) dale clic en Archivo –> Exportar –> Exportar Pelicula. Vienen varias opciones, dentro de las primeras, escoge guardar archivo MOV.

flash01

flash02

flash03

Posteriormente aparece otra ventana, en donde vamos a configurar las opciones de exportacion para el video y el audio.

flash04

Al hacer clic en Quicktime Settings, aparece la siguiente ventana, en donde vienen los ajustes que tendremos que hacer en cuestion de audio y video. Notese que ya en la ventana de la derecha vienen las opciones que ya había utilizado previamente, tal vez si entran por primera vez sean un poco diferentes.

flash05

Al hacer clic a la primera opcion dentro del apartado Video (Ajustes) aparecen diversos parametros, en donde se debe de especificar que el codec que utilizaremos será H.264 (tipo de compresion), especificamos los cuadros por segundo, la calidad en la que queremos que quede nuestro archivo final, etc.

flash06

En el apartado Tamaño, especificamos las opciones de Exportacion. Observen que debe quedar en 1280×720 (HD).

flash65

En el apartado Audio, ajustamos diversos parametros. No olvidar que se requiere un sampleo de 48000 Hz para evitar problemas a la hora de subir a Youtube.

flash07

Al final, ya teniendo todos los parametros, damos clic en Exportar, con lo que empezará la codificacion de nuestro archivo en HD. El archivo final será en contenedor MOV (Quicktime) el que podrás facilmente subir a Youtube, y quedará de calidad HD.

flash08

flash09

Espero les haya servido este tutorial.

diciembre 22, 2008 Posted by | Internet, Software | , , , , , , , | 5 comentarios

Como codificar videos de alta definicion (HD) para subirlos a Youtube

Como escribi en un post anterior, Youtube empezó a ofrecer la posibilidad de subir videos en HD para visualizarlos en linea. Dicho sitio convierte los videos en HD 720p (1280×720 pixeles) lo cual ya estaba haciendo falta, esto a pesar de que ya había muchos otros en los cuales se podia visualizar videos en alta definicion (HD) desde hacia mucho tiempo (lease Vuze (anteriormente Azureus), Smooth HD, WMV HD Showcase, Vimeo, Hulu, Daily Motion, Quicktime Guide HD, entre otros), pero nos guste o no a muchos, Youtube sigue siendo el lider indiscutible en el terreno de los videos en linea, aunque desgraciadamente dejaba mucho que desear ya que los videos seguian siendo de poca calidad (no todos aclaro) pero al parecer por fin se pusieron las pilas y nos dejaron ver la posibilidad de subir contenido HD a su sitio.

He realizado algunas pruebas y a mi gusto la calidad es bastante buena, aunque los videos pudieran ser algo grandes en tamaño, pero tomando al igual en cuenta que con dichas especificaciones en audio y video lo que se busca es preservar la mayor calidad posible en los videos que subimos.

Muchos se preguntan… y como puedo yo subir un video HD? En realidad no es tan complicado, es más, he realizado algunas pruebas para codificar dichos videos en HD, y en realidad ni siquiera deberia haber una limitante para tener contenido HD, ya que con una computadora de mediana potencia pudieras codificarlos y subirlos al sitio (hablando de archivos en HD 720p con bitrates bajos en audio y video) pero no le veo el caso subir contenido HD si no puedes visualizarlo, ya que para la reproduccion necesitas de entrada (de acuerdo a mi humilde opinion) minimo un procesador doble nucleo (AMD X2 dual core pudiera ser una buena opcion o un Pentium-D de los primeros de Intel de doble nucleo, mucho más recomendable los Core2Duo) así como una tarjeta de graficos minimo 256-512 MB para que la reproduccion de contenido HD sea lo mas fluido posible, y 1 GB RAM, esto a pesar de que las recomendaciones en este aspecto de muchos para reproducir contenido HD (hablando de 720p) sean mucho menores (por ejemplo procesador Pentium 4 o mayor, 512 MB en RAM, tarjeta de graficos con 64 MB video), mi opinion difiere mucho en este aspecto.

Como comenté, para el procesado de videos HD podrias hacerlo con una computadora de mediana potencia, pero con la desventaja de estar sacrificando por mucho el rendimiento de tu sistema, y con el consiguiente consumo en tiempo (bastante importante) en codificar dichos archivos, por lo que lo recomendable es tener un equipo con mejores prestaciones para lograr codificar contenido HD sin problemas.

Yo he utilizado un programa llamado MediaCoder para codificar videos en HD sin complicaciones, siguiendo varias especificaciones (mis recomendaciones estan en fase beta) esto de acuerdo a los pocos conocimientos que tengo, aunque desgraciadamente en varias pruebas he realizado este contenido HD a partir de contenido SD (no he tenido posibilidad de tener contenido HD nativo realizado por mi) pero con una mejoria importante en cuestion de la calidad del video (normalmente si subes contenido SD sin convertirlo a HD a Youtube hay una perdida en cuestion del tamaño y calidad del video, cosa que al convertirlo a HD (que en realidad estamos de acuerdo que no es contenido HD real) se preserva su calidad, además de que al convertirlo a HD se utilizan filtros especiales que ayudan a que el archivo en HD tenga mucha mas calidad y definicion que el original en SD. Ahora bien, si subieramos contenido HD nativo al sitio, sería un archivo final de video con muy pocas perdidas de calidad, ya que el formato que utiliza Youtube es H.264/AVC, con audio codificado en AAC (muchos archivos que puedes encontrar en linea se encuentran codificados con dichos formatos) que ofrecen muchas prestaciones con compresion avanzada de audio y video sin sacrificar en gran manera su calidad, y tomando en cuenta de que hay muchos sitios donde puedes conseguir contenido HD de alta calidad, la calidad de dichos videos al subirlos a Youtube se preserva en gran manera.

MediaCoder es un programa con amplias posibilidades para codificar videos en HD, te permite utilizar diversos formatos de video  (dentro de los mas utilizados AVI, WMV, MKV, MOV) como video fuente, con la posibilidad de exportarlos a formato MP4 con codec H.264, y con respecto al audio utilizo AAC que te permite codificar audio de excelente calidad, con muy pocas perdidas y con tamaños de archivos de audio relativamente bajos, con la finalidad de que el archivo final no sea de un tamaño excesivo y de poder subirlo facilmente a Youtube.

Ahora, tienes una de dos. O sacrificas calidad disminuyendo la tasa de bitrate, pero el archivo final sera mucho menor, pudiendo subirlo al sitio de Youtube en mucho menos tiempo, o la otra, llevas la tasa de bitrate a un valor alto, preservando mucha más calidad, pero con un archivo final mucho mas grande, que si tienes una conexion lenta de subida te va a dar algunos dolores de cabeza. Personalmente el video minimo debe tener unos 2000 kbps (por ahi se han hecho algunas pruebas con mucho menos bitrate con una calidad excelente, entra al blog de Fabio Sonnati para que sepas de que estoy hablando) aunque se pudieran utilizar bitrates mas altos si lo consideras necesario.

Yo he realizado unas pruebas a bitrates altos (aprox 10,000 kbps) en video, con audios relativamente bajos en bitrate con el codec AAC y los resultados son realmente impresionantes. El video de prueba en cuestion es un comercial de iPod Touch que puedes encontrar en el sitio de Apple. Lo escogi principalmente porque es un archivo sencillo, de poco tamaño (es el de calidad Large) y de poca duracion, necesario principalmente para disminuir el tiempo de codificado y valorar entre varios archivos de prueba. No olvidar que es contenido SD que se escaló a HD. Aun asi comparando el archivo fuente en SD y el final en HD 1080p se aprecian detalles importantes con mejoria en el contenido al pasarse a HD.

Las caracteristicas del archivo fuente son las siguientes (datos tomados de MediaInfo):

Formato: MPEG-4 (QuickTime)
Tamaño del archivo: 10.4MB
Duración: 30seg.
Bitrate total: 2906Kbps

Video
AVC (Main@L3.0) CABAC No, 2 ref frames, bitrate 2735 kbps, tamaño 848×480 pixeles, 23.976 fps, progresivo
Tamaño de pista: 9,79MB (94%)

Audio
AAC version 4, LC, bitrate 160kbps, 44.1Khz, 2 canales (L,R) 16 bits
Tamaño de pista: 604Kib (6%)

Ahora bien, para codificar el archivo en formato HD haz lo siguiente.

Abre MediaCoder (si no lo tienes lo puedes bajar de aqui).

Pulsa Add, busca el archivo que quieres convertir, y da clic en aceptar. Asi mismo puedes agregar una carpeta completa, un folder conteniendo archivos DVD, una URL, etc.

mediacoder_add1

Encontrarás varias pestañas por debajo de la ventana principal. General, Audio, Video, Demuxer, Muxer, Picture, Time, Subtitle, Text, Plugins, etc.

mediacoder_mainwindow

Ve a la pestaña Audio. Utiliza el encoder Nero Encoder con un sampleo de 48KHz, Estereo. Si lo deseas puedes normalizar el audio. Al lado encontraras mas opciones para Nero Encoder, escoge Profile AAC-LC, target bitrate 128kbps (en este aspecto he realizado pruebas y 96 kbps puede ser tambien adecuado, aunque muchas otras personas prefieren bitrates altos, pero AAC no es MP3, es mucho mas avanzado – en MP3 prefiero 192kbps o más – asi que con un bitrate 96-128 kbps es mas que suficiente). Al igual en vez de Nero Encoder puedes utilizar FACC o CT AAC+.

En la pestaña Video, escoge el modo Three-pass (tres pasadas) aunque muchos prefieren solo 2 pasadas. Bitrate entre 2000-10000 kbps (puedes hasta 20,000, pero ya seria una exageracion). Minimo 2000 es lo adecuado. Formato H.264, contenedor MP4. En Source y Encoder, Auto Select.

Al lado encontraras los parametros para el codec x264, utiliza profile High (o Main) Level 5.1 (puedes utilizar tambien el main profile, Youtube lo reconocerá facilmente y en ocasiones el video se codifica mucho mas rapido en el sitio, y aparecerá disponible mucho más pronto). Si tienes duda con respecto a los profiles de los archivos H.264, checa esto en Wikipedia (aqui en ingles). CABAC on (si dejas esta opcion en ON, se aumenta un poco el tiempo de codificacion y decodificacion, pero ayuda a optimizar el bitrate del video) aunque pudieras dejarlo en OFF (ve a video, en el codec x264 dale clic a ADVANCED) busca CABAC y dale clic en OFF. B-Frames 3, Ref frames (Predictor Frames) 4, Motion Estimation Mode EXHAUSTIVE, Motion Estimation Range 16.

En la pestaña Picture, resize 1280×720 pixeles o 1920×1080 pixeles (720 o 1080). Crop si lo requieres. Framerate 29.97 fps, aspect ratio si necesitas especificar el formato, en este caso 16:9. En Effects puedes activar varios efectos como Deblocking, Deringing, Denoising, desentrelazado o bien modificar el brillo, contraste, saturacion de tu video. Lo que tu requieras.

Y de ahi en las otras pestañas ningun ajuste, dale clic en Start en el menu principal y adelante, ya estarás codificando tu archivo en HD.

mediacoder_codificando

El archivo final quedó con las siguientes caracteristicas:

Formato: MP4 (contenedor)
Tamaño del archivo: 35,9MB
Duración: 30seg.
Bitrate total: 10,0Mbps

Video
Formato AVC  High@L5.1  CABAC Si, RefFrames 4, Bitrate Variable
Bitrate: 9 915Kbps
Bitrate nominal: 10 000Kbps
Bitrate máximo: 12,8Mbps
Ancho: 1920 pixeles
Alto: 1080 pixeles
Relación de aspecto 16:9
Velocidad de cuadro: 29,970fps
Resolución: 24bits
Colorimetry: 4:2:0
Tipo de exploración: Progresivo
Tamaño de pista: 35,4MB (99%)
Librería: x264 core 65

Audio
Formato: AAC
Formato de la versión: Version 4
Formato del perfil: LC
Tipo de Bitrate: Variable
Bitrate: 129Kbps
Bitrate máximo: 138Kbps
Canales(es): 2canales
Velocidad de la muestra: 48,0KHz
Resolución: 16bits
Tamaño de pista: 475Kib (1%)

Comparando tamaños de archivo:

  • SD 480p: 10.4 MB (2906 kbps)
  • HD 1080p: 35.9 MB (10 Mbps)

Para ser un archivo en alta definicion, a tal razon de bitrate (un bitrate muy alto) considero que el archivo final no es tan grande para subir a Youtube, aunque disminuyendo el bitrate a 2000 kbps por ejemplo, el mismo archivo tiene un tamaño aproximado de 7.7 MB (si, 7.7 MB, mucho menor que el archivo original, y en alta definicion).  Aqui lo que importa para el tamaño final del archivo no son los pixeles sino la tasa de bitrate (como en todo video) aunque dependiendo la fuente de tu archivo depende al igual la calidad final del archivo en HD, por lo que hay que jugar mucho con los bitrates para obtener un archivo de buena calidad.

Concluyendo, mis recomendaciones para subir un archivo en alta definicion son las siguientes:

  • Tamaño 1280×720 o mayor (ya que si no se hace de esta manera, Youtube no lo reconocerá como formato en HD), en contenedor MP4.
  • Video codificado con x264, high profile @ level 5.1
  • Tres pasadas, CABAC on, B-Frames 3, Ref frames (Predictor Frames) 4, Motion Estimation Mode EXHAUSTIVE, Motion Estimation Range 16.
  • Bitrate minimo de 2,000Kbps, maximo de 10,000 kbps
  • Puedes utilizar filtros como yo lo utilicé (deblocking, deringing) aunque esto va a afectar en la velocidad en la que se procesa el archivo, aunque si se requiere tendrás un archivo de mejor calidad.
  • Puedes utilizar cropping (especialmente util en archivos en formato 4:3) aunque utilizalo con cautela, y solo en los casos que se requiera.
  • Audio AAC-LC 96-128 48KHz de sampleo (yo utilizo el codec de Nero, aunque en realidad pudiera ser cualquiera, solo no cambiar de formato AAC) y hasta puedes utilizar el codec AAC-HE V2, el cual disminuye mucho mas el tamaño final del archivo de audio, y sin perdida perceptible de calidad. Simplemente utilizo de entrada el codec que les mencione primero, considero que es mas compatible con los archivos HD que Youtube maneja. Es importante que utilices sampleo de 48Khz.
  • No pasar del archivo limite de 1024 MB que Youtube acepta.
  • Puedes codificar al igual en otros formatos para HD (WMV, MOV) –> he subido archivos a Youtube en MOV, no ha habido ningun problema para que los identifique. Simplemente con el contenedor MP4 me siento mucho mas comodo trabajando.

Ahora, vamos a comparar los archivos en definicion estandar y alta definicion, ya en el sitio de Youtube (te sugiero le des clic a pantalla completa)

Archivo subido en definicion estandar (SD 480p) Alta calidad

Archivo subido en alta definicion (HD 1080p) convertido por Youtube a 720p

Como pueden ver, se observa una mejoria impresionante del mismo video solo con haberlo codificado a alta definicion 1080p. Asi que con esta tecnica, podras subir videos de calidad estandar codificados en HD con la calidad que ofrece la alta definicion.

Espero les haya servido este post.

diciembre 17, 2008 Posted by | Internet, Software | , , , , , , , , , , , , , , , , , , , , , , | 11 comentarios