Publicado el día 14/02/2012 · Archivado en Media center · 215 comentarios

Si te digo que últimamente pruebo vídeos uno detrás de otro en mi Apple TV y que ninguno me funciona, probablemente no te suene raro. Porque te pasará algo parecido.

Y también es probable que como yo hayas pensado que se debía a que los servidores que han quedado tras el cierre de Megavideo son lentos y malos.

Pero yo soy algo cabezón y me gusta entender por que los vídeos fallan en XBMC, y más cuando en el navegador el mismo vídeo sí que funciona, así que he hecho mil pruebas. He leído foros, sugerencias y hasta he estudiado el código de XBMC para entender cómo funciona y cuál es el problema.

Y la verdad es que ahora tengo otra opinión.

El problema de que los vídeos fallen tanto ahora sí que se debe a que los nuevos servidores van algo más lentos que el viejo Megavideo, pero se ve agravado porque hemos cambiado de XBMC Dharma a XBMC Eden. Y el nuevo XBMC Eden funciona de otra manera a la hora de ver vídeo online considerando como erróneos vídeos que en realidad no lo son, como cualquiera puede comprobar intentando ver un mismo vídeo en ambas versiones. Lo cierto es que XBMC Eden falla mucho más que Dharma, e incluso que VideoLan o que el propio navegador del PC. Y es porque tiene menos paciencia.

¿Yo tengo ese problema?

A la hora de reproducir contenido online, XBMC es un poco raro. Si le das una URL y tiene algún problema, simplemente se para y no dice nada. Y si lo intentas varias veces con el mismo resultado te pone ese absurdo mensaje de “Demasiados intentos de reproducción fallidos” que tanto marea a la gente. Los tíos son listos, pero hay que reconocer que en esto no han pensado demasiado.

No siempre que te pase este error será por culpa de XBMC, pero por ejemplo en pelisalacarta cualquier vídeo de VK que falla lo hace por esto. Te suena ¿verdad?.

Las soluciones

Afortunadamente la nueva versión Eden de XBMC incorpora también unos cuantos trucos que permiten ajustar el comportamiento del reproductor durante el streaming, utilizando el fichero de configuración advancedsettings.xml, así que vamos a ver los más importantes porque si bien no son la solución a todos los males del mundo sí que mejoran la cosa bastante.

Si esto del advancedsettings.xml hace que se te pongan los pelos de punta, al final del post encontrarás el mío para descargar y copiar en tu XBMC. La cosa más sencilla del mundo.

Primero: Aumentar el tiempo de espera

El primer truco y el más importante consiste en aumentar el tiempo que el reproductor va a esperar antes de decidir que el vídeo no existe. Algo tan sencillo como esto solucionará muchos de los problemas con VK, por ejemplo, y también con Filenium y otros servidores con “arranque lento” como stagevu.

El parámetro se llama “Curl Client Timeout” porque Curl es el cliente HTTP que se usa internamente. Actualmente ese tiempo de espera está en 10 segundos, pudiendo poner cualquier valor entre 1 y 1000 segundos. Yo lo he subido a 60, y ahora ningún vídeo de VK me da problemas. ¡En serio!

×

<curlclienttimeout>60</curlclienttimeout>

Gracias a @iLK por postear este truco en el foro.

Después: Usar un buffer en disco y no en memoria

Otro problema es que el ancho de banda del streaming tiene que ser suficientemente rápido como para que el vídeo te llegue al menos tan deprisa como lo estás viendo. Dicho de otra manera, si necesitas 2 horas para descargar una película de 1 hora, no puedes verla online.

Para solucionar este problema los reproductores en la web utilizan un truco muy sencillo: se van descargando el vídeo a un fichero y lo que reproducen en realidad es ese fichero. De forma que si el streaming es muy lento, lo único que tienes que hacer es pulsar la pausa y dejar que el vídeo se vaya “cargando”. Cuando llevas un tiempo suficiente, puedes volver a darle al play y no te volverá a hacer buffering.

Algo tan sencillo como esto era imposible en XBMC porque que esta diseñado para funcionar en condiciones restringidas de memoria como set-top boxes y dispositivos similares.

Hasta ahora. Un colaborador de XBMC llamado “elupus” hizo una modificación para incluir precisamente este comportamiento, que se activa cuando configuras el tamaño de la cache a “0” usando el parámetro “Cache Mem Buffer Size”.

×

<cachemembuffersize>0</cachemembuffersize>

Esta vez ha sido @bandavi el que me ha puesto en la pista de este truco, también en el foro. Gracias :)

A partir de aquí

Para aplicar esta configuración en XBMC tienes que crear un fichero llamado advancedsettings.xml según las especificaciones que aparecen en la wiki de XBMC y luego copiarlas en tu directorio “userdata”. Este es el aspecto que tiene mi fichero:

Mi advancedsettings


Que puedes descargar pulsando sobre la imagen o directamente en este enlace.

Descomprime el ZIP y copia el fichero que hay dentro en tu directorio userdata.

Cuando empieces a ver una película, si tienes problemas de buffering dale a la pausa y espera un rato. Y si tus problemas son frecuentes lo mejor es que la pongas un rato antes de que vayas a verla y le des a la pausa para que vaya cargando.

Actualización: Desde hace un tiempo pelisalacarta incorpora en el menú de Ayuda la posibilidad de crear el fichero advancedsettings.xml por tí, para que no tengas que andar conectándote ni creando ficheros. Echa un vistazo a este breve vídeo para ver cómo se hace, es muy fácil.

Comparte tu experiencia

Me gustaría saber qué tal te funciona este truco, si en tu XBMC has utilizado una configuración distinta o si subes o bajas algún valor. Prometo actualizar esta entrada con las sugerencias recibidas para conseguir la configuración óptima en cada caso y dispositivo.

De momento a mí me funciona de lujo, aunque todavía tengo que probarlo en las horas punta :)