Manual: Codificación de video (iPod Touch)

Para dar las gracias debes entrar o registrarte en el foro

Mensajes: 2766 Agradecido: 0
27 Dic 2007, 21:38# 91

Hacía tiempo que este tema merecía ser fijo :) Lástima el del jailbreak, que también está de puta madre.
Una duda: qué pasa si tengo un video H264+AAC, pero el perfil es high y no básico?El iTunes lo convierte?El iPod lo acepta pero lo reproduce con especificaciones de básico? :?:

Retirado en la paz de estos desiertos,
con pocos, pero doctos libros juntos,
vivo en conversación con los difuntos,
y escucho con mis ojos a los muertos.
Gracias  
Etiquetado en:
Mensajes: 4851 Agradecido: 0
28 Dic 2007, 01:01# 92

q no podrás ni meterlo en ituens ni reproducirlo. Quizás te deje meterlo en itunes, pero lo dudo. Itunes lo primero q hará será una comprobación de perfil. Si detecta q está en perfil high... no hay tu tia.

El video se codifica con ciertas opciones, el q sea un perfil baseline, main o high son tan solo restricciones. Si se codificó con las opciones q permite high, no irá, y la única opción será recodificarlo

Ahora bien, con mucha mucha suerte, la cabecera se marcó como perfil high y no se usó ninguna opción del perfil high. Si es así si se puede modificar de forma sencilla la cabecera del archivo para decir q es en realidad un perfil baseline y un nivel 3.0. Pero si se usaron opciones de codificación de otros perfiles/niveles...

Básicamente, al estar en baseline las restriccioens son los b frames y CABAC.

Resumiendo:

La cabecera de un archivo en h264 dice en q perfil y level se codificó (no hablo de lo metadatos de h264). La cabecera tb dice si se usó por ejemplo cabac... pero esta cabecera no tiene pq ser real. Puedo hacer una cabecera falsa, decir en la cabecera q el perfil es baseline y estar usando bframes o cabac, o al reves. Un error común a la hora de codificar es q se suelen usar los ajustes máximos siempre, perfil high y nivel sin restricciones. Esto no es q sea malo, pero si estamos usando opciones de codificacion mas bajas, en las q podemos usar perfiles o niveles inferiores, es adecuado, sobre todo para los reproductores.

Pruebas q he hecho:

Intentado averiguar las prestaciones máximas del ipod para reproducción de h264 empecé desde los ajustes mas pequeños y fui incrementando.

Perfiles mail y high directamente no podían ser cargados a itunes, así q pensé q itunes estaba leyendo la cabecera del archivo (ni siquiera estaba intentando reproducirlo). Si la cabecera estipulaba q era un perfil superior a baseline, simplemente no lo mete. Cuando encontré las prestaciones máximas del perfil baseline (level 3.0 y un maximo de 6 frames de referencia, q no es poco) intenté mejorarlo, creando cabeceras falsas, quizás el ipod si fuera capaz de reproducir los archivos, pero itunes se negaba a cargarlos. Así q fue facil...

Primero creé un archivo igual q un baseline 3.0 q funcionaba, pero tb usando CABAC. Modifiqué la cabecera para q fuera baseline L3.0. Pero no lo engañé, pq CABAC tb es un dato q se pasa a la cabecera y itunes lo lee, si detecta q el flag de CABAC está activado no entra. Así q modifiqué tb la caecera para el flag cabac... Y sí, entró en el ipod... pero daba un error de apertura al abrir el archivo, lo cual es normal. CABAC y CAVLC a groso modo son los dos métodos de codificación entrópica de h264. Esta tecnología es el último paso q se realiza en la codificación. Lo q hace es ordenar los bits de datos de manera q se pueda hacer uan compresión sin pérdidas sobre el mismo tren de bits. Esta compresión es sin perdida, y usar CABAC en vez de CAVLC puede suponer un ahorro de hasta un 30% del bitrate!! Pero claro, al fijar el flag de CABAC como CAVLC, pues a efectos prácticos, el reproductor del ipod buscaba un tren de bits CAVLC, no CABAC, luego se encontró con un archivo con datos q no comprendía.

