por Asimov » Sex Dez 07, 2012 3:34 pm
Resulta que para evitar (hasta cierto punto) que un usuario descargue los archivos de un stream server las opciones son muy pocas.
1- Utilizar RTMPE, con un servidor RTMPE la transmision de los archivos ocurre en tiempo real y de manera encriptada, todos los web players populares son compatibles con RTMPE; esta es una tecnologia flash y esa es la mayor desventaja que le veo, estas obligado si o si a utilizar flash y en mi caso el rendimiento de flash + mp4 es bastante malo, ademas el enlace de datos cliente-servidor debe ser excelente o cuando menos la velocidad de transmision entre ambos debe ser >= que el bit rate de compresion del archivo multimedia, es decir, si se va a transmitir un archivo comprimido a 1000kbps en enlace debe ser por lo menos capaz de soportar 1000kbps por que si no nada se transmitira, al ser una transmision de datos en tiempo real el ancho de banda utilizado no sobrepasara la compresion del archivo, eso es bueno para no saturar la red.
2- Utilizar HTTP/HTTPS con pseudo-streaming y links temporales, esto es compatible nativamente con HTML5 y a base de plugin en el web server con flash. HTML5 se comporta de manera nativa y sin necesidad de modificar el web server como si estuviera en un canal RTMP, es decir, el player HTML5 puede avanzar a cualquier punto en la reproduccion del archuivo multimedia sin necesidad de descargar el archivo completo, ademas HTML5 solicita la descarga del archivo solo a la velocidad necesaria para reproducir el archivo, flash tendra el mismo comportamiento si se agrega un plugin al web serever, yo probe LIGHTTPD + mod_h264 y funciona genial; los links temporales son una manera que tiene el web server de crear links que duran un tiempo determinado y luego son invalidos, o sea se puede configurar para que el link dure 2 segundos solo para que el player y el server hagan el enlace (o el hand shake) y luego el link es invalido, para el player es irrelevante que el link ya no sea valido pues el enlace ya esta establecido, como el link ya es invalido no se podra descargar el archivo.
Yo opte por la segunda opcion, HTML5 tiene un rendimiento nativo tremendo ademas es el futuro, sin embargo hay algunos peros:
1- La combinacion HTML5 - mp4 no es muy compatible, es mas, google dijo que retiraria el soporte de HTML5-mp4 de chrome para apoyar su nueva tecnologia WEBM, cosa que no creo que ocurra, pero...
2- Cuando se utilizan links temporales, que dicho sea de paso en LGHTTPD se logra con mod_secdownload, se pierde la capacidad de adelantar la reproduccion a un punto en el cual el archivo aun no ha sido descargado simplemente por que el link ya no existe.
Es por el segundo punto que termine escribiendo mi propio video player HTML5 pues no es facil modificar el comportamiento de un player existente, lo que hago es que cada vez que el usuario quiere adelantar la reproduccion del archivo a un punto aun no descargado vuelvo a generar un link temporal valido por unos segundos y parece que funciona, no me interesa dar soporte flash lo que limita la compatibilidad.
Saludos.