2010-10-20 20 views
44

¿Cómo se puede cambiar el src de una etiqueta de video HTML5 utilizando jQuery?¿Cómo se puede cambiar el video con jQuery?

Tengo este código HTML:

<div id="divVideo"> 
    <video controls> 
    <source src="test1.mp4" type="video/mp4" /> 
    </video> 
</div> 

Esto no funciona:

var videoFile = 'test2.mp4'; 
$('#divVideo video source').attr('src', videoFile); 

Cambia el src si lo examinan el uso de Firebug, pero en realidad no cambia el vídeo que se está reproduciendo.

He leído sobre .pause() y .load(), pero no estoy seguro de cómo usarlos.

Respuesta

80

Pruebe $("#divVideo video")[0].load(); después de haber cambiado el atributo src.

+0

Gracias. Funciona bien. :) –

-1

La manera más fácil es usar la reproducción automática.

<video autoplay></video> 

Cuando cambie src a través de javascript, no necesita mencionar load().

11

yo preferiría hacerlo como este

<video id="v1" width="320" height="240" controls="controls"> 

</video> 

y luego usar

$("#v1").html('<source src="test1.mp4" type="video/mp4"></source>'); 
0

Lo que funcionó para mí estaba emitiendo el 'juego' de comandos después de cambiar la fuente. extraño que no se puede utilizar 'play()' a través de una instancia de jQuery por lo que sólo utiliza GetElementByID de la siguiente manera:

HTML

<video id="videoplayer" width="480" height="360"></video> 

JavaScript

$("#videoplayer").html('<source src="'+strSRC+'" type="'+strTYPE+'"></source>'); 
document.getElementById("videoplayer").play(); 
4

He intentado usar la etiqueta de reproducción automática , y .load() .play() todavía necesita ser llamado al menos en cromo (tal vez es mi configuración).

la forma navegadores más sencilla de hacer esto con jQuery usando tu ejemplo sería

var $video = $('#divVideo video'), 
videoSrc = $('source', $video).attr('src', videoFile); 
$video[0].load(); 
$video[0].play(); 

Sin embargo, la forma en que te sugiero que lo hace (por legibilidad y simplicidad) es

var video = $('#divVideo video')[0]; 
video.src = videoFile; 
video.load(); 
video.play(); 

Lectura adicional http://msdn.microsoft.com/en-us/library/ie/hh924823(v=vs.85).aspx#ManagingPlaybackInJavascript

Información adicional: .load() solo funciona si hay un elemento de fuente html dentro del video eleme nt (es decir<source src="demo.mp4" type="video/mp4" />)

La forma no sería jQuery:

HTML

<div id="divVideo"> 
    <video id="videoID" controls> 
    <source src="test1.mp4" type="video/mp4" /> 
    </video> 
</div> 

JS

var video = document.getelementbyid('videoID'); 
video.src = videoFile; 
video.load(); 
video.play(); 
+0

Aparece un error de javascript que dice que la carga no es compatible. IE 11. – Wade

+0

He añadido algo de información adicional con respecto a su error Wade. – vipero07

1
 $(document).ready(function() {  
    setTimeout(function() { 
        $(".imgthumbnew").click(function() { 
         $("#divVideo video").attr({ 
          "src": $(this).data("item"), 
          "autoplay": "autoplay",   
         }) 
        }) 
       }, 2000); 
      } 
     }); 

here ".imgthumbnew" is the class of images which are thumbs of videos, an extra attribute is given to them which have video url. u can change according to your convenient. 
i would suggest you to give an ID to ur Video tag it would be easy to handle. 
-1

Esto está trabajando en Flowplayer 6.0.2.

<script> 
    flowplayer().load({ 
     sources: [ 
      { type: "video/mp4", src: variable } 
      ] 
     }); 
</script> 

donde variable de es un valor variable de Javascript/jQuery, La etiqueta de vídeo debe ser algo tan

<div class="flowplayer"> 
    <video> 
     <source type="video/mp4" src="" class="videomp4"> 
    </video> 
</div> 

creo que sirve a nadie.

Cuestiones relacionadas