El otro punto importante eran las bframes, y con esto lo tenía mas facil, puesto q en la cabecera no se especifica si se usan o no, se hace en tiempo de decodificacion. Falseé la cabecera para hacerlo pasar por baseline y 3.0 pero usé en la codificación esta vez bframes. Efectivamente el video lo subí al ipod, y esta vez si pude reproducirlo (lógico), peero efectivamente el reproductor no era capaz de decodificar los bframes, provocando saltos, frames en verde y cosas raras.

Así q bueno.. espero q esto te sirva un poco para entender tu pregunta :P

Mi Blog sobre iPod/iPhone, Nueva dirección -> http://blog.theliel.es
Repositorio -> theliel.es/repo/repo.xml (proximamente)

Como hacer preguntas inteligentes

No contesto MP, lo que se quiera preguntar en un post o hilo nuevo
Gracias  
Mensajes: 2766 Agradecido: 0
28 Dic 2007, 02:11# 93

Gracias por la clase :D
La verdad es que estoy flipando con el baseline...no me quiero ni imaginar qué calidad tendrá en High :shock:
Hace un rato me he bajado un capítulo de naruto H264/AAC y he flipado...también es en baseline, pesa 150MB por los 170 que pesa uno de los típicos con contenedor .avi, y la calidad puff...yo estoy acostumbrado a que al maximizar la calidad se pixelice un poco, con esta calidad se disfruta de la imagen :P
Otra cosa: el iTouch no soporta HE-AAC, no?
Y por último, tenia un software para analizar videos que me daban todos los datos necesarios para hacer una buena compresión, sabes de alguno?Porque o soy lerdo y no se leerla, o la información que da w$ sobre los mp4 es prácticamente nula (ni la resolución).

Retirado en la paz de estos desiertos,
con pocos, pero doctos libros juntos,
vivo en conversación con los difuntos,
y escucho con mis ojos a los muertos.
Gracias  
Mensajes: 4851 Agradecido: 0
28 Dic 2007, 05:01# 94

Bueno, en baseline no tenemos ni CABAC ni bframes. Esas son básicamente las diferencias. En la wiki tienes una tablita básica, no ilustra todo, pero te haces una idea:

http://en.wikipedia.org/wiki/H264

a medio camino están las diferencias más importantes de los perfiles. Pero es una pena muy grande... tan solo con poder usar CABAC, tendríamos una reducción de tamaño de hasta un 30%!! esto es una burrada, haz cálculos... en vez de 100Mb, serían 66mb. Normalmente este dato se pasa por alto, pq la gente dice: Pues a mi me ocupa lo mismo... claro, no te jode, si el bitrate pones el mismo, será el mismo... pero con más calidad ;)

Y el otro gran invento son los b frames... es uan pena q no podamos usarlos. Los bframes son los frames q más se pueden comprimir. Una peli normal, un trailer de apple y demas suele tener esta estructura:

IPBPBP...IPBPB...

un poquito de frames: (siempre hablando en h264, aunq la mayoría de todos los conceptos son aplicables a cualquier codec de video)

Un frame es una imagen. Pero un codificador competente jamás guardará uan imaen en un frame! sería de tontos... 25 imagenes/sec 25 imagenes en jpg solo para un segundo... se me ponen los pelos de punta... verdad? Hay codec q usan este sistema, por ejemplo muchas cámaras de fotos q hace videos... resultado? video patético en tamaños astronómicos.

Q se hace? pues se diferencia diferentes tipos de frames:

I= Iframe -> Imágenes completas. Un iframe es una imagen pura y dura, son las q más ocupan, pero son necesarios. PQ?

a) Sin I frames no sería posible el posicionamiento de un video por ejemplo. Tu abres un video (o un DVD) y puedes irte a la parte q quieras. El iframe no requiere decodificar ningún frame anteriormente, luego es posible situarse en un video a cualquier sitio... siempre q haya en ese sitio un iframe. Esto se hace de manera automática por supuesto. Tu mueves el deslizador a una parte del video, y el reproductor y el codec escogen el iframe más próximo
b) Tb se suelen usan Iframes cuando se corta una escena. Una acción policial y de pronto cambia el plano y se ve un dormitorio. Pues ese Dormitorio, el primer frame, será casi seguro un Iframe
c) Tb se suelen usar en escenas muy complejas, dnd el uso de Pframes o bframes las hacen inviable por la calidad. Escenas muy rápidas, parpadeos extraños...

