Hacer Seek sin servidor streaming
Hola.
Tengo entre manos un proyecto en el cual necesito hacer un seek a un punto concreto (no siempre el mismo) de un vídeo... he buscado y buscado y lo he intentado de muchas maneras... el caso es que si hago esto:
var conexion:NetConnection = new NetConnection();
conexion.connect(null);
var stream:NetStream = new NetStream(conexion);
mi_video.attachVideo(stream);
stream.play(video_tmp);
stream.setBufferTime(5);
stream.onMetaData = function(infoObject:Object) {
//****************desde aquí****************//
metaInfoVideo = infoObject;
duracion_total = metaInfoVideo["duration"];
for (var propName:String in infoObject) {
trace(propName + " = " + infoObject[propName]);
}
times = infoObject.keyframes.times;
positions = infoObject.keyframes.filepositions;
trace("times: "+times);
trace("positions: "+positions);
//******hasta aquí, sólo es información******//
stream.seek(200);
};
no funciona el stream.seek... el he probado con un vídeo flv normal y con otro pasándolo a través del flvtool2 para insertarle metadata y nada de nada... si el vídeo es corto y de baja calidad sí parece hacerlo, pero sólo es una ilusión... lo que pasa es que lo carga rápidamente y entonces si que salta al punto especificado... el problema es que los vídeos con los que tengo que trabajar no sólo son en una calidad bastante alta sino que también son muy largos (30-60 min. o más)...
Después de mucho mirar parece ser que para hacerlo necesito que el servidor dónde estén alojados los vídeos sea streaming... opciones: pagar un servidor streaming (imposible por el precio) configurar red5 en el servidor dedicado que tengo (no lo veo claro... en temas de servidores ando pez)...
Por lo cual... ¿Hay alguna manera de hacer seek a un punto no descargado de un vídeo sin usar un servidor streaming?
goliatone
Hola,
Puedes hacer un pseudo streaming con php.
Basicamente lo que haces es:
Desde flash analizas cual es el keyframe mas cercano el tiempo deseado en tu flv.
Envias una peticion a un script en php pasandole el punto en el video que te interesa y el script crea un nuevo flv a partir del keyframe, perdiendo todo lo que hay antes de ese punto ( no modifica el archivo original...)
Es el sistema que utilizaba youtube.
Si el ingles no es un problema, busca en google: flv php streaming.
En cualquier caso, mirate esta web: http://xmoov.com/xmoov-php/source/
Ahi tienes el codigo en php que necesitas.
saludos,
goliatone
dagi3d
por poder parece que se puede: http://www.flashcomguru.com/index.cfm/2005/11/2/Streaming-flv-video-via-PHP-take-two
pero por lo que he visto, lo que hace es leer el fichero desde php a partir de la posición calculada previamente, por lo que mi recomendación sería que instalaras algún módulo para tu servidor web que te permita hacer streaming:
http://h264.code-shop.com/trac
el servidor nginx lleva un módulo de serie para hacer streaming de flv(http://nginx.net/) y cherooke también incluyó hace poco uno para hacerlo: http://www.alobbs.com/downloads/streaming/flv.html