Gracias por responder, eso es más o menos lo que estoy intentando hacer:
- Mediante sockets mandar el archivo descargado/desencriptado a p.e. localhost/xxxx -bastante facil-, no es necesario pero supongo que de esta forma interpretaria XBMC que es un stream real y funcionaria con buffer.
- Leer las instrucciones que voy recibiendo desde el Player de XBMC para saltar o retorceder -bastante fácil-
- Utilizar range de urllib2 para descargar "trozos" del archivo a petición del user -bastante facil-
Problemas:
1. Todavía no he conseguido que el player reproduzca, ni con xbmc.player().play(chunk) donde chunk es el trozo de archivo ya desencriptado con aes; ni con xbmc.player().play(localhost:xxxx) donde le estoy enviando directamente lo que voy leyendo de un buffer -tempfile- , sólo funciona si va leyendo del archivo local donde se va escribiendo el archivo. - no me importa mucho, estaría bien, pero no es muy importante
2. Todavía no he descubierto como XBMC hace esas peticiones del número de bytes a leer del archivo remoto para formar la cabecera del video y claro...tengo el problema de que al leer trozos intermedios del archivo y juntarlos, deviene corrupto, es decir si concateno archivos de esta manera:
video1.avi -obtenido con range 0 a 1000000 bytes-
video2.avi -obtenido con range 1000001 bytes a 2000000 bytes
el video que voy obteniendo es reproducible, -nada nuevo sobre el horizonte, de hecho es lo que ya hace el addon-, pero si creo un archivo de esta forma:
video1.avi -obtenido con range 0 a 1000000 bytes-
video2.avi -obtenido con range 1000002 bytes a 2000000 bytes el video ya no es reproducible, ¡ solo un byte cochino fuera de sitio !
y da igual lo que haga, leyendo del principio, del final, del medio... si el archivo no tiene "continuidad", no es reproducible
Lógicamente es un problema de cabeceras que todavía estoy intentando solucionar y este si que es importante.