Se llama GOP precisamente al numero de frames q hay entre iframe e iframe en condiciones normales. Un DVD suele tener un GOP de 12fps. Es decir, cada 12frames MAXIMO se planta siempre un iframe. Pueden plantarse más por supuesto si fueran necesario. Con un GOP de 12fps, tendríamos un iframe cada medio segundo más o menos, por eso podemos ir a cualquier parte del dvd con una precisión de medio segundo :P. Problema? mas espacio en disco es requerido.

Para conversiones de video caseras? megui? se tiene por defecto un gop de 250, es decir un iframe cada 10 segundos. Para las pelis, ipod y demas está bien. Ahora, si queremos editar video y hacer un MASTER, 250 no sería idoneo. un GOP de 250 al darle a play en cualquier parte del video, nos tardara unos segundos siempre en estabilizar la imagen. No significa q luego no podamos ir a cualquier parte de la peli (depende del codec)

P = Pframes -> Frames predictivos, ocupan bastante menos q los Iframes. Pueden ser una imagen en sí misma o contener tan solo vectores de movimientos. Es decir, en los P frames l oq se guardan son (por asi decirlo) las nuevas coordenadas de dnd estarán los píxeles de la imagen anterior. Como de una imagen a otra hay muy poca diferencia, es más economico en vez de guardar toda la imagen guardar el destino de los píxeles q varían. Así q en realidad no hay imagen!! tan solo vectores q aplicados a la imagen anterior (o varias imágenes anteriores) crea la nueva imagen. Evidentemente, los pframes requieren de algún frame anteriormente decodificado, ya sea un iframe, pframe e incluso un bframe en H264.

B = B frames -> Frames bidireccionales o bipredictivos. PUes son iguales q los Pframes, pero bidireccionales. Osea, hemos dicho q los pframes en ralidad son vectores de desplazamiento de los píxeles (tb puede ser la imagen en sí) de una imagen anterior. Pues bien, los Bframes almacenan tb lo mismo, imagen en sí o vectores de desplazamiento, pero esta vez no solo de frames pasados, sino de frames futuros. Es decir, los vectores de predicción ahora no solo se basan en los frames pasados para establecer el frame actual, sino q tb se mira el frame q viene despues. Esto se traduce en q un bframe ocupa muy muy muy poco!! y en h264 ademas tb se pueden usar bframes para usarlos de referencia de otros bframes: Codifico un Iframe, despues n pframe basado en el iframe, despues un bframe basado en el pframe y en el pframe q hay dentro de dos frames más, despues otro bframe basado en el bframe anterior y en l bframe siguiente... Vamos, q se puede liar bien la cosa XD

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

Pues bueno, por desgracia, no podemos usar bframes :P. Es una pena, pq en escenas dnd hay mucho contenido estático, la compresión es muchísimo mayor. Por ejemplo anime!! en anime tan solo suele moverse el primer plano... en anime es facil ver cadenas de hasta 5 bframes consecutivos! por eso, una peli anime puede ocupar a lo mejor la mitad q una normal.

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


Si, supongo q te refieres q con otros codec al maximizar a ventana se pixela mucho y esto no pasa con h264. Normalmente esto es gracias al debloking q tiene de serie h264 q es maravilloso. Puedes ver pelis a 320*240 a pantalla completa y lo verás bien.

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

uff, HE-AAC... tengo q serte sincero y no lo he probado, pero no lo descartaría a la ligera. Seguramente aceptarlos los acepta y los reproduce, otra cosa es q la calidad del audio mejore. HE-AAC es util tan solo en bitrates bajos, para bitrates a partir de 96 la calidad de LC-AAC es mejor y gasta menos procesado = menos bateria. Supongo q sería complciado comprobar si el ipod touch es capaz de no slo reproducirlos, sino q realmente está haciendo uso de HE-AAC.

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

Las pruebas de compresión dejaron de ser útiles, sinceramente. En h264 te costumbrarás a hacer pequeños test, con lo q es muy util saber manejar avisynth y en especial el comando TRIM. Para analizar archivos de video hay muchas. La más famosa seguramente y gratuita es gspot. Si quieres algo un poco mejor te recomiendo avinaptic, una buena aplicacion libre q escapaz de darte infformación muy sabrosa, claro q la interfaz es tan solo regular:

