2010-10-20 14 views
44

Come si modifica l'src di un tag video HTML5 utilizzando jQuery?Come si cambia il video src usando jQuery?

ho ottenuto questo HTML:

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

Questo non funziona:

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

Cambia lo src se ho ispezionare utilizzando Firebug, ma in realtà non cambia il video in riproduzione.

Ho letto su .pause() e .load(), ma non sono sicuro di come usarli.

risposta

80

Provare $("#divVideo video")[0].load(); dopo aver modificato l'attributo src.

+0

Grazie. Funziona bene. :) –

-1

Il modo più semplice è utilizzare l'autoplay.

<video autoplay></video> 

Quando si cambia src tramite javascript non è necessario menzionare load().

11

avrei preferito farlo in questo modo

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

</video> 

e quindi utilizzare

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

Quello che ha funzionato per me stava dando il 'gioco' di comando dopo aver cambiato la fonte. Stranamente non è possibile utilizzare 'play()' attraverso un'istanza jQuery quindi basta usare getElementByID come segue:

HTML

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

JAVASCRIPT

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

Ho provato con il tag autoplay e .load() .play() deve ancora essere chiamato almeno in chrome (forse le mie impostazioni).

il più semplice modo cross browser per fare questo con jQuery utilizzando il tuo esempio sarebbe

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

Tuttavia il modo in cui io suggerirei di farlo (per la leggibilità e di semplicità) è

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

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

Ulteriori informazioni: .load() funziona solo se è presente un elemento di codice html all'interno del video eleme nt (cioè<source src="demo.mp4" type="video/mp4" />)

Il modo non jquery sarebbe:

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

Viene visualizzato un errore javascript che indica che il caricamento non è supportato. IE 11. – Wade

+0

Ho aggiunto alcune informazioni aggiuntive in merito al tuo errore 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

Questo sta lavorando su Flowplayer 6.0.2.

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

dove variabile è un valore variabile JavaScript/jQuery, Il tag video dovrebbe essere qualcosa di questo

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

Speranza che aiuta nessuno.

Problemi correlati