2010-12-31 11 views
8

Quiero poder reproducir video de una hora específica usando la etiqueta de video HTML5 (y actualmente solo tengo que preocuparme por Chrome). Esto es posible estableciendo la propiedad currentTime de un elemento de video. Eso funciona bien en Chrome con un video de html5rocks.com, pero se ignora cuando el mismo archivo se carga desde mi propio servidor web local.Etiqueta de video HTML5 en Chrome: ¿Por qué se ignora el tiempo actual cuando se descarga video de mi servidor web?

Usando el código de ejemplo de http://playground.html5rocks.com/#video_tag, he llegado a la siguiente HTML:

<!DOCTYPE html> 
<html> 
<body> 
<video id="video1" width="320" height="240" volume=".7" controls preload=true autobuffer> 
    <source src="http://playground.html5rocks.com/samples/html5_misc/chrome_japan.webm" type='video/webm; codecs="vp8, vorbis"'/> 
    </video> 
<input type=button onclick="play()" value="play"> 
<input type=button onclick="setTime()" value="setTime"> 
<input type=button onclick="pause()" value="pause"> 
<script> 
    var play=function() { 
     document.getElementById("video1").play(); 
    } 
    var setTime=function() { 
     document.getElementById("video1").currentTime=2; 
    } 
    var pause=function() { 
     document.getElementById("video1").pause(); 
    } 
</script> 
</body> 
</html> 

El uso de Chrome, si

  1. Espere a que el vídeo a descargar para un poco (hasta que el la barra de progreso es aproximadamente 10% en)
  2. Presione setTime - usted debería notar el salto de tiempo a 2 segundos
  3. juego de la prensa

... el video comenzará a las 2 segundos.

Pero si descargo el archivo WebM en el src fuente a mi servidor web local y el cambio src señalar localmente:

<source src="chrome_japan.webm" type='video/webm; codecs="vp8, vorbis"'/> 

... luego se ha ignorado la configuración de currentTime. No se muestran errores en la consola de herramientas del desarrollador.

Ahora, mi servidor web está publicando esto con tipo de mimo "video/webm", pero se servirá como cualquier archivo anterior, no se transmitirá.

¿Necesito un servidor web que se transmita de alguna manera específica? ¿Qué más podría ser la culpa aquí?

Nota: El servidor web es una plataforma patentada y no tendrá la misma configuración o controles exactos que cabría esperar de Tomcat u otro servidor web común, aunque puede haber otras formas de lograr el mismo efecto.

+0

Si es posible, capture los paquetes HTTP de dos casos y busque las diferencias. – 9dan

Respuesta

12

Asegúrate de que tu servidor web pueda servir el documento utilizando rangos de bytes. Google Chrome requiere que esto funcione. Sin él, la búsqueda se desactivará y establecer currentTime no tendrá ningún efecto.

Para probar si el servidor Web hace esto, utilice el siguiente comando:

curl --dump-header - -r0-0 http://theurl 

El estado de respuesta debe leer 206 Partial Content y usted debe recibir sólo el primer byte del recurso en lugar de la totalidad del recurso.

-Phil

+0

No podré probar esto por un tiempo, sin embargo, sé que el servidor web _no_ es capaz de servir el documento utilizando rangos de bytes. gracias por la sugerencia ... – jlarson

+0

"Google Chrome requiere que esto funcione. Sin él, la búsqueda se desactivará y la configuración de CurrentTime no tendrá ningún efecto". ¡GRACIAS! Esto realmente me molestó. –

+2

, la falla de Chromium correspondiente no se ha querido en http://code.google.com/p/chromium/issues/detail?id = 121765 – user7610