http://fsinapsi.altervista.org/code/avi ... index.html

Y si puedes permitirte gastarte un pastizal, siempre puedes obtener StreamEye, de Elecard, muy buena app dnd las halla.

Mi Blog sobre iPod/iPhone, Nueva dirección -> http://blog.theliel.es
Repositorio -> theliel.es/repo/repo.xml (proximamente)

Como hacer preguntas inteligentes

No contesto MP, lo que se quiera preguntar en un post o hilo nuevo
Gracias  
Mensajes: 2766 Agradecido: 0
28 Dic 2007, 16:53# 95
:) Gracias de nuevo por la info
Es buen momento para ponerme a estudiar todo esto, apenas me he metido en edición de video.
En efecto, la aplicación que solía usar es GSpot, ya la tengo de nuevo por aquí :)
No, no me dejaré ni un duro en el StreamEye, pero tal vez "me lo pasen", nose si será muy difícil de conseguir.
Qué pasa con este video?Por qué iTunes no lo acepta?
Imagen

Que no haya CABAC ni bframes en el Touch es básicamente por razones de ahorrro de energia no?Supongo que supondrá más esfuerzo para un procesador (probablemente mucho más) reproducir el perfil high que el low.
Y, ahora que dices lo del anime, no hay ningun fansub o web dedicada a difundir series de otros fansubs, que se haya dado cuenta de esto y distribuya releases propias o no en formatos más provechosos como puede ser h264? Yo he encontrado los capítulos de shippuuden, la captura es un ejemplo, y pesan menos que los .avi típicos y los doblan en calidad...sin embargo, el iPod no los acepta, por qué?
Retirado en la paz de estos desiertos,
con pocos, pero doctos libros juntos,
vivo en conversación con los difuntos,
y escucho con mis ojos a los muertos.
Gracias  
Mensajes: 4851 Agradecido: 0
28 Dic 2007, 17:28# 96

Bueno, por razones de potencia normalmente. El ipod decodifica en hardware, tiene un procesador específico par ala decodificación. El uso de un decodificador hardware mas o menos potente depende de dos cosas: Precio y consumo, como bien has dicho. Decodificar CABAC implicaría mayor consumo = mayor drenaje de batería. Sobre los Bframes un tanto lo mismo. Usar a lo mejor 4 bfrmes y pudiendo ser anidadas... es un proceso algo costoso. LA prueba la tienes q h264 es el codec más potente ahora mismo... pero tb el más costoso a la hora de codificar/decodificar. Ya hoy en dia no es problema, la decodificaión se hace casi toda en hardware. Por ejemplo en un pc, si tienes una tarjeta Nvidia, todas las series 7 y 8 y la mayoria de las series 6 tiene decodificación hardware casi completa. La mejor para esto es sin duda la 8600, puede decodificar en hardware una peli en 1080p 25fps, a 20mb/s perfil hight...sin usar más de un 2-4% del procesador del PC. XD, así q con eso te lo digo todo. Si, algunas ATI tb, y no empezaré discusion ATI Vs nvidia.

Pero el ipod no tiene tanto potencial... una pena. Lo q podría ser posible, es q apple incluyera en el ipod algún tipo de soporte para bframes, al menos poder usar 1bframe o CABAC.

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


Respecto a gspot, es bueno, tiene el problemilla de q no suele dejarte analizar el tren de frames, como si hace con archivos avi o mpg.

De todos modos peudes descargarte la version trial de StremEye, es completamente funcional y preparada para registrarla una vez compres y tenga el numero de serie... aunq estoy seguro q esto no es problema ppara un chico con dinero... puesto q veo en tu pantalla q tb has comprado una licencia para CoreAVC decoder, así q podrías preguntarle al mismo distribuidor a ver si tienen productos de elecard.


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

respecto al video, ese q me pones tiene truco. Puede ser q no entre pq no esté en perfil baseline y 3.0, datos q no te dará gspot. Usa Avinaptic o Stremeye para tener esos datos, o editalo con un editor hexadecimal y lo miras en las cabeceras... aunq esto es mil veces mas complicado claro está.

Tb algunos conversores de video no manejan bien los fps 23.976 y 29.97, así q tb pede estar ahí el problema, q qiuen lo convirtió, el muxer diera algun error. (megui sin ir mas lejos,si has leido los otros post, puede tener algun problema tb)

Un saludo y feliz Santos Inocentes

Mi Blog sobre iPod/iPhone, Nueva dirección -> http://blog.theliel.es
Repositorio -> theliel.es/repo/repo.xml (proximamente)

Como hacer preguntas inteligentes

No contesto MP, lo que se quiera preguntar en un post o hilo nuevo
Gracias  
Mensajes: 153 Agradecido: 0
30 Dic 2007, 18:06# 97
Theliel escribió:
2. Si, megui se lo come todo, son mov? pues mov, no hay problemas.

Algunas indicaciones:

Los AVI los abre usando Avisource
Cualquier otro los abre usando DirectShowSource.

Cuando usas megui, le das a script creator, pon ver todos los archivos, y selecciona el mov. Y sin problemas. y si por lo q sea no puedes, crea el script manualmente:

DirectShowSource(C:\Video1.mov,fps=25,audio=true) / Por ejemplo

megui funciona de manera simple -> Si lo puedes reproducir, lo puedes convertir. Y dado q tenemos instalado Haali media spliter y ffdshow, básicamente podemos convertir creo q casi cualquier video q exista, pro raro q sea.


A ver. Te explico lo que hago para abrir los mov y a ver si encuentras mi fallo puesto que yo no. Abro el script creator. Para abrir el mov ya no me sale en superted files, le doy a ver todo. Selecciono y me lo previsualiza pero sin sonido (cuando si que lo lleva). Como el ratio es 1.333 y el video es cuadrado, lo resizo a 426x320 asi aprovecho todo lo largo. En filters me dice progresivo y frames 30. Guardo y me da error.
Avisynth error: DirectShow source couldn't open ... .mov. no se encontro un objeto o nombre.
(E:\Mis documentos... 1.avs, line 1)

Si le doy a aceptar voy a la pantalla principal y le doy a enqueue y lo mismo, que el file no se puede abrir..

EL file esta alli, asi que no se que pasa..

Alguna ayuda? Thnxs
Imagen
Imagen
Imagen
Gracias  
Mensajes: 4851 Agradecido: 0
30 Dic 2007, 20:23# 98

si

Evidentemente en el preview no te saldrá nunca con el audio, así q al darle si te lo abre y se ve en el previw el 90% está echo.

Ahora bien, el error te lo da al codificarlo y parece ser un error de ruta. Suele ser debido a nombres muy largos o con caracteres no soportados. Prueba lo siguiente:

Renombra el archivo mov a 1.mov
Muévelo a C:\1.mov
Crea el script como siempre

A ver si así te da error
Si no te lo da, el problema fue de la ruta o dle nombre del archivo, muevelo de nuevo a dnd lo tenias. Si funciona de nuevo era error del nombre ;)

A mi de cuando en cuando me pasa, no mucho la verdad, pero de cuando en cuando...

Si no se te soluciona me lo dices.

Mi Blog sobre iPod/iPhone, Nueva dirección -> http://blog.theliel.es
Repositorio -> theliel.es/repo/repo.xml (proximamente)

Como hacer preguntas inteligentes

No contesto MP, lo que se quiera preguntar en un post o hilo nuevo
Gracias  
Mensajes: 153 Agradecido: 0
02 Ene 2008, 15:51# 99

me da error. lo pongo en enqueue, empieza y luego pone error en status. voy al log y pone:

encoding started
an error ocurred: avis [error]: unsuported input format (DIB)
an error ocurred: x264 [error]: could not open input file C:\1.avs

Imagen
Imagen
Imagen
Gracias  
Mensajes: 4851 Agradecido: 0
02 Ene 2008, 15:54# 100

ok, facil, añade esto al final del script:

ConvertToYV12()


Eso sucede pq el espacio de color usado en el video de origen es seuramente en RGB. Con poner esa instruccion al final del script debería de ser suficiente, evidentemente lo q hace es convertir la entrada del video a codificar a YV12.

Mi Blog sobre iPod/iPhone, Nueva dirección -> http://blog.theliel.es
Repositorio -> theliel.es/repo/repo.xml (proximamente)

Como hacer preguntas inteligentes

No contesto MP, lo que se quiera preguntar en un post o hilo nuevo
Gracias  